{"id":21373346,"url":"https://github.com/duquejo/bootcamp-project","last_synced_at":"2026-04-11T15:36:02.488Z","repository":{"id":46410374,"uuid":"414457073","full_name":"duquejo/Bootcamp-Project","owner":"duquejo","description":"Final Bootcamp Project - Built purely in Node JS","archived":false,"fork":false,"pushed_at":"2021-10-16T16:05:20.000Z","size":36985,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-22T21:16:13.966Z","etag":null,"topics":["express","javascript","mongodb","mongoose","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"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/duquejo.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":"2021-10-07T04:13:00.000Z","updated_at":"2021-10-16T16:05:22.000Z","dependencies_parsed_at":"2022-07-22T11:02:19.173Z","dependency_job_id":null,"html_url":"https://github.com/duquejo/Bootcamp-Project","commit_stats":null,"previous_names":["duquejo/bootcamp-project"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duquejo%2FBootcamp-Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duquejo%2FBootcamp-Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duquejo%2FBootcamp-Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duquejo%2FBootcamp-Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duquejo","download_url":"https://codeload.github.com/duquejo/Bootcamp-Project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243847061,"owners_count":20357317,"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":["express","javascript","mongodb","mongoose","nodejs"],"created_at":"2024-11-22T08:27:30.707Z","updated_at":"2025-12-31T00:21:01.662Z","avatar_url":"https://github.com/duquejo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to my Node JS Final Project!\n\n![Chilltime Logo](/public/images/ChillTime.png)\n## Chilltime Video App \n*Version:* v1.1.0\n\n[![made-with-javascript](https://img.shields.io/badge/Made%20with-JavaScript-1f425f.svg)](https://www.javascript.com)\n[![made-with-nodejs](https://img.shields.io/badge/Made_with-Node_JS-green.svg)](https://nodejs.org/es/)\n[![Project Version](https://img.shields.io/badge/Version-1.1.0-brightgreen)](https://github.com/duquejo01/Bootcamp-Project)\n\n[![JWT Compatible](http://jwt.io/img/badge-compatible.svg)](https://jwt.io/)\n\n\n## Project dependencies and development dependencies\n\n- *Dependencies*\n  - *[axios](https://www.npmjs.com/package/axios)* (0.22.0): HTTP REST Client for the frontend requests.\n  - *[bootstrap](https://www.npmjs.com/package/bootstrap)* (5.1.2): Frontend framework for quickly sites building (Mobile-first, responsive).\n  - *[bad-words](https://www.npmjs.com/package/bad-words)* (3.0.4): Analize strings and check their profanity\n  - *[bcryptjs](https://www.npmjs.com/package/bcryptjs)* (2.4.3): Encrypt and validates password strings.\n  - *[express](https://www.npmjs.com/package/express)* (4.17.1): Server management module.\n  - *[cookie-parser](https://www.npmjs.com/package/cookie-parser)* (1.4.5): Handles User sessions in the app using server cookies.\n  - *[ffmpeg-static](https://www.npmjs.com/package/ffmpeg-static)* (4.4.0): Static _ffmpeg_ dependencies based in the host OS.\n  - *[ffprobe-static](https://www.npmjs.com/package/ffprobe-static)* (3.0.0): Static _ffprobe_ dependencies based in the host OS.\n  - *[fluent-ffmpeg](https://www.npmjs.com/package/fluent-ffmpeg)* (2.1.2): A fluent ffmpeg API for video manipulation and processing.\n  - *[hbs](https://www.npmjs.com/package/hbs)* (4.1.2): Handlebars mustache template frontend system.\n  - *[moment](https://www.npmjs.com/package/moment)* (2.29.1): Time manipulation and datatime management library.\n  - *[mongodb](https://www.npmjs.com/package/mongodb)* (4.1.2): Documental JSON Database (NoSQL)\n  - *[mongoose](https://www.npmjs.com/package/mongoose)* (6.0.8): MongoDB speciallized ODM library.\n  - *[multer](https://www.npmjs.com/package/multer)* (1.4.3): File handling/Uploading module. \n  - *[node-sass-middleware](https://www.npmjs.com/package/node-sass-middleware)* (0.11.0): Node JS middleware for compiling and building CSS through SASS/SCSS files.\n  - *[validator](https://www.npmjs.com/package/validator)* (13.6.0): Allows backend to manage complex validations.\n\n- *Development dependencies*\n  - *[env-cmd](https://www.npmjs.com/package/env-cmd)*: (10.1.0): Enviroment variables module.\n  - *[jest](https://www.npmjs.com/package/jest)*: (27.2.5): Node JS Testing suite with mocking support.\n  - *[nodemon](https://www.npmjs.com/package/nodemon)* (2.0.13): Server demon for file changes listening and live server updating.\n  - *[supertest](https://www.npmjs.com/package/supertest)*: (6.1.6): Boosts Jest with asyncronous tasks and more HTTP Request testing support.\n\n### Quick links for the Node JS Bootcamp memories \u0026 public projects.\n- [Bootcamp memories Hub](https://github.com/duquejo01/BootCamp-Node-JS)\n- [Weather App Git](https://github.com/duquejo01/Weather-App-Node): GIT Source.\n- [Weather App Demo (Frontend+Backend)](https://duque-weather-application.herokuapp.com/): Live Weather App Public Demo.\n- [Task Manager App Git](https://github.com/duquejo01/Task-Manager): GIT Source.\n- [Task Manager App Demo (Backend)](https://duque-task-manager.herokuapp.com/): Live Task Manager App Public Demo.\n- [Chat App Git](https://github.com/duquejo01/Chat-App): GIT Source.\n- [Chat App Demo (Frontend+Backend)](https://duque-chat-app.herokuapp.com/): Live Chat App Public Demo.\n\n## Node JS _package.json_ config\nThe automated Node JS commands are _start_, _seed_, _dev_, and _test_:\n\n```sh\n  ...\n  \"scripts\": {\n    \"start\": \"node src/app.js\",\n    \"seed\": \"env-cmd -f ./src/config/.env node ./src/utils/seed.js\",\n    \"dev\": \"env-cmd -f ./src/config/.env nodemon ./app.js -e js,hbs\",\n    \"test\": \"env-cmd -f ./src/config/test.env jest --watch --runInBand\"\n  },\n  ...\n\n```\n\nThese commands have a reason in specific, the command `start` is for production purposes, `seed` is for the first database run and also app cleanse tasks, `dev` por development purposes, and `test` for running automated unit tests over the defined app routes.\n\n## It's Chilltime setup\nAs I said in the first section, the app has a .env config support... So, if you want to run locally/our server this project, you need to follow this steps first.\n\n1. Install NPM dependencies \u0026 development dependencies. `npm i` (You need to have installed Node in the host server).\n2. Copy/paste the `.env.example` file located in `src/config/` directory and rename it as `.env`\n3. Complete the following fields:\n\n```.env\n\n# Server variables\n\nAPP_PORT=\"Express Listening Port or 3000 by default\"\n\nMONGODB_URL=\"MongoDB URL, with leading 'mongodb://' config string.\"\nMONGODB_USER=\"MongoDB User\"\nMONGODB_PASSWORD=\"MongoDB Password\"\n\nUPLOADS_DIR= \"Custom app uploads directory, by default is 'public/uploads\"\n\nJWT_SECRET=\"Secret JWT Key String\"\n\n```\n4. Run `npm run seed` to populate the users and some categories collection in the MongoDB database. It will include a development user for you.\n5. Execute `npm run dev` for quick development deployment.\n6. Navigate over `http://localhost:3000` (Or your custom port) and try to login here: `http://localhost:3000/login` (Or your custom port) with this demo credentials:\n\n```\n\nUser 1:\nUsername: demo\nEmail: jose@demo.com\nPassword: demo123*\n\nUser 2:\nUsername: demo2\nEmail: andrea@demo.com\nPassword: demo123*\n\n```\n\n\n## It's Chilltime test setup\nIf you want to run the automated unit tests, continue with the following steps:\n\n1. Install NPM dependencies \u0026 development dependencies. `npm i` (You need to have installed Node in the host server).\n2. Copy/paste the `.env.example` file located in `src/config/` directory and rename it as `test.env`.\n3. Complete the following fields:\n\n```.env\n\n# Server variables\n\nAPP_PORT=\"Express Listening Port, It's recommended to use 0\"\n\nMONGODB_URL=\"MongoDB Test URL, with leading mongodb:// config string.\"\nMONGODB_USER=\"MongoDB User\"\nMONGODB_PASSWORD=\"MongoDB Password\"\n\nUPLOADS_DIR= \"Check step 4 or public/uploads\"\n\nJWT_SECRET=\"Secret JWT Key String\"\n\n```\n\n4. If you want to run tests without removing the uploaded uploads, please configure `UPLOADS_DIR` in the `test.env` file, or just use public/uploads like a development suite. \n5. Take care if you want to run the automated tests in the main dev/prod uploads directory, that's because these testing tasks clean the whole database constantly.\n6. Execute `npm run test` for quick testing deployment.\n\n## Notes about *ffmpeg* and *ffprobe*\n\n\u003e FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.\n\nThis video codecs are supported in my app, I'm using this for the auto video thumbnail generation. But.. It can open up the possibilities to make a *LOT* of things with the uploaded videos:\n\n- Video standarization: Convert all sources to a general one... (Web friendly standard - Like webm).\n- Video compressing \u0026 optimization.\n- Video quick view (Like a gif or short video) support.\n\nThe 'fmpeg-static' and 'ffprobe-static' dependencies enable the native support for quickly implementation. It will analize the current OS and will install the best option.\n\n## Future updates/improvements\n\n- Users management.\n- User register\n- User avatar uploading support.\n- Video Standarization.\n- Video Optimization.\n- Quick Peek Video support (Like youtube).\n- Refactor Categories \u0026 Videos model relationship.\n- Tests coverage over 100% (Including cookie unit tests).\n- Commenting system support.\n- Use React/Angular/Vue to serve the frontend.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduquejo%2Fbootcamp-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduquejo%2Fbootcamp-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduquejo%2Fbootcamp-project/lists"}