Connect customers with qualified technicians through a streamlined booking system
Tech-Care is a comprehensive platform designed to bridge the gap between customers seeking technical services and qualified technicians in Rwanda. Our platform provides a stable, end-to-end experience where customers can easily find, view, and book technicians, while providing technicians with effective tools to manage their bookings and profiles.
Click above to watch our platform demo video
- Node.js 18+
- npm or yarn
- Supabase account
- Google Maps API key
-
Clone the repository
git clone https://github.com/Tech-Care-Rwanda/tech-care.git cd tech-care -
Install dependencies
# Install root dependencies npm install # Install frontend dependencies cd frontend npm install # Install backend dependencies cd ../backend npm install cd ..
-
Environment Setup
Create
.env.localin the frontend directory:NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_key
Create
.envin the backend directory:SUPABASE_URL=your_supabase_url SUPABASE_SERVICE_KEY=your_supabase_service_key PORT=3001
-
Database Setup
Set up your Supabase database with the following tables:
users- Customer and technician profilestechnician_details- Extended technician informationbookings- Service bookings and requestsservices- Available service typescategories- Service categories
-
Start Development Servers
# Terminal 1: Start backend server cd backend npm run dev # Terminal 2: Start frontend server cd frontend npm run dev
-
Access the Application
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
Tech-Care utilizes a modern monorepo architecture with clear separation between frontend and backend services.
tech-care/
โโโ frontend/ # Next.js 15 + React 19 application
โ โโโ src/
โ โ โโโ app/ # Next.js App Router pages
โ โ โโโ components/ # Reusable UI components
โ โ โโโ lib/ # Utilities, services, and contexts
โ โ โโโ types/ # TypeScript type definitions
โ โโโ public/ # Static assets
โโโ backend/ # Express.js server
โ โโโ services/ # Supabase integration services
โ โโโ uploads/ # File upload storage
โ โโโ server.js # Express server configuration
โโโ package.json # Root package configuration
Frontend
- Framework: Next.js 15 with Turbopack
- UI Library: React 19 with TypeScript 5
- Styling: Tailwind CSS + Radix UI
- Mapping: Google Maps API + Leaflet
- State Management: React Context + Supabase client
- Authentication: Supabase Auth
Backend
- Server: Express.js (minimal)
- Database: Supabase (PostgreSQL)
- File Upload: Multer middleware
- Security: CORS + Helmet
Database
- Provider: Supabase
- Type: PostgreSQL with Row Level Security (RLS)
- Features: Real-time subscriptions, Auth integration
- ๐บ๏ธ Interactive Map - Find technicians on an interactive map with real-time locations
- ๐ Smart Search - Filter technicians by specialization, rating, and availability
- ๐ค Detailed Profiles - View comprehensive technician profiles with certifications
- ๐ Easy Booking - Streamlined booking process with status tracking
- ๐ฑ Responsive Design - Works seamlessly on desktop and mobile devices
- ๐ Real-time Updates - Get instant notifications on booking status changes
- ๐ Dashboard - Comprehensive dashboard showing earnings and booking statistics
- โ Booking Management - Accept or decline booking requests with one click
- ๐ Profile Management - Update profile information, upload certificates
- ๐ฐ Earnings Tracking - Track monthly earnings and completed jobs
- ๐ธ Media Upload - Upload profile pictures and certification documents
- ๐ Location Services - Manage service areas and availability
- ๐ Role-based Authentication - Separate customer and technician experiences
- ๐ก๏ธ Security - Row Level Security policies and secure file uploads
- โก Performance - Optimized with Next.js 15 and Turbopack
- ๐ Analytics - Built-in analytics for tracking platform usage
- ๐ API-First - RESTful API design for future mobile apps
- Browse Technicians - View available technicians on interactive map
- Filter & Search - Use filters to find the right technician
- View Profile - Check technician details, ratings, and certifications
- Book Service - Complete booking with service details
- Track Status - Monitor booking progress in real-time
- Registration - Sign up with professional details and certifications
- Profile Setup - Complete profile with specializations and rates
- Receive Requests - Get notified of new booking requests
- Manage Bookings - Accept, decline, or update booking status
- Track Earnings - Monitor income and performance metrics
frontend/src/
โโโ app/ # Next.js App Router
โ โโโ api/ # API routes
โ โโโ book/ # Booking pages
โ โโโ dashboard/ # User dashboards
โ โโโ technician/ # Technician profiles
โ โโโ layout.tsx # Root layout
โโโ components/ # UI Components
โ โโโ auth/ # Authentication components
โ โโโ booking/ # Booking-related components
โ โโโ layout/ # Layout components
โ โโโ maps/ # Map components
โ โโโ ui/ # Base UI components
โโโ lib/ # Utilities & Services
โ โโโ contexts/ # React contexts
โ โโโ hooks/ # Custom React hooks
โ โโโ services/ # API services
โ โโโ utils/ # Utility functions
โโโ types/ # TypeScript definitions
Frontend
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run format # Format code with PrettierBackend
npm run dev # Start development server with nodemon
npm run start # Start production server
npm run build # No-op build commandFrontend (.env.local)
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_keyBackend (.env)
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_KEY=your_supabase_service_role_key
PORT=3001users
- Stores both customers and technicians
- Includes authentication and basic profile info
- Role-based access control
technician_details
- Extended technician information
- Specializations, certifications, rates
- Availability and location data
bookings
- Service requests and bookings
- Status tracking and pricing
- Customer-technician relationships
services & categories
- Service type definitions
- Categorized service offerings
All tables implement RLS policies ensuring:
- Users can only access their own data
- Technicians can view relevant booking information
- Anonymous users can browse technicians and create bookings
- Create a new Supabase project
- Run the database migrations
- Configure RLS policies
- Set up file storage buckets
- Configure authentication providers
# Build and deploy to Vercel
npm run build
vercel --prod# Deploy backend to Railway or Render
railway up
# or
render deploy# Run frontend tests
cd frontend
npm test
# Run e2e tests (if configured)
npm run test:e2e- Unit Tests - Component and utility function tests
- Integration Tests - API endpoint and service tests
- E2E Tests - Full user workflow tests
- Next.js 15 - Latest optimizations and Turbopack
- Image Optimization - Automatic image optimization
- Code Splitting - Automatic route-based code splitting
- Bundle Analysis - Built-in bundle analyzer
- Caching - Supabase query caching and React Query
- Lighthouse Score - 90+ on all metrics
- Core Web Vitals - Excellent ratings
- Bundle Size - Optimized for fast loading
We welcome contributions! Please follow these steps:
- 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
- Use TypeScript for all new code
- Follow existing code formatting (Prettier)
- Write meaningful commit messages
- Add tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- ChristianTonny - Lead Developer & Architecture
- devark28 - Frontend Specialist
- Mbonyumugisha-Prince - Full-Stack Developer
- isamuella - Quality Assurance
If you have any questions or issues:
- Check the Issues page
- Create a new issue with detailed information
- Contact the development team
- โ User authentication and profiles
- โ Technician discovery and booking
- โ Interactive mapping
- โ Booking management
- ๐ Real-time messaging
- ๐ Payment integration
- ๐ Push notifications
- ๐ Mobile app (React Native)
- ๐ฎ AI-powered matching
- ๐ฎ Advanced analytics
- ๐ฎ Multi-language support
- ๐ฎ IoT device integration
The platform includes built-in analytics for:
- User engagement tracking
- Booking conversion rates
- Technician performance metrics
- Platform usage statistics
Built with โค๏ธ in Rwanda
For more information, visit our GitHub repository or watch our demo video.
