I mostly chose these components because I either wanted to learn about them or because the website I built into was already using them. Specifically I use Express/Node as the server - they accept the incoming POST request from the MVP PI which contains the image data, as well as the temperature and humidity data. I am running my Node server on a free tier Heroku server. It is working well, except after 30 minutes the server goes to sleep and it takes a few seconds for it to wake up the next time somebody accesses the website.
Node then stores the MVP data in MongoDB. I am using a database-as-a-service service called MLAB. They have a free tier as well. From there it’s just connecting to the MongoDB url in my Node code saving the data. They also have a web portal which is a convenient way to view my data through a GUI.
I use React as a front end which runs in the client. It’s a very nice way to develop websites - but has a steep learning curve as it kind of flips how websites are made around. I wouldn’t recommend it for people who don’t have a lot of time to devote to learning it. A template engine like Jinja would also be a good approach if one is trying to code a front end by hand.
It is! Here’s the server.js file which accepts the MVP data from the PI. It’s mixed in with code related to my portfolio website, but the (majority?) is MVP related code.
Here’s the MVPDataModel.js file which acts as the MongoDB model for storing the temperature and humidity data.
MVPImgModel.js is the model to store the image buffers.
The rest of the code in that repo is unrelated to the MVP project except for the React stuff which takes care of the dashboard UI. I’m pretty sure all my React stuff related to the MVP is in this folder.
I don’t currently have any plans for data entry through my dashboard.
I looked at / worked with CouchDB while building this project. It seems to be a similar NoSQL database like MongoDB with a good GUI like Mlab. I think it’s a good fit for the MVP project as it’s simple enough to grasp while still offering a robust, decoupled database solution - especially if it’s AWS hosted.
I like the idea of using ECharts as a charting software - from my brief look it seems to be a more complete solution to charting. If it can be avoided I would not suggest a more low level charting library like chartJS which I used. If a big chunk of data can be sent to the chart, and the library can handle things like day, month, year view that would be better than coding those things manually.
I haven’t used Vue or nuxt.js but they are popular and I am sure good solutions.
That tech stack seems like a good fit for the MVP needs. I agree the MVP project should aim to keep the tech as simple as possible so less components is definitely better.