Skip to content

SahiramSiyag07/ScholarGuide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScholarGuide - Student Mentorship Platform

ScholarGuide Logo

A comprehensive student monitoring system for connecting students with experienced mentors


Table of Contents


About the Project

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.

Key Objectives

  • 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

Features

Authentication & Authorization

  • User registration with role selection (Student/Mentor)
  • Secure login with JWT token-based authentication
  • Protected routes for authenticated users
  • Role-based access control

For Students

  • 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

For Mentors

  • 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

Core Functionality

  • 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

Tech Stack

Frontend

  • 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

Backend

  • 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

Development Tools

  • concurrently - Run multiple commands simultaneously
  • nodemon - Auto-restart server on file changes

Project Structure

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

Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js (v14 or higher)
  • npm (v6 or higher)

Installation

  1. Clone the repository
bash
   git clone <repository-url>
   cd ScholarGuide
   
  1. Install root dependencies
bash
   npm install
   
  1. Install client dependencies
bash
   npm run install-client
   

Or manually:

bash
   cd client && npm install
   
  1. Install server dependencies (already included in root)
bash
   cd server && npm install
   

Running the Application

Development Mode (Recommended)

Run both frontend and backend concurrently:

bash
npm run dev

This will:

Manual Start

Start the backend server:

bash
npm run server

Start the frontend:

bash
npm run client

Build for Production

bash
npm run build

API Endpoints

Authentication

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

Users

Method Endpoint Description
GET /api/users Get all users

Students

Method Endpoint Description
GET /api/students Get all students
GET /api/students/:id Get student by ID
PUT /api/students/me Update student profile

Mentors

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

Appointments

Method Endpoint Description
GET /api/appointments Get user's appointments
POST /api/appointments Create new appointment

Reviews

Method Endpoint Description
POST /api/reviews Create new review
GET /api/mentors/:id/reviews Get reviews for a mentor

Database Schema

Users Collection

json
{
  "id": "string",
  "name": "string",
  "email": "string",
  "password": "string (hashed)",
  "role": "student | mentor",
  "phone": "string",
  "bio": "string",
  "photo": "string",
  "createdAt": "timestamp"
}

Students Collection

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)"]
}

Mentors Collection

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)"]
}

Appointments Collection

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"
}

Reviews Collection

json
{
  "id": "string",
  "studentId": "string",
  "mentorId": "string",
  "rating": "number (1-5)",
  "comment": "string",
  "createdAt": "timestamp"
}

Usage Guide

For Students

  1. Register: Create an account and select "Student" as your role
  2. Complete Profile: Add your skills and education background
  3. Find Mentors: Browse the mentor directory or search for specific skills
  4. View Profiles: Check mentor ratings, experience, and availability
  5. Book Appointment: Select a suitable time slot and describe your purpose
  6. Attend Session: Meet with your mentor at the scheduled time
  7. Leave Review: Rate your experience and provide feedback

For Mentors

  1. Register: Create an account and select "Mentor" as your role
  2. Complete Profile: Add your specialization, skills, work experience, and education
  3. Set Availability: Define your available time slots for appointments
  4. Manage Requests: Accept or reject appointment requests from students
  5. Conduct Sessions: Meet with students and provide guidance
  6. Build Reputation: Receive positive reviews to attract more students

Screenshots

The application includes the following key pages:

  1. Home Page - Welcome screen with platform overview and testimonials
  2. Login/Register - Authentication pages with modern UI design
  3. Mentor Search - Searchable and filterable mentor directory
  4. Mentor Profile - Detailed view of mentor's profile, reviews, and availability
  5. Student Dashboard - View and manage appointments
  6. Mentor Dashboard - Manage appointment requests and profile
  7. Appointment Booking - Schedule new appointments
  8. Edit Profile - Update personal information and preferences
  9. About - Platform information and mission
  10. Help - FAQ and support resources

Future Enhancements

  • 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

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Contact


Made with ❤️ by the ScholarGuide Team

About

Scholar Guide aims to provide proper mentorship to students who want to excel but cannot find a suitable mentor.

Topics

Resources

Stars

Watchers

Forks

Contributors