π Work in Progress
Ayuda is a modern digital wallet that enables users to securely store, transfer, and manage both FIAT and crypto assets (Solana tokens). The platform also provides users with virtual and physical cards, ensuring a seamless transaction experience.
- π° E-wallet for FIAT and Solana tokens
- π Send & Receive Money within the platform
- π¦ Deposit & Withdraw Funds via bank transfers & crypto wallets
- π³ Virtual & Physical Cards for online/offline payments
- β‘ Secure Authentication using JWT & Bcrypt for password hashing
- π Role-Based Access Control (RBAC) for secure transactions
- π In-App & Email Notifications
- π Microservices Architecture for scalability
| Service | Technologies | Description |
|---|---|---|
| API Gateway | Java, Spring Cloud Gateway | Routes requests, authentication, load balancing |
| Service Discovery | Spring Cloud Eureka | Registers and discovers microservices |
| Config Server | Spring Cloud Config | Manages centralized configurations |
| User Service | Java, Spring Boot, PostgreSQL, Redis | Manages user data & profiles |
| Authentication Service | Java, Spring Boot, Bcrypt, JWT | Handles authentication & authorization |
| Wallet Service | Java, Spring Boot, PostgreSQL, RabbitMQ | Manages wallets, transactions & balances |
| Transaction Service | Java, Spring Boot, PostgreSQL | Handles all transactions (FIAT & Crypto) |
| Payment Service | Java, Spring Boot | Processes payments (bank, crypto, card funding) |
| Card Service | Java, Spring Boot | Manages virtual & physical cards |
| Web3 Service | Rust, Solana SDK | Manages crypto transactions (Solana tokens) |
| Notification Service | Java, Spring Boot, RabbitMQ, Firebase | Sends push/email notifications |
β - Completed | π§ - In Progress | β³ - Pending
- Route requests to appropriate microservices
- Implement authentication & authorization (JWT/OAuth2)
- Load balancing with service discovery
- Logging and monitoring
- Register and discover microservices
- Enable dynamic scaling
- Centralized configuration management
- Secure storage for environment variables
- Support dynamic configuration updates
- User registration
- Profile management
- Role-based access control
- Create, update, delete wallets
- Manage both FIAT and Solana wallets
- Track wallet balances & transactions
- Fund and withdraw money
- Peer-to-peer transactions (Internal users)
- Withdraw funds to external bank accounts or crypto wallets
- Transaction history & reconciliation
- Process FIAT payments
- Handle refunds and chargebacks
- Process payment webhooks
- Payment authorization and settlement
- Create virtual cards linked to wallets
- Issue physical cards
- Fund cards from wallets
- Process transactions using cards
- Freeze, unfreeze, and delete cards
- Secure PIN management
- Generate Solana wallet addresses
- Process token purchases using FIAT
- Synchronize Solana balances with Wallet Service
- Handle token transfers between users
- Send email notifications
- Send in-app notifications
- Account creation
- Login
- JWT token issuing
Ensure you have the following installed:
- JDK 17+
- PostgreSQL
- Redis
- RabbitMQ
- Docker (optional)
git clone https://github.com/your-username/ayuda.git
cd ayudaEach microservice requires environment variables to be properly configured. The recommended approach is to use environment variables rather than .env files in production.
Set environment variables for your services:
export CLOUDINARY_CLOUD_NAME="your-cloudinary-cloud-name"
export CLOUDINARY_API_KEY="your-cloudinary-api-key"
export CLOUDINARY_API_SECRET="your-cloudinary-api-secret"
export JWT_SECRET="your-secret-key"Alternatively, if using .env for development, create a .env file inside each service:
CLOUDINARY_CLOUD_NAME=your-cloudinary-cloud-name
CLOUDINARY_API_KEY=your-cloudinary-api-key
CLOUDINARY_API_SECRET=your-cloudinary-api-secret
JWT_SECRET=your-secret-key
Each microservice can be run separately.
cd user-service
mvn spring-boot:runcd authentication-service
mvn spring-boot:runcd wallet-service
mvn spring-boot:runTo run all services together, use Docker Compose:
docker-compose up -d- Synchronous Communication: Services communicate via Feign Clients (HTTP REST).
- Asynchronous Communication: Services use RabbitMQ for event-driven interactions.
- JWT-Based Authentication
- Bcrypt Password Hashing
- Role-Based Access Control (RBAC)
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature-branch) - Commit your changes (
git commit -m "Added feature") - Push to the branch (
git push origin feature-branch) - Open a Pull Request π
For any issues, feel free to open a GitHub Issue or reach out:
π© Email: boluadetifa@gmail.com
π Website: boluwatife.dev
This project is licensed under the MIT License.