Documentation β’ API Reference β’ Getting Started β’ Contributing
HelpInMinutes is a microservices-based on-demand service platform connecting customers with local helpers for various tasks including cleaning, delivery, repairs, and more. The platform features real-time matching, secure payments, and seamless communication.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Load Balancer (Nginx) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Identity β β Task β β Matching β
β Service β β Service β β Service β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β β β
βββββββββββββββββββββΌββββββββββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Payment β β Real-time β β Admin β
β Service β β Service β β Portal β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β
βββββββββββ΄ββββββββββ
βΌ βΌ
βββββββββββββ βββββββββββββ
β Redis β βPostgreSQL β
β Cache β β Database β
βββββββββββββ βββββββββββββ
β
βΌ
βββββββββββββ
β RabbitMQ β (Event Bus)
βββββββββββββ
- User Authentication: JWT-based authentication with refresh tokens
- Real-time Matching: H3-based geospatial matching algorithm
- Secure Payments: Razorpay integration with ledger tracking
- Live Updates: Socket.io for real-time task status updates
- Admin Dashboard: Complete system monitoring and management
- Mobile Apps: React Native for iOS and Android
| Service | Port | Description |
|---|---|---|
| Identity Service | 8081 | Authentication and user management |
| Task Service | 8082 | Task lifecycle management |
| Matching Service | 8083 | Helper matching and dispatch |
| Payment Service | 8084 | Payment processing and ledger |
| Real-time Service | 3001 | WebSocket handling |
| Admin Portal | 3000 | Admin dashboard |
| Mobile App | - | React Native mobile app |
- Java 17 with Spring Boot 3.2
- PostgreSQL for persistent storage
- Redis for caching and session management
- RabbitMQ for event-driven communication
- JWT for authentication
- React Native for mobile apps
- Next.js for admin portal
- Redux Toolkit for state management
- Socket.io for real-time updates
- Docker for containerization
- Kubernetes for orchestration
- Grafana/Prometheus for monitoring
- JaCoCo for code coverage
helpinminutes/
βββ services/
β βββ identity-service/ # Authentication service
β βββ task-service/ # Task management
β βββ matching-service/ # Matching algorithm
β βββ payment-service/ # Payment processing
β βββ realtime-service/ # WebSocket handling
βββ admin-portal/ # Admin dashboard
βββ mobile-app/ # React Native app
βββ infrastructure/
β βββ docker/ # Docker configurations
β βββ k8s/ # Kubernetes manifests
β βββ monitoring/ # Monitoring setup
βββ docs/ # Documentation
βββ scripts/ # Utility scripts
- Docker & Docker Compose
- Java 17+
- Node.js 18+
- Maven or Gradle
- Clone the repository
git clone https://github.com/your-org/HelpInMinutes.git
cd HelpInMinutes- Start infrastructure services
cd infrastructure/docker
docker-compose up -d- Configure environment variables
cp .env.example .env
# Edit .env with your configurations- Build and run services
# Backend services
cd services/identity-service
mvn spring-boot:run
# Repeat for other services...
# Frontend
cd admin-portal
npm install
npm run dev
cd mobile-app
npm install
npm start# Run all tests
./scripts/run-tests.sh
# Run only integration tests
./scripts/run-integration-tests.sh
# Generate coverage report
./scripts/generate-coverage.sh- Backend: JUnit 5 + Mockito
- Frontend: Jest + React Testing Library
- Testcontainers for PostgreSQL, Redis, RabbitMQ
- API integration tests with RestAssured
- JMeter/Gatling for load testing
- Database query optimization benchmarks
- Backend: 80%+ line coverage
- Frontend: 70%+ component coverage
Access monitoring dashboards:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3001
- Logs: http://localhost:3100 (Loki)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: docs.helpinminutes.com
- Issues: GitHub Issues
- Email: support@helpinminutes.com
Made with β€οΈ by the HelpInMinutes Team
