{"id":26027037,"url":"https://github.com/nhoangkiet35/devcamper-api","last_synced_at":"2026-04-07T18:31:47.683Z","repository":{"id":228126275,"uuid":"773232851","full_name":"nhoangkiet35/devcamper-api","owner":"nhoangkiet35","description":"REST API DevCamper-API Backend","archived":false,"fork":false,"pushed_at":"2024-08-02T10:37:46.000Z","size":945,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T14:27:40.240Z","etag":null,"topics":["advanced-javascript","expressjs","mongodb","mongoose","nodejs"],"latest_commit_sha":null,"homepage":"https://devcamper-api-one.vercel.app/api/v1/bootcamps","language":"JavaScript","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/nhoangkiet35.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-03-17T05:05:20.000Z","updated_at":"2024-09-22T08:21:45.000Z","dependencies_parsed_at":"2024-03-28T15:29:15.393Z","dependency_job_id":"754b0d53-a95b-497f-a3bd-1451188c7747","html_url":"https://github.com/nhoangkiet35/devcamper-api","commit_stats":null,"previous_names":["nguyenhhkiet/devcamper-api","nhoangkiet35/devcamper-api"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nhoangkiet35/devcamper-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nhoangkiet35%2Fdevcamper-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nhoangkiet35%2Fdevcamper-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nhoangkiet35%2Fdevcamper-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nhoangkiet35%2Fdevcamper-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nhoangkiet35","download_url":"https://codeload.github.com/nhoangkiet35/devcamper-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nhoangkiet35%2Fdevcamper-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31524524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"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":["advanced-javascript","expressjs","mongodb","mongoose","nodejs"],"created_at":"2025-03-06T15:33:26.781Z","updated_at":"2026-04-07T18:31:47.648Z","avatar_url":"https://github.com/nhoangkiet35.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Node.JS API for Devcamper\n\n\u003e Project Description DevCamper is a fully functional application that allows users to search, create, manage, and evaluate bootcamps. With rich features such as pagination, filtering, and authentication, this project provides a powerful platform for managing and evaluating bootcamp courses. Security is a top priority with encryption mechanisms, common attack protection, and request rate limiting.\n\n## Usage\n\n1. Create and configure the `config/config.env` file with your settings.\n2. Install dependencies and manage the database:\n   ```bash\n   cd devcamper-api\n   yarn\n   node seeder -i  # Create database\n   node seeder -d  # Delete database\n   ```\n\n## Tech Stack\n\n- Node.js / Express.js\n- Mongoose\n- Husky / Prettier / ESLint\n- MongoDB\n\n## Documentation\n\n- [DevCamper API Documentation](https://documentation-devcamperapi.netlify.app/)\n- [Docgen](https://github.com/thedevsaddam/docgen?tab=readme-ov-file)\n\n### API Endpoints\n\n#### Base URL: `/api/v1/`\n\n| Resource                | GET           | POST                                    | PUT                 | DELETE       |\n|-------------------------|---------------|----------------------------------------|---------------------|--------------|\n| **Bootcamps**           | `/`, `/:id`   | `/`                                    | `/:id`, `/:id/photo`| `/:id`       |\n| **Courses**             | `/`, `/:id`   |                                        | `/:id`              | `/:id`       |\n| **Reviews**             |               |                                        |                     |              |\n| **Auth**                | `/me`         | `/register`, `/login`, `/forgetpassword`| `/updatedetails`    |              |\n| **Forget Password**     |               |                                        | `/:resettoken`      |              |\n| **Users**               | `/`, `/:id`   | `/`                                    | `/:id`              | `/:id`       |\n\n**Query Parameters:**\n\n- Filter: `housing=true\u0026averageCost[lte]=100`\n- Select: `select=name\u0026sort=-name`\n- Pagination: `page=2\u0026limit=10`\n\n### Bootcamps\n\n- **List**: All bootcamps with pagination, filtering, and field selection.\n- **Search**: By radius from a zipcode.\n- **Create**: Authenticated users with roles \"publisher\" or \"admin\".\n- **Update/Delete**: Owner only.\n- **Photo Upload**: Owner only.\n- **Calculate**: Average course cost and review rating.\n\n### Courses\n\n- **List**: All or specific bootcamp's courses with pagination and filtering.\n- **Create/Update/Delete**: Authenticated users with roles \"publisher\" or \"admin\".\n\n### Reviews\n\n- **List**: All reviews or specific bootcamp's reviews with pagination and filtering.\n- **Create/Update/Delete**: Authenticated users with roles \"user\" or \"admin\".\n\n### Users \u0026 Authentication\n\n- **JWT/Cookie**: For authentication, with a 30-day expiry.\n- **Registration/Login**: User roles include \"user\" or \"publisher\".\n- **Password Reset**: Request reset with a hashed token valid for 10 minutes.\n- **CRUD Operations**: Admin-only for user management.\n\n## Security\n\n- Password and token encryption\n- XSS prevention\n- NoSQL injection prevention\n- Rate limiting: 100 requests per 10 minutes\n- HTTP parameter pollution prevention\n- Security headers (helmet)\n- CORS enabled for public access\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnhoangkiet35%2Fdevcamper-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnhoangkiet35%2Fdevcamper-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnhoangkiet35%2Fdevcamper-api/lists"}