{"id":26415199,"url":"https://github.com/mugilan-codes/placements-api","last_synced_at":"2026-04-11T00:43:38.165Z","repository":{"id":43136957,"uuid":"314634459","full_name":"Mugilan-Codes/placements-api","owner":"Mugilan-Codes","description":"Placements API for Anna University (CUIC) using MySQL DB","archived":false,"fork":false,"pushed_at":"2022-03-16T15:11:40.000Z","size":1872,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-03-04T09:44:31.009Z","etag":null,"topics":["babel","express-js","knexjs","mysql","nodejs","rest-api"],"latest_commit_sha":null,"homepage":"https://fathomless-earth-59931.herokuapp.com/","language":"JavaScript","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/Mugilan-Codes.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}},"created_at":"2020-11-20T18:14:24.000Z","updated_at":"2022-03-15T17:38:27.000Z","dependencies_parsed_at":"2022-08-30T10:31:50.353Z","dependency_job_id":null,"html_url":"https://github.com/Mugilan-Codes/placements-api","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugilan-Codes%2Fplacements-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugilan-Codes%2Fplacements-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugilan-Codes%2Fplacements-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugilan-Codes%2Fplacements-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mugilan-Codes","download_url":"https://codeload.github.com/Mugilan-Codes/placements-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244130304,"owners_count":20402756,"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":["babel","express-js","knexjs","mysql","nodejs","rest-api"],"created_at":"2025-03-18T00:17:50.456Z","updated_at":"2025-12-31T00:17:12.148Z","avatar_url":"https://github.com/Mugilan-Codes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Placements API\n\n## Anna University CUIC app for Placements\n\n### TODO\n\n- add https\n- store refresh tokens in database\n- check migrations file to replace raw implementation\n- make a fresh migration file to initialize all tables in a single file\n- Caching using Redis.\n- use express-rate-limit \u0026 express-slow-down\n- Listing `start_date` format should be `yyyy-mm-dd`. ([@hapi/joi-date](https://www.npmjs.com/package/@hapi/joi-date))\n- Create website for admin (use CMS or react.js or next.js)\n- Deploy using AWS EC2 container and use Amazon SES with it\n- verify Email and reset password.\n- Check for Valid date before adding listing.\n- Send proper errors to frontend. Including Joi Validation and Database errors.\n- Implement global error handler\n- [Node.js + MySQL - Boilerplate API with Email Sign Up, Verification, Authentication \u0026 Forgot Password](https://jasonwatmore.com/post/2020/09/08/nodejs-mysql-boilerplate-api-with-email-sign-up-verification-authentication-forgot-password)\n- Migration TODO's\n  - Change id of each table to UUID like values\n  - Set Triggers to enforce uniqueness across tables\n  - Add created_by \u0026 updated_by admin details for each course\n  - Add Course degree, type, \u0026 name as a criteria to listings\n  - start_time \u0026 end_date to listings\n  - created_by \u0026 updated_by admins to listings\n  - Separate table to hold active refresh tokens\n- [How to get the full URL in Express?](https://stackoverflow.com/a/10185427/12381908)\n\n### Sources\n\n- [How to Use Nodemailer to Send Emails from Your Node.js Server](https://www.freecodecamp.org/news/use-nodemailer-to-send-emails-from-your-node-js-server/)\n- [How to send email with Node.js?](https://netcorecloud.com/tutorials/how-to-send-email-with-node-js/)\n\n### Create Tables\n\n- Create MySQL user and move into it.\n- source the init.sql file by using `source init.sql`.\n- Knex Config\n\n  - Init\n\n    ```sh\n    knex init --cwd ./src\n    ```\n\n  - Create\n  \n    ```sh\n     knex migrate:make --cwd ./src create_admin_table\n     knex migrate:make --cwd ./src create_course_table\n     knex migrate:make --cwd ./src create_student_table\n     knex migrate:make --cwd ./src create_marks_table\n     knex migrate:make --cwd ./src add_check_to_marks_table\n     knex migrate:make --cwd ./src create_education_table\n     knex migrate:make --cwd ./src add_check_to_education_table\n     knex migrate:make --cwd ./src create_listings_table\n     knex migrate:make --cwd ./src add_check_to_listings_table\n    ```\n\n  - Seed\n\n    ```sh\n    knex seed:make --cwd ./src 01_courses\n    ```\n\n  - Make the Migrations and Seed the database\n\n    ```sh\n    knex migrate:latest --knexfile ./src/knexfile.js\n    knex seed:run --knexfile ./src/knexfile.js\n    ```\n\n### How to Deploy\n\n1. Move to production branch if it exists\n2. commit changes and push it to heroku\n3. add config vars and add db as add on\n\n### Routes TODO\n\n`Admin`\n\n- [X] Register\n- [X] Login\n- [ ] Logout\n- [X] Get One Student\n- [X] Get All Students\n- [X] Get All Students (separated by emailUnverifed and adminVerified \u0026 adminUnVerified)\n- [ ] Verify Students\n- [ ] Delete Student\n- [X] Add Course\n- [X] Update Course\n- [X] Delete Course\n- [X] Get One Course\n- [X] Add Listing\n- [X] Update Listing\n- [X] Get All Listings\n- [ ] Delete All Listings\n- [X] Get One Listing\n- [X] Delete One Listing\n- [ ] Delete Multiple Listings\n\n`Student`\n\n- [X] Register\n- [X] Verify Email\n- [X] Login\n- [ ] Logout\n- [X] Get Student Detail\n- [X] Update Student\n- [X] Add Marks\n- [X] Update Marks\n- [X] Add Education\n- [X] Update Education\n- [ ] Forgot/Reset Password\n- [X] Get All Listings with Eligibilty\n- [X] Get One Listing with Eligibilty\n\n`Common`\n\n- [X] Get All Courses\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmugilan-codes%2Fplacements-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmugilan-codes%2Fplacements-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmugilan-codes%2Fplacements-api/lists"}