A full-stack web application for managing Solana transactions with secure authentication and distributed private key management using Threshold Signature Scheme (TSS).
- 🔐 Secure authentication with JWT
- 💰 Send SOL transactions on Solana devnet
- 🛡️ Distributed private key management (no single point of compromise)
- 🔗 Threshold Signature Scheme (TSS) integration
- 🎨 Modern React UI with Tailwind CSS
-
Clone the repository:
git clone <repository-url> cd shardo
-
Install dependencies for all services:
# Install dependencies for each service cd server && npm install && cd .. cd mpc-server-1 && npm install && cd .. cd mpc-server-2 && npm install && cd .. cd client && npm install && cd ..
-
Start MongoDB locally:
# Make sure MongoDB is running on your system # Default connection: mongodb://localhost:27017
-
Start all services in separate terminals:
Terminal 1 - Main Server:
cd server npm run devTerminal 2 - MPC Server 1:
cd mpc-server-1 npm run devTerminal 3 - MPC Server 2:
cd mpc-server-2 npm run devTerminal 4 - Client:
cd client npm run dev -
Access the application:
- Frontend: http://localhost:5173
- Main Server: http://localhost:3000
- MPC Server 1: http://localhost:4000
- MPC Server 2: http://localhost:6000
If you prefer to use Docker (when issues are resolved), see DOCKER_SETUP.md for instructions.
- Register a new account at
/signup - Sign in with your credentials at
/signin - Access the dashboard at
/dashboard - Enter recipient address and amount to send SOL
- Confirm and sign the transaction using distributed MPC
shardo/
├── client/ # React frontend
├── server/ # Main backend API
├── mpc-server-1/ # First MPC server
├── mpc-server-2/ # Second MPC server
├── utilities/ # TSS utilities and types
└── docker-compose.yml
For local development, you may need to set these environment variables (or they will use defaults):
PORT: 3000 (default)MPC_SERVER_1_URL: http://localhost:4000MPC_SERVER_2_URL: http://localhost:6000MONGODB_URI: mongodb://localhost:27017/cloudappJWT_SECRET: "123456"
PORT: 4000 (default)MONGODB_URI: mongodb://localhost:27017/mpc1JWT_SECRET: "123456"
PORT: 6000 (default)MONGODB_URI: mongodb://localhost:27017/mpc2JWT_SECRET: "123456"
POST /api/v1/signup- Register new userPOST /api/v1/signin- User loginPOST /api/v1/txn/sign- Sign and send transaction (TSS-based)