A modern, full-stack tutoring platform connecting students with verified tutors across the globe. Built with React, Firebase, and a robust backend API.
Live Platform: https://etuition.dibbockb.com/
- Features
- Tech Stack
- Project Structure
- Getting Started
- Installation
- Environment Variables
- Usage
- Key Features Explained
- API Endpoints
- User Roles
- Payment Integration
- Contributing
- License
- π Post Tuition Requests - Create detailed tuition listings with budget, subject, and location
- π₯ Manage Applicants - Review tutor applications with qualifications and salary expectations
- π³ Secure Payments - Stripe integration for safe tuition payments
- π Payment History - Track all transactions and payments made
- π Browse Tutors - Discover 1000+ verified tutors across multiple subjects
- π¨ Apply to Tuitions - Submit applications with qualifications and expected salary
- β Manage Applications - Track application status and earnings
- π° Revenue Dashboard - View total earnings and payment history
- β Build Reputation - Showcase skills and subjects taught
- π Platform Analytics - Real-time statistics on users, tuitions, and revenue
- π€ User Management - Manage user accounts and roles (Student/Tutor/Admin)
- βοΈ Approve Tuitions - Review and approve tuition postings
- π΅ Revenue Tracking - Monitor platform earnings and payment logs
- React 19.2 - UI library
- Vite - Build tool & dev server
- Tailwind CSS - Styling
- DaisyUI - Component library
- React Router - Navigation
- React Hook Form - Form management
- TanStack React Query - Data fetching & caching
- Framer Motion - Animations
- Chart.js - Data visualization
- Lottie - Animated illustrations
- Node.js + Express - API server
- MongoDB - Database
- Firebase Auth - Authentication
- Stripe - Payment processing
- Vercel - Backend hosting
- ESLint - Code quality
- Firebase CLI - Deployment
- ImgBB - Image hosting
src/
βββ Components/
β βββ AuthLayout/ # Login, Register, Auth Guards
β βββ Navbar/ # Navigation
β βββ Footer/ # Footer Component
β βββ Tutors/ # Tutor listing & profile
β βββ Tuitions/ # Tuition listing & details
β βββ Users/ # User profile
β βββ Hooks/ # Custom hooks (useAuth, useAxiosSecure, useRole)
β βββ Loading/ # Loading states
βββ Layouts/
β βββ Dashboard/ # All dashboard components
β β βββ DashboardHome.jsx
β β βββ MyTuitions.jsx
β β βββ MyPayments.jsx
β β βββ Applicants.jsx
β β βββ AppliedTuitions.jsx
β β βββ ApprovedTuitions.jsx
β β βββ Revenue.jsx
β β βββ AdminManageUser.jsx
β β βββ AdminManageTuitions.jsx
β β βββ AdminSiteRevenue.jsx
β βββ Home/ # Landing page
β βββ RootLayout/ # Main layout wrapper
βββ Router/
β βββ Router.jsx # Route configuration
βββ Firebase/
β βββ firebase.config.js # Firebase setup
βββ public/ # Static assets
- Node.js (v16+)
- npm or yarn
- Firebase account
- Stripe account (for payments)
- ImgBB API key (for image uploads)
- Clone the repository
git clone https://github.com/yourusername/etuition.git
cd etuition- Install dependencies
npm install- Create
.envfile in root directory
cp .env.example .env- Start development server
npm run devThe app runs on http://localhost:5173
Create a .env file in the root directory with:
VITE_apiKey=your_firebase_api_key
VITE_authDomain=your_firebase_auth_domain
VITE_projectId=your_firebase_project_id
VITE_storageBucket=your_firebase_storage_bucket
VITE_messagingSenderId=your_firebase_messaging_id
VITE_appId=your_firebase_app_id
VITE_image_host_key=your_imgbb_api_key
Backend Environment Variables (Server Repository):
MONGODB_URI=your_mongodb_connection
STRIPE_SECRET_KEY=your_stripe_secret
FIREBASE_SERVICE_ACCOUNT=your_firebase_service_account_json
PORT=3000
- Sign Up - Register as a Student
- Create Tuition - Go to Dashboard β Add Tuition
- Select subject, mode (online/offline), location, budget
- Submit for admin approval
- Browse Tutors - Visit Tutors page to find qualified instructors
- Manage Applications - Review applicants in Applicants section
- Make Payment - Accept tutor β Process payment via Stripe
- Track History - View all payments in Payment History
- Sign Up - Register as a Tutor
- Browse Tuitions - Visit Tuitions page
- Apply - Submit application with qualifications & expected salary
- Track Status - Monitor applications in My Applications
- Get Paid - Once approved, track earnings in Revenue section
- Access Admin Dashboard - Auto-enabled for admin accounts
- Manage Users - Edit/delete user accounts, change roles
- Approve Tuitions - Review pending tuition posts
- Monitor Revenue - Track platform earnings and payment logs
- Firebase Authentication with email/password
- Google OAuth login
- Role-based access control (Student/Tutor/Admin)
- Stripe integration for secure payments
- Payment success/failure handling
- Transaction logging for admins
- TanStack React Query for smart data fetching
- Automatic cache management
- Refetch on demand
- React Hook Form for efficient form handling
- SweetAlert2 for user confirmations
- Input validation and error handling
- Mobile-first approach
- Tailwind CSS breakpoints
- DaisyUI pre-built components
POST /users- Create user profileGET /users- Get all usersGET /users/:email- Get user by emailPATCH /users/:email- Update user profileDELETE /users/:id- Delete user
GET /tuitions- Get all tuitionsGET /tuitions/:id- Get tuition detailsPOST /newtuition- Create tuitionPATCH /tuitions/:id- Update tuitionDELETE /tuitions/:id- Delete tuitionGET /tuitions/creator/:email- Get user's tuitions
POST /apply- Submit tutor applicationGET /applications/creator/:email- Get tutor's applicationsGET /applications/approved/:email- Get approved applicationsPATCH /applications/:id- Update application
POST /checkout- Create payment sessionPOST /payment-success- Confirm paymentGET /admin/payments-log- Get all payments (admin)
GET /admin/tuitions/all- Get all tuitionsPATCH /admin/tuitions/accept/:id- Approve tuitionDELETE /admin/tuitions/delete/:id- Delete tuitionPATCH /admin/update-user/:id- Update user
| Role | Capabilities |
|---|---|
| Student | Post tuitions, manage applicants, make payments, browse tutors |
| Tutor | Apply to tuitions, track applications, view earnings |
| Admin | Manage users, approve tuitions, monitor revenue |
- Provider: Stripe
- Frontend: React integration with Stripe
- Backend: Secure session creation and confirmation
- Webhooks: Payment event handling
- Currency: Bangladeshi Taka (ΰ§³) with USD conversion
- 1000+ Verified Tutors
- 10+ Countries Served
- Starting from ΰ§³6,000/month
- 24/7 Customer Support
- 98% Same-day class start rate
We welcome contributions! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
# Development
npm run dev # Start dev server
# Production
npm run build # Build for production
npm run preview # Preview production build
# Linting
npm run lint # Run ESLint
# Firebase
firebase deploy # Deploy to Firebase Hosting- Payment system requires Stripe account setup
- Image hosting uses ImgBB (requires API key)
- Real-time updates use polling instead of WebSockets
- Mobile app support coming soon
- Firebase Authentication for secure login
- JWT token validation
- Role-based access control
- Secure payment processing with Stripe
- Protected API routes with authorization headers
- XSS and CSRF protection via React
For issues, suggestions, or feature requests:
- Email: [email protected]
- GitHub Issues: Create an issue
- Live Chat: Available on etuition.com
This project is licensed under the MIT License - see the LICENSE file for details.
- React Team for the incredible library
- Stripe for secure payments
- Firebase for backend services
- TailwindCSS for styling framework
- All Contributors who made this possible
- Video call integration (Zoom/Google Meet)
- Real-time notifications
- AI-powered tutor matching
- Mobile app (React Native)
- Subscription plans
- Schedule management system
- Student progress tracking
- Certificate generation
Last Updated: December 2024
Current Version: 1.0.0
Maintainer: Development Team
Made with β€οΈ by the eTuition Team