Work in progress.
The project's objective is to create a Node.js app that continously monitors all vessels in a commercial fleet for the weather at their position and displays it through a friendly user interface. The user would be able to set vessels of interest and maybe even receive notifications in case of upcoming bad weather.
Tools and npm modules used:
- Node.js for Server-side runtime
- Express.js for HTTP communication with the client
- Puppeteer for web scrapping
- Pug as template engine
- Bootstrap for styling and reactive design
- Moment for keeping track of elapsed time on client side
- dotenv-flow for storing environment variables
- Debug for debugging on server side
- MongoDB noSQL database for storing the ships and their info
- Mongoose for interfacing with MongoDB
- Joi for input validation
- bcrypt for password hashing
- JSON Web Token for generating and validating JWTs
- Winston for logging
- Jest for unit testing
- Thunder Client VSCode extension for API calls testing

It currently runs on my Raspberry Pi 4 on Ubuntu Server x64 when it doesn't crash due to a Chromium memory leak. MongoDB runs locally on the Raspberry Pi.
MongoDB only supports x64 architecture and thankfully there is a Nodejs10 version that runs on ARM64.
In the current dev environment there's a crontab job @reboot sleep 10 && /home/ubuntu/_projects/Fleet-Weather/fleetweather.sh that executes the bash script which calls the npm script forever set in package.json to ensure the app is up and running after the weekly Raspberry Pi restart.