An example URL Shortener built using MongoDB, ExpressJS & ReactJS
Includes API Server utilities:
- morgan
- HTTP request logger middleware for node.js
- helmet
- Helmet helps you secure your Express apps by setting various HTTP headers. It's not a silver bullet, but it can help!
- @hapi/joi
- Joi is a powerful schema description language and data validator for JavaScript
- monk
- Monk is middleware used for consuming MongoDB within Node.JS
- nanoid
- NanoId is a tiny, secure, URL-friendly, unique string ID generator for JavaScript
- express-rate-limit
- express-rate-limit is a basic rate-limiting middleware for Express
Development utilities:
- dotenv
- Dotenv is a zero-dependency module that loads environment variables from a
.env
file intoprocess.env
- Dotenv is a zero-dependency module that loads environment variables from a
- nodemon
- nodemon is a tool that helps develop node.js based applications by automatically restarting the node application when file changes in the directory are detected.
- eslint
- ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code.
- mocha
- ☕️ Simple, flexible, fun JavaScript test framework for Node.js & The Browser ☕️
- supertest
- HTTP assertions made easy via superagent.
Steps | Action |
---|---|
Step 1. | cd server |
Step 2. | npm install |
Step 3. | cd ../client |
Step 4. | yarn install |
Step 5. | npm run build |
Step 6. | Copy ./build to ../server/client/build |
Step 7. | cd ../server/client/build |
Step 8. | Edit index.html |
Step 9. | Format HTML |
Step 10. | Copy the JavaScript script that isn't in an external file to /static/js/core.js < this is to avoid a frontend error |
Step 11. | Replace the script with <script src="/static/js/core.js"></script> |
Step 12. | Set the MONGODB_URI to <mongo_server>/url-shortener |
Step 13. | npm run start |
npm run start
npm run dev
Based-on create-react-app && create-express-api (https://www.npmjs.com/package/create-express-api) by CJ R. cj@null.computer (https://w3cj.now.sh)
Please consider supporting my projects, the more caffine I have, the quicker I can type.