A comprehensive savings management system with secure authentication, device verification, and real-time transaction tracking.
- Secure Authentication: SHA-512 password hashing with JWT tokens
- Device Verification: Admin-controlled device access
- Savings Management: Deposit, withdraw, balance tracking
- Transaction History: Complete audit trail with pagination
- Security: Helmet, rate limiting, CORS, input validation
- API Documentation: Swagger/OpenAPI at
/api-docs - Testing: Comprehensive Jest test suite
- Docker Support: Full containerization
- Mobile App: Cross-platform iOS/Android/Web
- State Management: Redux Toolkit with persistent storage
- Secure Storage: Expo SecureStore for tokens
- Modern UI: Clean, intuitive interface
- Real-time Updates: Live balance and transaction updates
- Navigation: Bottom tabs with stack navigation
credit-jambo-client/
├── backend/ # Node.js API Server
│ ├── src/
│ │ ├── controllers/ # API endpoints
│ │ ├── models/ # Database models
│ │ ├── middlewares/ # Authentication & security
│ │ ├── utils/ # Helper functions
│ │ └── dtos/ # Data transfer objects
│ ├── tests/ # Jest test suite
│ ├── Dockerfile # Container configuration
│ └── README.md # Backend documentation
├── frontend/ # React Native App
│ ├── src/
│ │ ├── pages/ # Screen components
│ │ ├── navigation/ # App navigation
│ │ ├── store/ # Redux store
│ │ └── services/ # API integration
│ ├── Dockerfile # Container configuration
│ └── README.md # Frontend documentation
├── docker-compose.yml # Full stack orchestration
└── README.md # This file
- Node.js (v16+)
- PostgreSQL (v12+)
- Docker & Docker Compose (optional)
# Clone the repository
git clone <repository-url>
cd credit-jambo-client
# Start the entire stack
docker-compose up -d
# Backend API: http://localhost:4000
# API Docs: http://localhost:4000/api-docs
# Frontend: http://localhost:3000# Backend
cd backend
npm install
cp .env.example .env
# Update .env with your database credentials
npm run dev
# Frontend (in another terminal)
cd frontend
npm install
cp .env.example .env
npm start- SHA-512 Password Hashing: Secure password storage
- JWT Authentication: Stateless token-based auth
- Device Verification: Admin-controlled access
- Rate Limiting: API abuse prevention
- Input Validation: Comprehensive data sanitization
- CORS Protection: Cross-origin request security
- Secure Headers: Helmet.js security middleware
- Registration: User creates account with device ID
- Device Verification: Admin verifies the device
- Login: User can access app after verification
- Savings Management: Deposit, withdraw, view balance
- Transaction History: Complete audit trail
# Backend tests
cd backend
npm test
npm run test:coverage
# Frontend tests
cd frontend
npm testPOST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get user profilePOST /api/auth/logout- User logout
POST /api/savings/deposit- Deposit moneyPOST /api/savings/withdraw- Withdraw moneyGET /api/savings/balance- Get current balanceGET /api/savings/history- Get transaction history
# Build and start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild services
docker-compose up --build
# Run tests in container
docker-compose exec backend npm testPORT=4000
NODE_ENV=development
DB_HOST=localhost
DB_PORT=5432
DB_NAME=credit_jambo_client
DB_USER=your_username
DB_PASSWORD=your_password
JWT_SECRET=your-secret-key
CORS_ORIGIN=http://localhost:3000EXPO_PUBLIC_API_URL=http://localhost:4000/api
EXPO_PUBLIC_APP_NAME=Credit JamboBuilt with ❤️ by Iris NGABO