{"id":19342074,"url":"https://github.com/jrs296/ffcs-typescript-api","last_synced_at":"2026-05-01T12:31:45.909Z","repository":{"id":177042375,"uuid":"659875098","full_name":"JRS296/FFCS-TypeScript-API","owner":"JRS296","description":"This API is built out with Typescript, Node Js, Express and MySQL, with its primary functionality in being able to handle API calls pertaining to VIT's FFCS System for handling course registration amongst its students.","archived":false,"fork":false,"pushed_at":"2023-09-29T19:23:58.000Z","size":81,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-27T05:51:45.706Z","etag":null,"topics":["api","api-rest","docker","docker-image","typescript"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/repository/docker/jrs296/ffcs_api_image/general","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JRS296.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2023-06-28T18:53:05.000Z","updated_at":"2025-07-25T13:24:23.000Z","dependencies_parsed_at":"2024-11-10T03:33:39.694Z","dependency_job_id":"1da35db4-89b4-4760-84a9-6b6d182c2dcb","html_url":"https://github.com/JRS296/FFCS-TypeScript-API","commit_stats":null,"previous_names":["jrs296/ffcs-typescript-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JRS296/FFCS-TypeScript-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FFFCS-TypeScript-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FFFCS-TypeScript-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FFFCS-TypeScript-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FFFCS-TypeScript-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JRS296","download_url":"https://codeload.github.com/JRS296/FFCS-TypeScript-API/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JRS296%2FFFCS-TypeScript-API/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32497810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api","api-rest","docker","docker-image","typescript"],"created_at":"2024-11-10T03:33:37.775Z","updated_at":"2026-05-01T12:31:45.863Z","avatar_url":"https://github.com/JRS296.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 --\u003e\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\u003c!--\n*** Thanks for checking out the Best-README-Template. If you have a suggestion\n*** that would make this better, please fork the repo and create a pull request\n*** or simply open an issue with the tag \"enhancement\".\n*** Don't forget to give the project a star!\n*** Thanks again! Now go create something AMAZING! :D\n--\u003e\n\n\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch3 align=\"center\"\u003eFFSC Backend using Typescript, Node Js, Express and MySQL\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    By: Jonathan Rufus Samuel - 20BCT0332\n    \u003cbr /\u003e\n    \u003cstrong\u003eSolution for Problem Statements for VIT (2023 Batch) - Dyte\u003c/strong\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003cimg src=\"https://img.shields.io/docker/v/jrs296/ffcs_api_image/latest?logo=docker\"\u003e\n  \u003c/p\u003e\n\u003c/div\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=\"#class-diagram\"\u003eClass Diagram\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#testing-results\"\u003eTesting Results\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nThis Project pertains to the 1st round of Dyte's on Campus Recruitments for VIT Vellore, for the year 2023. In short, this project is a backend with Typescript, Node Js, Express and MySQL, with its primary functionality in being able to handle API calls pertaining to VIT's \u003cb\u003eFFCS System\u003c/b\u003e for handling course registration amongst its students.\n\nCloud General Access Link: (Please edit CORS as required to use) \u003cb\u003eUnable to Deploy due to private nature of GitHub repo on 3rd part cloud service providers like Heroku and Render. Will update later on status of General Access Link as required\u003c/b\u003e\n\n\u003cb\u003eKey Features:\u003c/b\u003e\n* Can be accessed as both admin as well as student.\n* Full Admin functionality for creation of courses and slots, registration of students and teachers and more.\n* Can individually track Registered Courses of all students. Provides security by means of \u003cb\u003eBearer Token Authentication\u003c/b\u003e. (Login not handled via explicit route, handled via Bearer Authentication Token.)\n* Logic implemented to handle clashing of registered courses (returns error with status code: 400)\n* Follows API specification as mentioned by this webpage: \u003ca\u003ehttps://dyte-hiring-docs.pages.dev/#/\u003c/a\u003e\n* Security within routes, students can see data only relevant to themselves\n\n\u003cb\u003eImportant:\u003c/b\u003e\n* Bearer Token for Admin: admin\n* Bearer Token for students: {student_id} (Eg: 20BCT0332, 20BCT0306)\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n### Built With\n\nBuilt with the following tech stack:\n\n* Typescript - https://www.typescriptlang.org/\n* Node Js - https://nodejs.org/en/\n* Express Js - https://expressjs.com/\n* MySQL - https://www.mysql.com/\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\nWe recommend using our Docker image to build out the API's backend. You can do so via building out the image from the given link:\n```sh\n   https://hub.docker.com/repository/docker/jrs296/ffcs_api_image/general\n   ```\n\nTo get a local copy up and running via GitHub, follow these simple example steps:\n\n### Prerequisites\n\nInstall npm using the following command:\n\n  ```sh\n  npm install npm@latest -g\n  ```\n\n### Installation\n\n_Below is an example of how you can instruct your audience on installing and setting up your app. This template doesn't rely on any external dependencies or services._\n\n1. Clone the repo\n   ```sh\n   https://github.com/JRS296/FFCS-TypeScript-API.git\n   ```\n2. Install NPM packages\n   ```sh\n   npm install\n   ```\n3. Configure CORS as required to establish connection with frontend as required by CORS policy.\n   ```js\n   app.use(cors({ origin: \"https://dyte-hiring-docs.pages.dev\" })); //Cors origin ID\n   ```\n4. Configure MySQL on local machine. Go to ./MySQL/config.ts and configure data as required. \nHere is an example from the config.ts file that comes by default with this repository.\n   ```js\n   const connection = new Sequelize({ dialect: \"mysql\", host: \"localhost\", username: \"root\", password: \"123456\", database: \"ffcs\", port: 3307,\n    logging: false, models: [Faculty, Student, Course, RegCourses, Timings, StudentTimetable], });\n   ```\n\n5. Set up Postman, or any other API testing tool to interact with the Backend. You can also interact with the API directly through this link: \n\n6. And Remember,\n* Bearer Token for Admin: admin\n* Bearer Token for students: {student_id} (Eg: 20BCT0332, 20BCT0306)\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!-- ER Diagram --\u003e\n## Class Diagram\n\n![image](https://user-images.githubusercontent.com/70965472/222976404-5775b5a2-08ea-4ccc-9b21-f792d034a2b6.png)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Testing Results --\u003e\n## Testing Results\n\nResults of Python Environment Based Testing: (Link: https://github.com/dyte-submissions/vit-hiring-2023-phase1-test)\n\n![image](https://user-images.githubusercontent.com/70965472/222976933-bb4eef45-bef3-4ee1-8df2-069144128acf.png)\n![image](https://user-images.githubusercontent.com/70965472/222976965-2bef5c08-1937-478d-9829-f0fa67c4fc80.png)\n![image](https://user-images.githubusercontent.com/70965472/222976975-fb475aae-3ab6-45e4-bf98-4d86e0dcbeb5.png)\nTesting: \u003cb\u003eSUCCESSFULL\u003c/b\u003e\n\nResults of Jest Unit API Testing: (Link: https://jestjs.io/docs/getting-started)\n\n![image](https://user-images.githubusercontent.com/70965472/222977794-83376ecb-f115-4f63-9419-17fc7b8c03b0.png)\nTesting: \u003cb\u003eUnsuccessful - Was unable to properly configure Jest for typescript environment, along with lack of time to modularize modules for UNIT tests. Can implement it in due time if required.\u003c/b\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\nJonathan Rufus Samuel - jonathanrufus.samuel2020@vitstudent.ac.in\n\nProject Link: [https://github.com/dyte-submissions/vit-hiring-2023-phase-1-JRS296](https://github.com/dyte-submissions/vit-hiring-2023-phase-1-JRS296)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n## Acknowledgments\n\nI'd like to take some time out to thank Dyte for the opportunity to attempt this test, had an amazing time brainstorming and figuring out a solution to the problem at hand. :)\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!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/othneildrew/Best-README-Template.svg?style=for-the-badge\n[contributors-url]: https://github.com/othneildrew/Best-README-Template/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/othneildrew/Best-README-Template.svg?style=for-the-badge\n[forks-url]: https://github.com/othneildrew/Best-README-Template/network/members\n[stars-shield]: https://img.shields.io/github/stars/othneildrew/Best-README-Template.svg?style=for-the-badge\n[stars-url]: https://github.com/othneildrew/Best-README-Template/stargazers\n[issues-shield]: https://img.shields.io/github/issues/othneildrew/Best-README-Template.svg?style=for-the-badge\n[issues-url]: https://github.com/othneildrew/Best-README-Template/issues\n[license-shield]: https://img.shields.io/github/license/othneildrew/Best-README-Template.svg?style=for-the-badge\n[license-url]: https://github.com/othneildrew/Best-README-Template/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/othneildrew\n[product-screenshot]: images/screenshot.png\n[Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\n[Next-url]: https://nextjs.org/\n[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\n[React-url]: https://reactjs.org/\n[Vue.js]: https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge\u0026logo=vuedotjs\u0026logoColor=4FC08D\n[Vue-url]: https://vuejs.org/\n[Angular.io]: https://img.shields.io/badge/Angular-DD0031?style=for-the-badge\u0026logo=angular\u0026logoColor=white\n[Angular-url]: https://angular.io/\n[Svelte.dev]: https://img.shields.io/badge/Svelte-4A4A55?style=for-the-badge\u0026logo=svelte\u0026logoColor=FF3E00\n[Svelte-url]: https://svelte.dev/\n[Laravel.com]: https://img.shields.io/badge/Laravel-FF2D20?style=for-the-badge\u0026logo=laravel\u0026logoColor=white\n[Laravel-url]: https://laravel.com\n[Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\n[Bootstrap-url]: https://getbootstrap.com\n[JQuery.com]: https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge\u0026logo=jquery\u0026logoColor=white\n[JQuery-url]: https://jquery.com \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrs296%2Fffcs-typescript-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrs296%2Fffcs-typescript-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrs296%2Fffcs-typescript-api/lists"}