Transforming Telegram into a seamless blockchain hub with our Account Abstraction Magic SDK — making crypto asset management effortless, secure, and gas-free for everyone
- Features
- Screenshots
- Installation
- Usage
- API Endpoints
- Folder Structure
- Technologies Used
- Contributing
- License
- Contact
- 💼 Custodial Wallet: Created and securely stored in Azure Key Vault.
- 🔑 Smart Accounts: Auto-creation using ERC-4337 account abstraction.
- ⚡️ Mint NFTs: Easily mint NFTs with a single tap.
- 💸 No Gas Fees: Gasless transactions facilitated by advanced transaction management.
- 🏦 Token and NFT Management: Simple and secure transfers and swaps of tokens and NFTs.
- 🌐 View NFTs: NFTs displayed directly in the app wallet.
- 🔄 Built-in Token Swap: Powered by Uniswap for seamless token exchanges.
- 📲 Developer Friendly SDK: Facilitates further integration and development.
-
Clone the repository:
git clone https://github.com/andreykobal/telegram-mini-app-aa.git
-
Navigate to the project directory:
cd telegram-mini-app-aa -
Install dependencies for the frontend:
npm install
-
Install dependencies for the backend:
cd ../backend npm install
-
Start the backend server:
cd backend npm start -
Start the frontend application:
cd .. npm start -
Open your browser and navigate to
http://localhost:3000
- Description: Authenticate a user using Telegram init data.
- Request Body:
{ "initData": "string" }
- Description: Mint a new NFT.
- Request Body:
{ "initData": "string" }
- Description: Transfer an NFT to another address.
- Request Body:
{ "initData": "string", "tokenId": "string", "toAddress": "string" }
- Description: Retrieve NFTs owned by the authenticated user.
- Request Body:
{ "initData": "string" }
- Description: Send ETH to another address.
- Request Body:
{ "initData": "string", "toAddress": "string", "amount": "string" }
- Description: Retrieve balances of the authenticated user's wallet.
- Request Body:
{ "initData": "string" }
- Description: Fetch the swap rate from USDT to USDC.
- Request Body:
{ "amount": "string" }
- Description: Fetch the swap rate from USDC to USDT.
- Request Body:
{ "amount": "string" }
- Description: Fetch the swap rate from USDT to WETH.
- Request Body:
{ "amount": "string" }
- Description: Fetch the swap rate from WETH to USDT.
- Request Body:
{ "amount": "string" }
- Description: Fetch the swap rate from USDC to WETH.
- Request Body:
{ "amount": "string" }
- Description: Fetch the swap rate from WETH to USDC.
- Request Body:
{ "amount": "string" }
- Description: Swap USDT to USDC.
- Request Body:
{ "initData": "string", "amount": "string" }
- Description: Swap USDC to USDT.
- Request Body:
{ "initData": "string", "amount": "string" }
- Description: Swap USDT to WETH.
- Request Body:
{ "initData": "string", "amount": "string" }
- Description: Swap WETH to USDT.
- Request Body:
{ "initData": "string", "amount": "string" }
- Description: Swap USDC to WETH.
- Request Body:
{ "initData": "string", "amount": "string" }
- Description: Swap WETH to USDC.
- Request Body:
{ "initData": "string", "amount": "string" }
- Description: Handle Telegram webhook events.
.
├── .gitignore
├── backend
│ ├── .gitignore
│ ├── index.js
│ ├── metadata.json
│ ├── models
│ │ ├── MetadataIndex.js
│ │ └── User.js
│ ├── nft.js
│ ├── package-lock.json
│ ├── package.json
│ ├── swap.js
│ ├── test-swap-copy.js
│ ├── test-swap.js
│ ├── utils
│ │ ├── delete-all-users.js
│ │ ├── delete-user.js
│ │ └── get-all-users.js
│ ├── webhook.js
│ └── WETH9.json
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
├── README.md
└── src
├── App.css
├── App.js
├── App.test.js
├── balance.js
├── Buy.js
├── client.js
├── CustomSelect.css
├── CustomSelect.js
├── EthToUsdConverter.js
├── Home.js
├── icons
├── index.css
├── index.js
├── logo.svg
├── reportWebVitals.js
├── setupTests.js
└── Swap.js
- Frontend: React
- Backend: Node.js, Express
- Database: MongoDB
- Blockchain: Hardhat, Viem, Biconomy, Base
- Hosting: Azure, Vercel
Contributions are welcome! Please read the contributing guidelines first.
This project is licensed under the MIT License - see the LICENSE file for details.

