{"id":27555798,"url":"https://github.com/iand1013/vidly-api","last_synced_at":"2025-04-19T17:11:04.067Z","repository":{"id":251468962,"uuid":"836956391","full_name":"IanD1013/vidly-api","owner":"IanD1013","description":"A RESTful API for a video rental service built with Node.js, Express, and MongoDB. Developed as part of The Complete Node.js Course by Mosh Hamedani, this project showcases robust backend design, JWT authentication, input validation, and test-driven development.","archived":false,"fork":false,"pushed_at":"2025-04-02T02:11:11.000Z","size":164,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T03:21:11.459Z","etag":null,"topics":["backend","mern-stack","self-learning"],"latest_commit_sha":null,"homepage":"https://codewithmosh.com/p/the-complete-node-js-course","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/IanD1013.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}},"created_at":"2024-08-01T23:06:01.000Z","updated_at":"2025-04-02T02:14:32.000Z","dependencies_parsed_at":"2025-04-02T03:31:38.237Z","dependency_job_id":null,"html_url":"https://github.com/IanD1013/vidly-api","commit_stats":null,"previous_names":["iand1013/vidly-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IanD1013%2Fvidly-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IanD1013%2Fvidly-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IanD1013%2Fvidly-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IanD1013%2Fvidly-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IanD1013","download_url":"https://codeload.github.com/IanD1013/vidly-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249746041,"owners_count":21319581,"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":["backend","mern-stack","self-learning"],"created_at":"2025-04-19T17:11:00.162Z","updated_at":"2025-04-19T17:11:04.062Z","avatar_url":"https://github.com/IanD1013.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vidly - Video Rental API\n\nA RESTful API for a video rental service built with Node.js, Express, and MongoDB. This project is part of the [Complete Node.js Course](https://codewithmosh.com/p/the-complete-node-js-course) by Mosh Hamedani.\n\n## Features\n\n- RESTful API design\n- MongoDB database integration with Mongoose\n- JWT-based authentication\n- Input validation using Joi\n- Error handling middleware\n- Unit and integration testing\n- Test-driven development (TDD) practices\n- Logging system\n- Environment configuration management\n\n## Tech Stack\n\n- Node.js\n- Express.js\n- MongoDB\n- Mongoose\n- Jest (Testing)\n- Joi (Validation)\n- JSON Web Tokens (JWT)\n\n## Project Structure\n\n```\nvidly/\n├── config/         # Configuration files\n├── middleware/     # Custom middleware\n├── models/         # Database models\n├── routes/         # API routes\n├── startup/        # Application startup logic\n├── tests/          # Test files\n├── public/         # Static files\n└── playground/     # Learning and testing files\n```\n\n## Getting Started\n\n1. Clone the repository\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n3. Create a `.env` file in the root directory with your environment variables:\n   ```\n   PORT=3000\n   MONGODB_URI=your_mongodb_connection_string\n   JWT_PRIVATE_KEY=your_jwt_private_key\n   ```\n4. Start the server:\n   ```bash\n   npm start\n   ```\n\n## API Endpoints\n\n- `GET /api/genres` - Get all genres\n- `POST /api/genres` - Create a new genre\n- `GET /api/genres/:id` - Get a specific genre\n- `PUT /api/genres/:id` - Update a genre\n- `DELETE /api/genres/:id` - Delete a genre\n\n- `GET /api/customers` - Get all customers\n- `POST /api/customers` - Create a new customer\n- `GET /api/customers/:id` - Get a specific customer\n- `PUT /api/customers/:id` - Update a customer\n- `DELETE /api/customers/:id` - Delete a customer\n\n- `GET /api/movies` - Get all movies\n- `POST /api/movies` - Create a new movie\n- `GET /api/movies/:id` - Get a specific movie\n- `PUT /api/movies/:id` - Update a movie\n- `DELETE /api/movies/:id` - Delete a movie\n\n- `POST /api/returns` - Return a movie\n- `POST /api/rentals` - Rent a movie\n\n## Testing\n\nRun tests:\n```bash\nnpm test\n```\n\nRun tests with coverage:\n```bash\nnpm run test:coverage\n```\n\n## Course Content\n\nThis project covers:\n- Node.js fundamentals\n- Express.js framework\n- MongoDB and Mongoose\n- RESTful API design\n- Authentication and authorization\n- Error handling\n- Input validation\n- Testing (Unit, Integration, TDD)\n- Deployment\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiand1013%2Fvidly-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiand1013%2Fvidly-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiand1013%2Fvidly-api/lists"}