Skip to content

Latest commit

 

History

History
297 lines (243 loc) · 7.22 KB

README.md

File metadata and controls

297 lines (243 loc) · 7.22 KB

Sprout Tutor - Learning Management System for Young Children

Sprout Tutor is a web application that serves as a learning management system (LMS) designed specifically for young children. It provides a fun and interactive platform for children to enhance their educational journey through engaging learning materials, interactive exercises, and personalized progress tracking. This README file provides an overview of Sprout Tutor, its features, installation instructions, and usage guidelines.

Installation

To run Sprout Tutor locally, follow these steps:
  1. Clone the repository: git clone https://github.com/VictorJoshuaC/sprout-tutor.git
  2. Navigate to the project directory: cd sprout-tutor
  3. Install dependencies: npm install
  4. Set up the environment variables by creating a .env file. Refer to the provided .env.example file for the required variables and their values.
  5. Start the application: npm start
  6. Open your web browser and visit http://localhost:3000 to access Sprout Tutor.

API Documentation

Click [here](https://documenter.getpostman.com/view/23002744/2s93m4Yi7H) to view the API documentation.

API Live Link

Click [here](https://sprout-tutor.onrender.com/) to access the live version of the API.

Features

Sprout Tutor offers the following features:

Teacher Portal:

  • Course management: add new courses, edit existing courses, upload course content.
  • Progress tracking: view individual student progress and class-wide performance data.
  • Communication: interact with students and parents through discussion groups and direct messaging.
  • Grading & Assessment: grade student assignments and generate quizzes.

Student Portal:

  • View available courses, enroll in courses, and access course materials.
  • Submit assignments and track progress.
  • Communication: interact with teachers and peers through discussion groups and direct messaging.

Parent Portal:

  • View child's course progress, grades, and completion rates.
  • Communication: interact with teachers and other parents through discussion groups and direct messaging.

Technologies Used

  • Node.js
  • Express.js
  • MongoDB
  • Mongoose
  • JavaScript

License

This project is licensed under the MIT License. See the LICENSE file for more details.

API Testing Examples

Teacher API Testing

  • Route: POST /api/v1/teacher/courses

  • Request Body:

    {
      "title": "Mathematics",
      "description": "Introduction to mathematics",
      "gradeLevel": "3rd Grade"
    }
    
  • Expected Response:

    {
      "success": true,
      "data": {
        "_id": "60997a1c3a1a4815d8e7f550",
        "title": "Mathematics",
        "description": "Introduction to mathematics",
        "gradeLevel": "3rd Grade",
        "teacherId": "60997a1c3a1a4815d8e7f55a"
      }
    }
    
  • Route: PUT /api/v1/teacher/courses/:courseId

  • Request Body:

    {
      "title": "Mathematics (Advanced)",
      "description": "Advanced mathematics course",
      "gradeLevel": "4th Grade"
    }
    
  • Expected Response:

    {
      "success": true,
      "data": {
        "_id": "60997a1c3a1a4815d8e7f550",
        "title": "Mathematics (Advanced)",
        "description": "Advanced mathematics course",
        "gradeLevel": "4th Grade",
        "teacherId": "60997a1c3a1a4815d8e7f55a"
      }
    }
    
  • Route: DELETE /api/v1/teacher/courses/:courseId

  • Expected Response:

    {
      "success": true,
      "data": {
        "_id": "60997a1c3a1a4815d8e7f550",
        "title": "Mathematics (Advanced)",
        "description": "Advanced mathematics course",
        "gradeLevel": "4th Grade",
        "teacherId": "60997a1c3a1a4815d8e7f55a"
      }
    }
    
  • Route: POST /api/v1/teacher/courses/:courseId/videos

  • Request Body:

    {
      "title": "Introduction to Algebra",
      "url": "https://example.com/video123"
    }
    
  • Expected Response:

    {
      "success": true,
      "data": {
        "_id": "60997a1c3a1a4815d8e7f553",
        "title": "Introduction to Algebra",
        "url": "https://example.com/video123",
        "courseId": "60997a1c3a1a4815d8e
    
    

7f550" } }


- **Route:** GET /api/v1/teacher/courses/:courseId/students/:userId
- **Expected Response:**

{ "success": true, "data": { "courseId": "60997a1c3a1a4815d8e7f550", "userId": "60997a1c3a1a4815d8e7f55b" } }


<b>Student API Testing Examples</b>

- **Route:** GET /api/v1/student/courses
- **Expected Response:**

{ "success": true, "data": [ { "_id": "60997a1c3a1a4815d8e7f550", "title": "Mathematics", "description": "Introduction to mathematics", "gradeLevel": "3rd Grade", "teacherId": "60997a1c3a1a4815d8e7f55a" }, { "_id": "60997a1c3a1a4815d8e7f551", "title": "Science", "description": "Introduction to science", "gradeLevel": "3rd Grade", "teacherId": "60997a1c3a1a4815d8e7f55a" } ] }


- **Route:** POST /api/v1/student/courses/:courseId/enroll
- **Expected Response:**

{ "success": true, "data": { "_id": "60997a1c3a1a4815d8e7f550", "title": "Mathematics", "description": "Introduction to mathematics", "gradeLevel": "3rd Grade", "teacherId": "60997a1c3a1a4815d8e7f55a" } }


- **Route:** GET /api/v1/student/courses/:courseId/progress
- **Expected Response:**

{ "success": true, "data": { "courseId": "60997a1c3a1a4815d8e7f550", "progress": 75 } }


<b>Parent API Testing Examples</b>

- **Route:** GET /api/v1/parent/courses/:courseId/progress
- **Expected Response:**

{ "success": true, "data": { "courseId": "60997a1c3a1a4815d8e7f550", "progress": 75 } }


- **Route:** GET /api/v1/parent/courses/:courseId/grades
- **Expected Response:**

{ "success": true, "data": { "courseId": "60997a1c3a1a4815d8e7f550", "grades": [ { "assignment": "Math Quiz 1", "grade": 90 }, { "assignment": "Math Quiz 2", "grade": 95 } ] } }


- **Route:** POST /api/v1/parent/courses/:courseId/message
- **Request Body:**

{ "recipientId": "60997a1c3a1a4815d8e

7f55a", "message": "Hello, I have a question about my child's progress in the Mathematics course." }

- **Expected Response:**

{ "success": true, "data": { "_id": "60997a1c3a1a4815d8e7f554", "senderId": "60997a1c3a1a4815d8e7f55b", "recipientId": "60997a1c3a1a4815d8e7f55a", "message": "Hello, I have a question about my child's progress in the Mathematics course." } }


These are examples of how to test each API using Postman.
<h2>Contributing</h2>
<p>Contributions to Sprout Tutor are welcome! If you find any bugs or have suggestions for improvement, please open an issue or submit a pull request.</p>