Team BitByBit | Tech-Triathlon 2025
A centralized government service appointment booking portal for Sri Lankan citizens, streamlining access to government services and reducing physical waiting times.
GovEase revolutionizes how Sri Lankan citizens interact with government services by providing:
- Unified appointment booking across multiple departments
- Document pre-submission to speed up in-person visits
- Real-time notifications and appointment management
- QR code confirmations for seamless verification
- Officer dashboard for efficient service management
- Node.js 18+ or Docker
- Firebase account (already configured)
- Git
# Clone the repository
git clone https://github.com/BitByBit-B3/BitByBit_GovEase.git
cd BitByBit_GovEase
# Start with Docker Compose
docker-compose up -d
# Access the application
open http://localhost:3000# Clone and setup
git clone https://github.com/BitByBit-B3/BitByBit_GovEase.git
cd BitByBit_GovEase
# Install dependencies
npm install --legacy-peer-deps
# Copy environment file
cp .env.local.example .env.local
# Start development server
npm run devVisit http://localhost:3000 to see the application.
- Navigate to any service booking page
- Click the "π± CREATE ALL DATA" button to instantly populate:
- 3 Government departments
- 9 Services with realistic details
- Sample appointments for testing
- Register as a new user at
/auth - Go to admin panel
/admin - Use the seed utilities to create sample data
- Explore the dashboard and analytics
- Frontend: Next.js 15.4.2, React 18, TypeScript
- Backend: Firebase (Firestore, Auth, Storage, Hosting)
- UI: Tailwind CSS, Heroicons, React Hook Form
- Calendar: React Calendar for appointment booking
- QR Codes: QRCode library for appointment confirmations
- Charts: Recharts for analytics dashboard
βββ src/
β βββ app/ # Next.js app router pages
β β βββ auth/ # Authentication pages
β β βββ dashboard/ # Citizen dashboard
β β βββ admin/ # Officer/admin interface
β β βββ services/ # Service directory
β β βββ book/ # Appointment booking
β βββ components/ # Reusable UI components
β βββ contexts/ # React contexts (Auth)
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions and helpers
β βββ lib/ # Firebase configuration
βββ docs/ # Documentation
βββ docker-compose.yml # Docker deployment
βββ firebase.json # Firebase configuration
βββ README.md
-
Department of Motor Traffic
- Driving License Application
- Vehicle Registration
- License Renewal
-
Department of Immigration & Emigration
- Passport Application
- Passport Renewal
- Visa Extension
-
Registrar General's Department
- Birth Certificate
- Marriage Certificate
- Death Certificate
-
Department of Inland Revenue
- Tax Registration
- Tax Return Filing
- Tax Clearance Certificate
- Browse and search government services
- Book appointments with calendar interface
- Upload required documents in advance
- Track appointment status and history
- Receive notifications and reminders
- Provide feedback after service completion
- View and manage department appointments
- Review and approve submitted documents
- Update appointment statuses
- Communicate with citizens
- Access department analytics
- Manage all departments and services
- Oversee system-wide operations
- Monitor analytics and performance
- Manage user roles and permissions
- Email/password authentication via Firebase Auth
- Role-based access control (citizen/officer/admin)
- Secure document upload and storage
- Comprehensive Firestore security rules
- Storage rules for document access control
- Input validation with Zod schemas
- XSS and CSRF protection
- Interactive calendar with real-time availability
- Department and service filtering
- Time slot selection based on working hours
- Instant booking confirmation
- Secure file upload (PDF, images, documents)
- Pre-submission for faster processing
- Officer review and approval workflow
- Status tracking and notifications
- Appointment confirmations
- 24-hour reminders
- Status updates from officers
- Document review notifications
- Unique QR codes for each appointment
- Quick verification at government offices
- Reference number tracking
- Digital confirmation system
- Appointment trends and patterns
- Department load monitoring
- No-show rates and statistics
- Performance metrics
# Build and start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild after changes
docker-compose up -d --buildThe Docker setup includes:
- Next.js application container
- Nginx reverse proxy with SSL support
- Automatic container restart
- Production optimizations
# Build for production
npm run build
# Deploy to Firebase Hosting
firebase deploy
# Deploy specific services
firebase deploy --only hosting
firebase deploy --only firestore# Install production dependencies
npm ci --only=production
# Build application
npm run build
# Start production server
npm start
# With PM2 for process management
npm install -g pm2
pm2 start npm --name "govease" -- startCreate .env.local with your Firebase configuration:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key_here
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id- users - User profiles and authentication
- departments - Government department information
- services - Available services with requirements
- appointments - Booking records and status
- uploaded_documents - File storage references
- notifications - User communication
- feedback - Post-appointment ratings
- analytics - Performance metrics
See docs/database-schema.md for detailed ER diagram and relationships.
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintFirebase configuration is pre-configured. For custom setup:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id- Total appointments by department
- Peak booking hours and trends
- No-show rates and patterns
- Average processing times
- Citizen satisfaction ratings
- Document approval rates
- Unified Appointment Booking System
- Citizen Dashboard & Document Pre-submission
- Government Officer Interface
- Automated Notification System
- Analytics for Optimization
- Integrated Feedback System
- Public GitHub Repository - Complete source code
- README with Setup Instructions - This file
- Docker Configuration - docker-compose.yml included
- ER Diagram - docs/database-schema.md
- Security Implementation - Firebase rules
- Responsive Design - Mobile-first approach
- Real-world Implementation - Actual Sri Lankan government departments
- Modern Tech Stack - Latest Next.js, Firebase, TypeScript
- Security-First Design - Comprehensive security rules
- Scalable Architecture - Cloud-native Firebase backend
- User Experience Focus - Intuitive design for all user types
- Production Ready - Docker deployment, monitoring, analytics
- SMS integration for notifications
- Multi-language support (Sinhala, Tamil, English)
- Payment gateway integration
- Advanced analytics and AI insights
- Mobile app development
- Government database integration
- Technical Documentation: See
/docsdirectory - API Documentation: Firebase integration guides
- Security Documentation: Firestore and Storage rules
- Deployment Guides: Docker and Firebase setup
A comprehensive demo video showcasing all features has been created for the Tech-Triathlon submission.
Built for Tech-Triathlon 2025
Streamlining government services for Sri Lankan citizens through modern technology.
Live Demo: bitbybit-govease.web.app