{"id":21840166,"url":"https://github.com/abdulrahmanaymann/software","last_synced_at":"2026-04-12T06:32:02.078Z","repository":{"id":160710672,"uuid":"635439797","full_name":"abdulrahmanaymann/Software","owner":"abdulrahmanaymann","description":"This Project called \"Software\", which follows SOLID principles, clean code rules, and uses dependency injection","archived":false,"fork":false,"pushed_at":"2023-05-09T16:09:51.000Z","size":187,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-18T23:43:05.200Z","etag":null,"topics":["clean-code","dependency-injection","expressjs","mysql-database","nodejs","oop","postman","restful-api","solid-principles"],"latest_commit_sha":null,"homepage":"","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/abdulrahmanaymann.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}},"created_at":"2023-05-02T17:42:48.000Z","updated_at":"2023-05-13T19:57:46.000Z","dependencies_parsed_at":"2023-08-23T14:24:28.172Z","dependency_job_id":null,"html_url":"https://github.com/abdulrahmanaymann/Software","commit_stats":null,"previous_names":["abdulrahmanaymann/software"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abdulrahmanaymann/Software","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulrahmanaymann%2FSoftware","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulrahmanaymann%2FSoftware/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulrahmanaymann%2FSoftware/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulrahmanaymann%2FSoftware/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abdulrahmanaymann","download_url":"https://codeload.github.com/abdulrahmanaymann/Software/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulrahmanaymann%2FSoftware/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31706764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["clean-code","dependency-injection","expressjs","mysql-database","nodejs","oop","postman","restful-api","solid-principles"],"created_at":"2024-11-27T21:24:53.809Z","updated_at":"2026-04-12T06:32:02.060Z","avatar_url":"https://github.com/abdulrahmanaymann.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Software\n\nSoftware is a web application that helps applicants find jobs and allows admins to manage job postings, qualifications, and applicants. This project is built with Node.js, Express.js, and MySQL database. It follows SOLID principles, clean code rules, and uses dependency injection.\n\n## Features\n\n### Admin User\n\n- Login/Logout\n- Manage jobs (Create, Read, Update, Delete)\n- Manage qualifications per job (Create, Read, Update, Delete)\n- Manage applicants (Create, Read, Update, Delete)\n- Accept or decline requests by the applicant (Create, Read, Update, Delete)\n- Show the history of applicant requests for all jobs\n\n### Applicant User\n\n- Login/Logout\n- Send a request to the admin with the required job\n- Show a history of job searches related to his account only\n\n## Technologies\n\n- Backend: Node.js 🚀 and Express.js 🌐✨\n- Database: MySQL 🐬\n\n## Installation\n\n1. Clone or download the repository\n2. Install dependencies using `npm install`\n3. Set up the MySQL database in the `dbConnection.js`\n4. Start the server with `npm start`\n\n## API Endpoints\n\n### Authentication\n\n- `POST /api/auth/login`: logs the user in and returns a token\n- `POST /api/auth/register`: registers a new user\n\n### Jobs\n\n- `GET /api/jobs/all`: gets all jobs\n- `POST /api/jobs`: creates a new job\n- `GET /api/jobs/job/:id`: gets a job by ID\n- `PUT /api/jobs/:id`: updates a job by ID\n- `DELETE /api/jobs/:id`: deletes a job by ID\n\n### Qualifications\n\n- `GET /api/qualifications/all`: gets all qualifications\n- `POST /api/qualifications`: creates a new qualification\n- `GET /api/qualifications/:id`: gets a qualification by ID\n- `PUT /api/qualifications/qualification/:id`: updates a qualification by ID\n- `DELETE /api/qualifications/:id`: deletes a qualification by ID\n\n### Applicants\n\n- `GET /api/applicants/all`: gets all applicants\n- `POST /api/applicants`: creates a new applicant\n- `GET /api/applicants/applicant/:id`: gets an applicant by ID\n- `PUT /api/applicants/:id`: updates an applicant by ID\n- `DELETE /api/applicants/:id`: deletes an applicant by ID\n\n### Requests\n\n- `GET /api/requests/all`: gets all requests\n- `POST /api/requests`: creates a new request\n- `GET /api/requests/request/:id`: gets a request by ID\n- `PUT /api/requests/:id`: updates a request by ID\n- `DELETE /api/requests/:id`: deletes a request by ID\n\n### Search\n\n- `GET /api/search//:id?position=\u003cposition\u003e\u0026offer=\u003coffer\u003e\u0026qualification=\u003cqualification\u003e`: searches for jobs based on the given parameters. Returns an array of job objects that match the search criteria.\n\n### Search History\n\n- `GET /api/search/history/:id`: gets the search history of the currently logged in applicant. Returns an array of search history objects that contain the search parameters and the timestamp of the search. \n\n© 2023 Software. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdulrahmanaymann%2Fsoftware","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdulrahmanaymann%2Fsoftware","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdulrahmanaymann%2Fsoftware/lists"}