NoQueue is an enterprise-ready, modular university fee payment system built with modern technologies. It provides a comprehensive solution for managing student fees, processing payments through multiple PSPs, blockchain logging, loan management, and maintaining financial records with real-time updates and robust security.
- Multi-University Support: Complete university and student lifecycle management
- Flexible Fee Management: Academic year, semester, and program-based fee structures
- Multi-PSP Payment Processing: ClickPesa integration with modular adapter pattern
- Real-time Dashboard: WebSocket-powered live updates and notifications
- Comprehensive Admin Interface: Analytics, reporting, and system management
- Automated Receipt Generation: PDF receipts with QR codes and verification
- Complete Audit Trail: System-wide activity logging and compliance
- Loan Management: Student loan requests, approvals, and tracking
- Blockchain Integration: Payment transparency and immutable logging
- Microservices Architecture: Modular, scalable, and maintainable design
- Async Task Processing: Celery with Redis for background operations
- Real-time Communication: WebSocket support for live dashboard updates
- Enterprise Security: Token auth, CORS, rate limiting, input validation
- Full Test Coverage: Unit, integration, and end-to-end testing
- Container-Ready: Docker Compose for development and production
- API-First Design: RESTful APIs with comprehensive documentation
- Multi-tenant Ready: University-based data isolation
- Django 4.2.7: Web framework with Django REST Framework 3.14.0
- PostgreSQL 15: Primary database with UUID primary keys and advanced features
- Redis 7: Caching, session storage, and message broker for Celery
- Celery 5.3.4: Distributed task queue for async processing
- Django Channels: WebSocket support for real-time features
- Web3.py: Ethereum blockchain integration
- Cryptography: Secure payment processing and data encryption
- React 18.2.0: Modern UI library with hooks and concurrent features
- Redux Toolkit: State management with RTK Query for API calls
- Tailwind CSS 3.3.6: Utility-first CSS framework with custom components
- React Router 6.8.1: Client-side routing with nested routes
- Axios 1.6.2: HTTP client with interceptors and request/response handling
- Socket.IO Client: Real-time WebSocket communication
- Heroicons: Beautiful SVG icons
- Docker & Docker Compose: Full containerization for all services
- Nginx: Reverse proxy, load balancing, and static file serving
- PostgreSQL: Persistent data storage with automated backups
- Redis: In-memory data structure store for caching and queuing
- Payment Service Providers: ClickPesa (with extensible adapter pattern)
- Student Information Systems: Mock SIS adapter (extensible)
- Blockchain Networks: Ethereum integration for payment logging
- Loan Providers: Mock loan adapter (extensible for real providers)
- Docker 20.10+
- Docker Compose 2.0+
- Git
git clone <repository-url>
cd NoQueue# Copy environment template
cp .env.example .env
# Edit environment variables (see Configuration section)
nano .env# Build and start all services
sudo docker compose up -d
# Verify all services are running
sudo docker compose psThe system automatically:
- Runs all database migrations
- Creates default admin user (
admin/admin123) - Sets up required database tables and relationships
- Configures proper CORS and security settings
- Frontend: http://localhost:3000 or http://0.0.0.0:3000
- Backend API: http://localhost:8001/api/ or http://0.0.0.0:8001/api/
- Django Admin: http://localhost:8001/admin/ or http://0.0.0.0:8001/admin/
- Nginx Proxy: http://localhost:80
- Admin:
admin/admin123 - Staff:
staff1/staff123 - Student:
student1/student123
Create a .env file based on .env.example:
# Django Settings
DEBUG=1
SECRET_KEY=your-secret-key-change-in-production
ALLOWED_HOSTS=localhost,127.0.0.1,backend,0.0.0.0,0.0.0.0:8001
# Database (PostgreSQL)
DATABASE_URL=postgresql://noqueue_user:noqueue_password@db:5432/noqueue
# Redis & Celery
REDIS_URL=redis://redis:6379/0
CELERY_BROKER_URL=redis://redis:6379/0
CELERY_RESULT_BACKEND=redis://redis:6379/0
# ClickPesa Integration
CLICKPESA_CLIENT_ID=${CLICKPESA_CLIENT_ID}
CLICKPESA_API_KEY=${CLICKPESA_API_KEY}
CLICKPESA_BASE_URL=https://api.clickpesa.com
# Frontend URLs
REACT_APP_API_URL=http://localhost:8001/api
REACT_APP_WS_URL=ws://localhost:8001/ws- Register at ClickPesa
- Obtain your Client ID and API Key
- Configure webhook URL:
http://your-domain/api/payments/webhook/clickpesa/ - Update environment variables
# Enter backend container
sudo docker compose exec backend bash
# Run migrations
sudo docker compose exec backend python manage.py migrate
# Create migrations
sudo docker compose exec backend python manage.py makemigrations
# Run tests
sudo docker compose exec backend python manage.py test
# Or with pytest
sudo docker compose exec backend pytest
# Django shell
sudo docker compose exec backend python manage.py shell
# Collect static files
sudo docker compose exec backend python manage.py collectstatic
# View logs
sudo docker compose logs backend --tail=50
sudo docker compose logs celery_worker --tail=50# Enter frontend container
sudo docker compose exec frontend bash
# Install dependencies
npm install
# Run development server (inside container)
npm start
# Run tests
npm test
# Build for production
npm run build
# View frontend logs
sudo docker compose logs frontend --tail=50# Backend tests
sudo docker compose exec backend pytest
sudo docker compose exec backend python manage.py test
# Frontend tests
sudo docker compose exec frontend npm test
# Coverage reports
sudo docker compose exec backend pytest --cov=. --cov-report=html
# Test specific modules
sudo docker compose exec backend python manage.py test core
sudo docker compose exec backend python manage.py test payments
sudo docker compose exec backend python manage.py test studentsAll API endpoints require authentication using Token-based authentication:
# Login to get token
curl -X POST http://localhost:8000/api/auth/login/ \
-H "Content-Type: application/json" \
-d '{"username": "your_username", "password": "your_password"}'
# Use token in subsequent requests
curl -X GET http://localhost:8000/api/students/students/ \
-H "Authorization: Token your_token_here"POST /api/auth/login/- User loginPOST /api/auth/logout/- User logoutGET /api/auth/user/- Get current user
GET /api/students/students/- List studentsGET /api/students/students/{id}/- Get student detailsGET /api/students/students/{id}/fees/- Get student feesPOST /api/students/students/- Create student
GET /api/payments/payments/- List paymentsPOST /api/payments/payments/initiate/- Initiate paymentGET /api/payments/payments/{id}/status/- Check payment statusPOST /api/payments/payments/{id}/verify/- Verify payment
GET /api/dashboards/student/overview/- Student dashboard dataGET /api/dashboards/admin/overview/- Admin dashboard dataGET /api/dashboards/admin/recent-payments/- Recent payments
- Prepare Environment
# Set production environment variables
export DEBUG=False
export ALLOWED_HOSTS=your-domain.com
export DATABASE_URL=postgresql://user:pass@prod-db:5432/noqueue- Build Production Images
# Build optimized images
docker-compose -f docker-compose.prod.yml build
# Deploy
docker-compose -f docker-compose.prod.yml up -d- Initialize Production Database
docker-compose -f docker-compose.prod.yml exec backend python manage.py migrate
docker-compose -f docker-compose.prod.yml exec backend python manage.py collectstatic --noinput# Apply Kubernetes manifests
kubectl apply -f k8s/
# Check deployment status
kubectl get pods -n noqueue- Token-based authentication
- CORS protection
- SQL injection prevention
- XSS protection
- CSRF protection
- Rate limiting
- Input validation
- Audit logging
- Use strong SECRET_KEY in production
- Enable HTTPS in production
- Regularly update dependencies
- Monitor audit logs
- Implement proper backup strategies
- Use environment variables for sensitive data
GET /api/core/health/- System health check- Monitor Celery workers:
celery -A noqueue inspect active - Database connectivity check included
- Application logs:
/app/logs/ - Celery logs: Monitor worker output
- Nginx logs:
/var/log/nginx/
- Payment success rates
- Response times
- Error rates
- User activity
backend/tests/
βββ test_models.py # Model tests
βββ test_views.py # API endpoint tests
βββ test_adapters.py # Adapter integration tests
βββ test_tasks.py # Celery task tests
βββ test_integration.py # End-to-end tests
frontend/src/tests/
βββ components/ # Component tests
βββ store/ # Redux store tests
βββ integration/ # Integration tests
# Run specific test file
docker-compose exec backend pytest tests/test_models.py
# Run with coverage
docker-compose exec backend pytest --cov=payments tests/test_models.py
# Run frontend tests
docker-compose exec frontend npm test -- --coverage- ClickPesa: Mobile money and card payments
- Extensible: Add new PSPs via adapter pattern
- Mock SIS adapter included
- Extensible for real SIS integration
- Mock blockchain adapter for transaction logging
- Ready for real blockchain integration
- Mock loan adapter for student loans
- Extensible for real loan provider integration
Database Connection Issues
# Check database container
docker-compose logs postgres
# Reset database
docker-compose down -v
docker-compose up --buildCelery Worker Issues
# Check worker status
docker-compose exec backend celery -A noqueue inspect active
# Restart workers
docker-compose restart celery-workerFrontend Build Issues
# Clear node modules
docker-compose exec frontend rm -rf node_modules package-lock.json
docker-compose exec frontend npm install- Enable Redis caching
- Optimize database queries
- Use CDN for static files
- Enable gzip compression
- Monitor and optimize Celery tasks
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
- Backend: Follow PEP 8 (enforced by flake8)
- Frontend: Follow ESLint configuration
- Use meaningful commit messages
- Add docstrings to functions and classes
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue on GitHub
- Check the troubleshooting section
- Review the API documentation
- Contact the development team
- Multi-university support
- Advanced reporting and analytics
- Mobile application
- Additional payment providers
- Blockchain integration
- AI-powered fraud detection
- Machine learning for payment optimization
- Advanced loan management
- Integration with external financial systems
- Multi-language support
- Advanced security features
- Django and React communities
- ClickPesa for payment processing
- Contributors and testers
- Open source libraries used in this project
Developed by Victor Gervas Mmanda
Email: victor@evethlabstech.com
Phone & Whatsapp: +255626802297
Portifolio: www.victor.evethlabstech.com
Website: www.evethlabstech.com
GitHub: https://github.com/vk-eveth/mtaaAddress