{"id":21288571,"url":"https://github.com/meereak/student-course-management","last_synced_at":"2026-04-12T18:16:47.474Z","repository":{"id":246143673,"uuid":"819992439","full_name":"MeeReak/student-course-management","owner":"MeeReak","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-08T04:02:21.000Z","size":180,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T05:41:20.706Z","etag":null,"topics":["expressjs","nodejs","student-management","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MeeReak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-25T15:26:33.000Z","updated_at":"2024-11-10T02:36:56.000Z","dependencies_parsed_at":"2024-06-26T05:25:00.857Z","dependency_job_id":"6e470390-c9b0-40cd-abf6-738f4ec40e60","html_url":"https://github.com/MeeReak/student-course-management","commit_stats":null,"previous_names":["meereak/student-course-management"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeReak%2Fstudent-course-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeReak%2Fstudent-course-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeReak%2Fstudent-course-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MeeReak%2Fstudent-course-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MeeReak","download_url":"https://codeload.github.com/MeeReak/student-course-management/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243753995,"owners_count":20342537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expressjs","nodejs","student-management","typescript"],"created_at":"2024-11-21T12:23:00.072Z","updated_at":"2026-04-12T18:16:42.450Z","avatar_url":"https://github.com/MeeReak.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT LOGO\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/vath-song99\"\u003e\n    \u003cimg src=\"![image](https://github.com/MeeReak/student-course-management/assets/138286828/768ae5c2-7f9d-4368-9797-b0988b5603aa)\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e \n\n  \u003ch3 align=\"center\"\u003eSmoeury Songvat\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    School and Course Management projects!\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.postman.com/scm666-8604/workspace/scm-workspace/collection/30787235-76b903d7-4573-4c71-b72b-bee7e76297e7?action=share\u0026creator=30787235\u0026active-environment=30787235-f395e208-c66f-49bd-ba54-ea73b17ffa90\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.postman.com/scm666-8604/workspace/scm-workspace/collection/30787235-76b903d7-4573-4c71-b72b-bee7e76297e7?action=share\u0026creator=30787235\u0026active-environment=30787235-f395e208-c66f-49bd-ba54-ea73b17ffa90\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Vath-Song99/SCM_monolithic/issues/new?labels=bug\u0026template=bug-report---.md\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Vath-Song99/SCM_monolithic/issues/new?labels=enhancement\u0026template=feature-request---.md\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e--\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n### About The Project\n\nThe Student course management system built with NodeJS and Express. It allows managing students and courses through CRUD operations (Create, Read, Update, Delete). Students and courses have detailed information stored, and you can search for them by name or phone number. Additionally, the system lets students register for courses and generates reports on both students and courses.\n\n\n### Built With\n\n[![Node.js](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge\u0026logo=nodedotjs\u0026logoColor=white)](https://nodejs.org/)\n[![Express.js](https://img.shields.io/badge/Express.js-404D59?style=for-the-badge)](https://expressjs.com/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\n- ### Deployed\n  *To test the deployed API, click here.*[click-here](https://www.postman.com/student-management/workspace/student-course-management/collection/33490622-2705de04-cef1-491b-a9f6-4326419c4e2a?action=share\u0026creator=33490622\u0026active-environment=33490622-5dd37a83-ad36-4f4f-95d8-567eb83bd745)\n\n\n- ### Local\n  #### Prerequisites\n\n  *This is an example of how to list things you need to use the software and how to install them.*\n* npm\n  ```sh\n  npm install npm@latest -g\n  ```\n    or\n\n* yarn\n  ```sh\n  npm install yarn@latest -g\n  ```\n### Installation\n\n_Below is an example of how to settup the project requirement\n\n\n1. Clone the repo\n   ```sh\n   https://github.com/MeeReak/student-course-management.git\n   ```\n2. Install NPM or YARN packages\n   ```sh\n   npm install\n   ```\n   or\n\n   ```sh\n   yarn install\n   ```   \n3. Enter your .env variables in `configs/.env`\n   ```js\n    NODE_ENV=dev\n    LOG_LEVEL=debug\n    DB_URL=your_database_url\n    PORT=3000\n   ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\n_Below is an example of how to get start the project!\n\n1. Start Server\n   ```sh\n   npm run start:dev\n   ```\n    or\n    ```sh\n   yarn start:dev\n     ```\n2. Run Test\n   ```sh\n   npm run start:test\n   ```\n   or\n\n   ```sh\n   yarn start:test\n   ```   \nBelow are some examples of how to use the API endpoints.\n\n_For more examples, please refer to the [Documentation](https://www.postman.com/student-management/workspace/student-course-management/collection/33490622-2705de04-cef1-491b-a9f6-4326419c4e2a?action=share\u0026creator=33490622\u0026active-environment=33490622-5dd37a83-ad36-4f4f-95d8-567eb83bd745)_\n\n### Endpoint\n\n### 1. Student CRUD Operations (using soft delete)\n\n- **Create Student**: `POST /v1/students`\n- **Retrieve a Student**: `GET /v1/students/{id}`\n- **Update Student**: `POST /v1/students/{id}`\n- **Delete Student**: `DELETE /v1/students/{id}`\n- **List Students**: `GET /v1/students`\n\n### 2. Student Search\n\n- **Search Students by Full Name or Phone Number**: `GET /v1/students/search?query={query}`\n\n### 3. Course CRUD Operations (using soft delete)\n\n- **Create Course**: `POST /v1/courses`\n- **Retrieve a Course**: `GET /v1/courses/{id}`\n- **Update Course**: `PUT /v1/courses/{id}`\n- **Delete Course**: `DELETE /v1/courses/{id}`\n- **List Courses**: `GET /v1/courses` \n\n### 4. Course Search\n\n- **Search Courses by Name**: `GET /v1/courses/search?name={name}`\n- **Advanced Search Courses by Start Date and End Date**: `GET /v1/courses/date?startDate={startDate}\u0026endDate={endDate}`\n\n### 5. Register/Remove Course for Student\n\n- **Register Course for Student**: `POST /v1/students/{id}/course/{courseId}`\n- **Remove Course for Student**: `DELETE /v1/students/{id}/course/{courseId}`\n\n### 6. Course Report\n\n- **Course Report**: `GET /v1/courses/reports`\n\n### 7. Student Report\n\n- **Student Report**: `GET /v1/students/reports`\n\n\n## Sample Request Body\n\n- **Student**\n```sh\n    {\n        \"name\":{\n                \"en\": \"Kaizen\",\n                \"km\": \"សុខគា\"\n        },\n        \"dateOfBirth\": \"02-02-2022\", # format \"yy,mm,dd\"\n        \"gender\": \"Male\",\n        \"phoneNumber\": \"0123456789\"\n        \"courses\": [\n                 \"667fb8a1fd67fa8bce216370\",\n                 \"667fb9e20d778b0eb1a8d0db\"\n        ], \n    }\n```\n\n- **Course**\n```sh\n    {\n        \"name\": \"Javascript\",\n        \"professorName\": \"Kaizen\",\n        \"startDate\": \"04-01-2024\",\n        \"endDate\": \"12-01-2024\",\n        \"limit\": 15,\n        \"Enroll\": [\n                  \"667f9b5d608df88473d6dc1a\",\n                  \"667fbc0c2ee96d8d99d0b68e\"\n              ], \n          }\n```\n  \n## Sample Response Body\n\n- **Student**\n```sh\n    {\n        \"_id\": \"667fbc0c2ee96d8d99d0b68e\",\n        \"name\":{\n                \"en\": \"Kaizen\",\n                \"km\": \"សុខគា\"\n        },\n        \"dateOfBirth\": \"02-02-2022\", # format \"yy,mm,dd\"\n        \"gender\": \"Male\",\n        \"phoneNumber\": \"0123456789\"\n        \"courses\": [\n                 \"667fb8a1fd67fa8bce216370\",\n                 \"667fb9e20d778b0eb1a8d0db\"\n        ], \n        \"is_deleted\": false,\n        \"__v\": 1\n    }\n```\n\n- **Course**\n```sh\n    {\n        \"name\": \"Javascript\",\n        \"professorName\": \"Kaizen\",\n        \"startDate\": \"04-01-2024\",\n        \"endDate\": \"12-01-2024\",\n        \"limit\": 15,\n        \"Enroll\": [\n            \"667f9b5d608df88473d6dc1a\",\n            \"667fbc0c2ee96d8d99d0b68e\"\n        ],\n    }\n```\n### Validation\n\n**Student Document Validation**:\n\n1. `name`:{\n       `en`: Must be a non-empty string.\n       `km`: Must be a non-empty string.\n   }\n2. `dateOfBirth`: Must be a valid date.\n3. `gender`: Must be either \"male\", \"female\", or “other” valid options.\n4. `phoneNumber`: Must be a valid phone number format .\n5. `Course` :  Must be an array of valid course IDs. The string of IDs should not exceed\n\n**Course Document Validation**:\n\n1. `name`: Must be a non-empty string.\n2. `professorName`: Must be a non-empty string.\n3. `limit`: Must be a positive integer.\n4. `startDate`: Must be a valid date.\n5. `endDate`: Must be a valid date and must be after `start_date`.\n6. `Enroll`: Must be an array of valid student IDs. The string of IDs should not exceed .\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\nRin Tithyareak - [@Mee Reak](https://www.facebook.com/mee.reak.9461) - meereak168@gmail.com\n\nProject Link: [https://github.com/MeeReak/student-course-management.git](https://github.com/MeeReak/student-course-management.git)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeereak%2Fstudent-course-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeereak%2Fstudent-course-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeereak%2Fstudent-course-management/lists"}