This project is an Online Tutor Booking Platform, designed to connect users with tutors across various languages and subjects. It simplifies the process of finding, reviewing, and booking tutors through an interactive and user-friendly interface. The platform is essential for promoting accessible learning opportunities globally and streamlining the tutor hiring process. Users can browse categories, view detailed tutor profiles, and book sessions securely. Features like adding tutorials, managing bookings, and reviewing tutors enhance user engagement.
A representative screenshot of the project.
Check out the live version of the project: Live Demo
- Responsive Design: Fully responsive across mobile, tablet, and desktop.
- Authentication System: Email/password login, Google login, account recovery, and protected routes.
- Tutor Management: Add, update, delete, and view tutors.
- Tutor Search & Filters: Search tutors by language and filter by tutor language.
- Add Tutorials: Tutors can add their details and tutorials.
- My Tutorials: Tutors can view their added tutorials with update and delete actions.
- My Books Tutors: Students can see their booked tutors, add review.
- Error Handling: User-friendly error messages and loading indicators.
- Session Management: Secure session management with JWT tokens.
-
Home Page (/): Displays banner and language categories for tutors with essential information and link to find tutors page.
-
Find Tutors (/findTutors): View all Tutors, search, filter, and sort by language.
- Tutor Details (/tutor/:details): Detailed Tutor information and Book Tutor option.
- Add Tutorials (/addTutorials): Form for adding tutorials with tutor details.
- Book a Tutor (/tutor/:id): A Book Tutor button in tutor details page to book that tutor
- My Booked Tutors (/myBookedTutor): View and review booked tutors.
- My Tutorials (/myTutorials): Manage posted Tutorials with update and delete actions.
- Find Tutors (/findTutors/:category): Find one or more tutors by language category.
- Update Tutorial (/updateTutorial/:id): Update a posted Tutorial information.
- Navbar: Includes company logo, navigation links, user info, and authentication controls.
- Footer: Displays company information, policies, and social links.
- Dynamic Routing: Main section renders pages based on routes.
- Frontend: React.js, Tailwind CSS, DaisyUI
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: Firebase Auth, Google Authentication
- Deployment: [Platform Name]
- Version Control: GitHub
- "axios": "^1.7.9",
- "date-fns": "^4.1.0",
- "firebase": "^11.1.0",
- "lottie-react": "^2.4.0",
- "motion": "^11.15.0",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-helmet-async": "^2.0.5",
- "react-hot-toast": "^2.4.1",
- "react-icons": "^5.4.0",
- "react-router-dom": "^7.1.1",
- "sweetalert2": "^11.15.3",
- "swiper": "^11.1.15"
- Clone the repository:
git clone https://github.com/AskatAsh/Tutor-Book-client.git
- Navigate to the project directory:
cd yourproject - Install the dependencies:
npm install
- Run the project:
npm run dev
- Modular Code: Code is divided into reusable components and modules for better maintainability.
- Clean and Readable: Proper indentation, meaningful variable names, and comments for clarity.
- DRY Principle: Reused logic to avoid redundancy and ensure maintainability.
- Consistent Naming Conventions: Followed camelCase for variables and functions, and also for components.
- Frontend Errors: Clear and user-friendly error messages are displayed for invalid inputs, failed requests, or other issues.
- Backend Errors: Properly structured error responses with HTTP status codes.
- Boundary Testing: Validations to handle edge cases and ensure application stability.
- JWT Authentication: Used secure JSON Web Tokens to protect API endpoints and user sessions.
- Input Validation: Sanitized and validated user inputs to prevent security vulnerabilities like XSS and SQL injection.
- Protected Routes: Ensured sensitive pages and APIs are accessible only to authenticated users.
- Mobile-First Approach: Designed the UI to adapt seamlessly to various screen sizes.
- Scalable Layouts: Used flexible grid systems (Tailwind CSS) to ensure cross-device compatibility.
- Accessible UI: Followed web accessibility standards to enhance usability for all users.
- Folder Structure: Followed a clear folder structure separating components, pages, services, and assets.
- Meaningful Commits: Used descriptive commit messages to track changes effectively.
- README Documentation: Added detailed instructions for setting up, running, and understanding the project.
- Lazy Loading: Dynamically loaded components to improve initial page load speed.
- Efficient State Management: Used local state and React Query to manage data efficiently.
- Reduced Re-renders: Optimized components to prevent unnecessary re-renders for better performance.
- Error-Free Hosting: Ensured the deployed application is free of runtime errors.
- Live Updates: Automatically updates changes on the live application through CI/CD pipelines.
- Environment Variables: Secured sensitive data using
.envfiles.
- Manual Testing: Tested all user flows to ensure the app functions as intended.
- Error Scenarios: Simulated errors to verify the robustness of error-handling mechanisms.
These practices ensure that the project is scalable, maintainable, and user-friendly. 🚀
This project is licensed under the MIT License.
You are free to use, modify, and distribute this project under the terms of the license.
