A comprehensive student monitoring system for connecting students with experienced mentors
- About the Project
- Features
- Tech Stack
- Project Structure
- Getting Started
- API Endpoints
- Database Schema
- Usage Guide
- Screenshots
- Future Enhancements
- Contributing
- License
- Contact
ScholarGuide is a full-stack web application designed to bridge the gap between students and experienced mentors. It provides a platform where knowledge is shared, skills are developed, and futures are shaped. The platform enables students to find mentors based on their interests, goals, and expertise areas, and schedule appointments for personalized guidance.
- Connect students with experienced professionals in their field of interest
- Provide an easy-to-use appointment scheduling system
- Enable personalized mentorship experiences
- Track progress through reviews and feedback
- User registration with role selection (Student/Mentor)
- Secure login with JWT token-based authentication
- Protected routes for authenticated users
- Role-based access control
- Create and manage student profiles
- Search and filter mentors by name, specialization, or skills
- View detailed mentor profiles with ratings and reviews
- Book appointments with mentors
- Track appointment history and status
- Leave reviews for mentors after sessions
- Create and manage detailed mentor profiles
- Add specialization, skills, work experience, and education
- Set availability for appointments
- Accept or reject appointment requests from students
- Receive and manage reviews from students
- Track appointment history
- Mentor Search: Filter and sort mentors by name, rating, or experience
- Appointment Booking: Schedule sessions with preferred date, time, and duration
- Review System: Rate and provide feedback on mentor sessions
- Profile Management: Edit personal information, skills, education, and availability
- React (v19.1.1) - UI library for building the interface
- React Router (v7.8.2) - Client-side routing
- React Bootstrap (v2.10.10) - UI component library
- Axios (v1.11.0) - HTTP client for API requests
- Bootstrap (v5.3.8) - CSS framework
- Express.js (v4.18.2 / v5.1.0) - Web application framework
- Node.js - JavaScript runtime
- JSON Web Token (JWT) - Authentication
- bcryptjs - Password hashing
- CORS - Cross-origin resource sharing
- concurrently - Run multiple commands simultaneously
- nodemon - Auto-restart server on file changes
ScholarGuide/
├── package.json # Root package.json (scripts for both client & server)
├── README.md # Project documentation
├── .gitignore # Git ignore file
│
├── client/ # React frontend application
│ ├── public/
│ │ ├── index.html # HTML template
│ │ ├── favicon.ico # Favicon
│ │ └── schoarguide-high-resolution-logo-transparent.png
│ │
│ ├── src/
│ │ ├── components/
│ │ │ └── Navbar.js # Navigation component
│ │ │
│ │ ├── context/
│ │ │ └── AuthContext.js # Authentication context provider
│ │ │
│ │ ├── pages/
│ │ │ ├── Home.js # Landing page
│ │ │ ├── About.js # About page
│ │ │ ├── Help.js # Help & FAQ page
│ │ │ ├── Login.js # Login page
│ │ │ ├── Register.js # Registration page
│ │ │ ├── MentorSearch.js # Mentor search & browse
│ │ │ ├── MentorProfile.js # Individual mentor profile
│ │ │ ├── StudentDashboard.js # Student dashboard
│ │ │ ├── MentorDashboard.js # Mentor dashboard
│ │ │ ├── AppointmentBooking.js # Book appointment
│ │ │ └── EditProfile.js # Edit user profile
│ │ │
│ │ ├── App.js # Main app component
│ │ ├── App.css # App styles
│ │ ├── index.js # React entry point
│ │ └── index.css # Global styles
│ │
│ ├── package.json # Client dependencies
│ └── README.md # Client README
│
└── server/ # Express backend
├── server.js # Main server file
├── database.json # JSON-based database
├── middleware/
│ └── auth.js # Authentication middleware
│
├── models/
│ └── Appointment.js # Appointment model
│
├── routes/
│ ├── auth.js # Authentication routes
│ ├── students.js # Student routes
│ ├── mentors.js # Mentor routes
│ ├── appointments.js # Appointment routes
│ └── reviews.js # Review routes
│
└── package.json # Server dependencies
Before you begin, ensure you have the following installed:
- Node.js (v14 or higher)
- npm (v6 or higher)
- Clone the repository
bash
git clone <repository-url>
cd ScholarGuide
- Install root dependencies
bash
npm install
- Install client dependencies
bash
npm run install-client
Or manually:
bash
cd client && npm install
- Install server dependencies (already included in root)
bash
cd server && npm install
Run both frontend and backend concurrently:
bash
npm run dev
This will:
- Start the backend server on http://localhost:5000
- Start the React development server on http://localhost:3000
Start the backend server:
bash
npm run server
Start the frontend:
bash
npm run client
bash
npm run build
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
User login |
| GET | /api/auth/me |
Get current user profile |
| PUT | /api/auth/me |
Update current user profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/users |
Get all users |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/students |
Get all students |
| GET | /api/students/:id |
Get student by ID |
| PUT | /api/students/me |
Update student profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/mentors |
Get all mentors |
| GET | /api/mentors/:id |
Get mentor by ID |
| GET | /api/mentors/me |
Get current mentor profile |
| PUT | /api/mentors/me |
Update mentor profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/appointments |
Get user's appointments |
| POST | /api/appointments |
Create new appointment |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/reviews |
Create new review |
| GET | /api/mentors/:id/reviews |
Get reviews for a mentor |
json
{
"id": "string",
"name": "string",
"email": "string",
"password": "string (hashed)",
"role": "student | mentor",
"phone": "string",
"bio": "string",
"photo": "string",
"createdAt": "timestamp"
}
json
{
"id": "string",
"userId": "string (reference to users)",
"skills": ["string"],
"education": [
{
"institution": "string",
"degree": "string",
"fieldOfStudy": "string",
"year": "number"
}
],
"appointments": ["string (array of appointment IDs)"]
}
json
{
"id": "string",
"userId": "string (reference to users)",
"specialization": "string",
"skills": ["string"],
"education": [...],
"workExperience": [
{
"position": "string",
"company": "string",
"startDate": "date",
"endDate": "date | null",
"current": "boolean",
"description": "string"
}
],
"currentlyWorkingAt": "string",
"availability": [
{
"day": "string",
"slots": ["time"]
}
],
"appointments": ["string"],
"rating": "number",
"reviews": ["string (array of review IDs)"]
}
json
{
"id": "string",
"studentId": "string",
"mentorId": "string",
"date": "date",
"time": "time",
"duration": "number (minutes)",
"purpose": "string",
"status": "pending | approved | completed | cancelled",
"notes": "string",
"createdAt": "timestamp"
}
json
{
"id": "string",
"studentId": "string",
"mentorId": "string",
"rating": "number (1-5)",
"comment": "string",
"createdAt": "timestamp"
}
- Register: Create an account and select "Student" as your role
- Complete Profile: Add your skills and education background
- Find Mentors: Browse the mentor directory or search for specific skills
- View Profiles: Check mentor ratings, experience, and availability
- Book Appointment: Select a suitable time slot and describe your purpose
- Attend Session: Meet with your mentor at the scheduled time
- Leave Review: Rate your experience and provide feedback
- Register: Create an account and select "Mentor" as your role
- Complete Profile: Add your specialization, skills, work experience, and education
- Set Availability: Define your available time slots for appointments
- Manage Requests: Accept or reject appointment requests from students
- Conduct Sessions: Meet with students and provide guidance
- Build Reputation: Receive positive reviews to attract more students
The application includes the following key pages:
- Home Page - Welcome screen with platform overview and testimonials
- Login/Register - Authentication pages with modern UI design
- Mentor Search - Searchable and filterable mentor directory
- Mentor Profile - Detailed view of mentor's profile, reviews, and availability
- Student Dashboard - View and manage appointments
- Mentor Dashboard - Manage appointment requests and profile
- Appointment Booking - Schedule new appointments
- Edit Profile - Update personal information and preferences
- About - Platform information and mission
- Help - FAQ and support resources
- Real-time Chat: In-app messaging between students and mentors
- Video Conferencing: Integrated video calls for remote mentoring
- Calendar Integration: Sync appointments with Google Calendar, Outlook, etc.
- Payment Integration: Payment processing for paid mentorship sessions
- Advanced Matching Algorithm: AI-powered mentor-student matching
- Mobile Application: Native iOS and Android apps
- Notifications: Push notifications for appointment reminders
- Analytics Dashboard: Track progress and engagement metrics
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Email: support@studentmonitoringsystem.com
- Website: https://scholarguide.example.com
Made with ❤️ by the ScholarGuide Team
