{"id":19671787,"url":"https://github.com/ressuman/devcamper-bootcamp-backend-directory-project","last_synced_at":"2026-04-30T12:34:38.460Z","repository":{"id":246019385,"uuid":"803689868","full_name":"ressuman/DevCamper-Bootcamp-Backend-Directory-Project","owner":"ressuman","description":"This project is a backend API for the DevCamper application, a bootcamp directory website. It showcases my ability to create RESTful APIs, handle complex database relationships, and implement robust CRUD operations.","archived":false,"fork":false,"pushed_at":"2025-04-19T23:30:48.000Z","size":22111,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-31T08:44:54.191Z","etag":null,"topics":["api-rest","backend","bcryptjs","expressjs","jwt-authentication","node-geocoder","nodejs","nodemailer"],"latest_commit_sha":null,"homepage":"https://ressuman-devcamper-bootcamp-backend.onrender.com/","language":"HTML","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/ressuman.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-05-21T07:51:59.000Z","updated_at":"2025-04-19T23:30:51.000Z","dependencies_parsed_at":"2025-04-20T00:36:33.175Z","dependency_job_id":null,"html_url":"https://github.com/ressuman/DevCamper-Bootcamp-Backend-Directory-Project","commit_stats":null,"previous_names":["ressuman/devcamper-bootcamp-backend-directory-project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ressuman/DevCamper-Bootcamp-Backend-Directory-Project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ressuman%2FDevCamper-Bootcamp-Backend-Directory-Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ressuman%2FDevCamper-Bootcamp-Backend-Directory-Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ressuman%2FDevCamper-Bootcamp-Backend-Directory-Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ressuman%2FDevCamper-Bootcamp-Backend-Directory-Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ressuman","download_url":"https://codeload.github.com/ressuman/DevCamper-Bootcamp-Backend-Directory-Project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ressuman%2FDevCamper-Bootcamp-Backend-Directory-Project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32465009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"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-rest","backend","bcryptjs","expressjs","jwt-authentication","node-geocoder","nodejs","nodemailer"],"created_at":"2024-11-11T17:09:45.385Z","updated_at":"2026-04-30T12:34:38.437Z","avatar_url":"https://github.com/ressuman.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DevCamper API\n\n\u003e Backend API for DevCamper application, which is a bootcamp directory website\n\n## Usage\n\nOpen the \"index.html\" file in the public folder via live server- by doing so you can have a preview of all the routes used in this application and use as such. eg: api/v1/bootcamps, api/v1/users\n\n## Install Dependencies\n\n```\nnpm install\n```\n\n## Run App\n\n```\n# Run in dev mode\n\nnpm run dev\n\n# Run in prod mode\n\nnpm start\n```\n\n### Database Seeder\n\nTo seed the database with users, bootcamps, courses and reviews with data from the \"\\_data\" folder, run\n\n### Destroy all data\n\nnode seeder -d\n\n### Import all data\n\nnode seeder -i\n\n- Version: 1.0.0\n- License: MIT\n\nHere is an expected gif of the preview of routes of the index.html\n![DevCamper Bootcamp gif](./public/devcamper-bootcamp.gif)\n\n# Bootcamp Learning Management System (LMS) API\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js](https://img.shields.io/badge/Node.js-18.x-green)](https://nodejs.org/)\n[![Express](https://img.shields.io/badge/Express-4.x-lightgrey)](https://expressjs.com/)\n\nA robust backend API for managing technical education programs, featuring secure authentication, role-based access control, and advanced data management capabilities.\n\n## 📌 Features\n\n### 🔒 Authentication \u0026 Security\n\n- JWT Authentication with HTTP-only cookies\n- Two-Factor Authentication (2FA) via email\n- Role-Based Access Control (User, Publisher, Admin)\n- Rate limiting (100 requests/15 minutes)\n- Helmet security headers\n- XSS protection \u0026 MongoDB sanitization\n\n### 🏫 Bootcamp Management\n\n- Geospatial search by location/radius\n- File upload for bootcamp photos\n- CRUD operations with advanced filtering\n- Average cost calculations\n- Multi-tenancy support\n\n### 📚 Course System\n\n- Curriculum management\n- Scholarship availability tracking\n- Automated tuition averaging\n- Skill level requirements\n- Relationship mapping with bootcamps\n\n### ⭐ Review System\n\n- Rating system (1-10 scale)\n- Automated average rating calculations\n- Unique user reviews per bootcamp\n- Rich text reviews with titles\n- Population of related data\n\n### 📊 Advanced Features\n\n- Pagination \u0026 sorting\n- Query filtering (gt, gte, lt, lte, in)\n- Database seeding utility\n- Email integration (SMTP)\n- Error handling middleware\n- API documentation (Swagger/OpenAPI)\n\n## 🛠 Technologies Used\n\n- **Runtime**: Node.js 18.x\n- **Framework**: Express 4.x\n- **Database**: MongoDB 6.x\n- **ODM**: Mongoose 7.x\n- **Security**:\n  - bcryptjs\n  - JWT\n  - Helmet\n  - xss-clean\n- **Utilities**:\n  - Nodemailer\n  - Slugify\n  - Node Geocoder\n  - Express Fileupload\n\n## 🚀 Installation\n\n1. Clone repository:\n\n```bash\ngit clone https://github.com/ressuman/DevCamper-Bootcamp-Backend-Directory-Project.git\ncd DevCamper-Bootcamp-Backend-Directory-Project\n```\n\n2. Install dependencies:\n\n```bash\nnpm install\n```\n\n3. Configure environment:\n\n```bash\ncp config/config.env.example config/config.env\n```\n\n4. Start server:\n\n```bash\n# Development\nnpm run dev\n\n# Production\nnpm start\n```\n\n## ⚙ Configuration\n\nUpdate `config/config.env` with your credentials:\n\n```ini\nNODE_ENV=development\nPORT=5193\nMONGO_URI=mongodb+srv://\u003cuser\u003e:\u003cpassword\u003e@cluster.mongodb.net/dbname\nJWT_SECRET=your_jwt_secret\nJWT_EXPIRE=30d\nSMTP_HOST=smtp.mailtrap.io\nSMTP_PORT=2525\nSMTP_USER=mailtrap_user\nSMTP_PASSWORD=mailtrap_password\nFILE_UPLOAD_PATH=./public/uploads\nMAX_FILE_UPLOAD=1000000 # 1MB\n```\n\n## 📚 API Documentation\n\nInteractive documentation available via Swagger UI:\n`http://localhost:5193/api-docs`\n\n### Example Request\n\n```bash\n# Get bootcamps within 10 miles of 02108\ncurl -X GET \"http://localhost:5193/api/v1/bootcamps/radius/02108/10\"\n```\n\n### Schemas\n\n| Resource | Fields                                                                 |\n| -------- | ---------------------------------------------------------------------- |\n| Bootcamp | name, description, careers, location, photo, housing, etc.             |\n| Course   | title, description, weeks, tuition, minimumSkill, scholarshipAvailable |\n| User     | name, email, role, password, resetPasswordToken, twoFactorCode         |\n| Review   | title, text, rating, bootcamp, user                                    |\n\n## 🔐 Security Implementation\n\n1. **Authentication**:\n\n   - JWT stored in HTTP-only cookies\n   - 2FA via email codes\n   - Password reset tokens with expiration\n\n2. **Authorization**:\n\n   - Role hierarchy (User \u003c Publisher \u003c Admin)\n   - Resource ownership validation\n   - Protected routes middleware\n\n3. **Validation**:\n\n   - Request body sanitization\n   - MongoDB operator injection prevention\n   - File type/size restrictions\n\n4. **Monitoring**:\n   - Rate limiting\n   - Request logging\n   - Error tracking\n\n## 📦 Database Models\n\n![ER Diagram](https://via.placeholder.com/800x400.png?text=ER+Diagram+Placeholder)\n\n**Key Relationships**:\n\n- Bootcamp ↔ Courses (1:M)\n- Bootcamp ↔ Reviews (1:M)\n- User ↔ Bootcamps (1:M)\n- User ↔ Courses (1:M)\n- User ↔ Reviews (1:M)\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by DevCamper project\n- Bootcamp industry best practices\n- Open source community contributions\n\nThis README provides:\n\n1. Clear installation/configuration instructions\n2. Comprehensive feature overview\n3. API documentation details\n4. Security implementation insights\n5. Technology stack visibility\n6. Database structure information\n7. Licensing and acknowledgments\n\nYou can enhance it further by:\n\n1. Adding actual ER diagrams\n2. Including screenshots of API documentation\n3. Adding CI/CD badges\n4. Expanding the testing section\n5. Adding deployment instructions\n6. Including contribution guidelines\n7. Adding a changelog section\n\n## Image\n\nHere is an expected gif/photos of the preview of the App(DevCamper Bootcamp LMS API)\n\n## ![DevCamper Bootcamp LMS API image](./image/devcamper.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fressuman%2Fdevcamper-bootcamp-backend-directory-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fressuman%2Fdevcamper-bootcamp-backend-directory-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fressuman%2Fdevcamper-bootcamp-backend-directory-project/lists"}