record-cats

This project uses the MEAN stack:

Other tools and technologies used:

Prerequisites

  1. Install Node.js and MongoDB
  2. Install Angular CLI: npm i -g @angular/cli
  3. From project root folder install all the dependencies: npm i

Run

Development mode with files watching

npm run dev: concurrently execute MongoDB, Angular build, TypeScript compiler and Express server.

A window will automatically open at localhost:4200. Angular and Express files are being watched. Any change automatically creates a new bundle, restart Express server and reload your browser.

Production mode

npm run prod: run the project with a production bundle listening at localhost:3000

Manual mode

  1. Build frontend: npm run builddev for dev or npm run build for prod
  2. Build backend: npm run predev
  3. Run MongoDB: mongod
  4. Run the app: npm start

Docker

  1. sudo docker-compose up
  2. Go to localhost:3000

AWS EC2

  1. Create a EC2 Linux machine on AWS
  2. Edit the EC2 Security Group and add TCP port 3000 as an Inbound rule for Source 0.0.0.0/0
  3. Clone this repo into the EC2 machine
  4. If you use a remote MongoDB instance, edit .env file
  5. Run npm ci
  6. Run npm run build
  7. Run npm start
  8. The app is now running and listening on port 3000
  9. You can now visit the public IP of your AWS EC2 followed by the port, eg: 12.34.56.78:3000
  10. Tip: use pm2 to run the app instead of npm start, eg: pm2 start dist/server/app.js

Preview

Preview

Please open an issue if

  • you have any suggestion to improve this project
  • you noticed any problem or error

Running tests

Run ng test to execute the frontend unit tests via Karma.

Run npm run testbe to execute the backend tests via Jest (it requires mongod already running).

Running linters

Run npm run lint to execute Angular ESLint, HTML linting and SASS linting.

Further help

To get more help on the angular-cli use ng --help or go check out the Angular-CLI README.