🔗 Check out the live deployment demo here!
Warning: deployed app speeds were found to be much slower than local server speeds.
This project was bootstrapped using Meteor and coded using TypeScript and React hooks.
The server firsts parses the dataset (private/room-temperatures.csv
) and inserts them into a Meteor collection i.e., a MongoDB database.
On the client's end, the client requests data from the server-side according to the input date time range. From then on, the client manipulates the data further by downsampling the data as necessary and aggregating the data by room id for futher calculations.
The client then presents the filtered data using a time series graph using Plotly and a floor plan. Both the time series and floor plan is interactive and users can adjust the input parameters (i.e., date time range, sample granularity, visible rooms) through these components.
If you are new to Meteor, install Meteor first by following this quick start guide.
To deploy this application locally, first clone this repository and navigate to its directory. Then, in the terminal,
meteor npm install
to install all dependencies. Then,
meteor run
to run a local development build. The app will take a few minutes to intialize the data. Then, in the terminal, you will see
...
=> App running at: http://localhost:3000
Going to http://localhost:3000/ in your browser will then launch the app.
private/ ## Mock raw CSV room temperature data
server/ ## Server-side code for parsing and inserting the CSV data
client/ ## Container for the UI code and CSS styling
imports/
api/ ## Business logic for handling room temperature data
db/ ## Room temperature collection and custom types
ui/ ## Presentation logic and UI components
utils/ ## Convenience and auxiliary functions
This project is licensed under the MIT License - see the LICENSE file for details.
Thank you to the creator Flat Icons for temperature monitoring icon I used for the web app's favicon.