# Full Stack Technical Interview Question (Based on Measure) Most of what we do here is build systems that analyze our clients’ electricity usage, and calculate financial data from that. We then build apps to help users make sense of that data. Ultimately this data is mostly derived from two places: - **Meters**: devices installed onsite that monitor energy usage, usually for a whole building or part of a building. - **Bills**: energy bills from utility companies that also provide information on usage and cost. We receive these usually once a month. So let’s say you’re building a dashboard to manage all that data. You’re given the following requirements: 1. Users should be able to create, edit, delete __Buildings__ they want to monitor Sample fields: - building name - square footage - physical address 2. ...and create, edit, delete __Meters__ that are associated to Buildings (many to 1) Sample fields: - commodity (Electric, water, natural gas, etc.) - units (KWH for electricity) 3. ...and create, edit, delete __Bills__ that are associated to __Meters__ (many to 1) Sample fields: - consumption: the amount of energy used - period: the start date and end date of the period in which that consumption was measured - cost: the bill's total cost (based on consumption) 4. Users also need a "dashboard" page where they can view aggregated information on all their buildings. For now, the only thing you know is that users want some sort of visualization(s) showing 1. the total cost over time and... 2. total consumption over time Keep in mind that while you're building this simple first version of the app, there are some requirements on the horizon that you already know about: - Users have already requested other visualizations that you don't yet understand how to derive. You just know there will be other visualizations and likely other aggregations you'll need to build in the future. - You're the only developer assigned to building this so you have to solve every problem across the stack. You can use any tool you want. - You have a QA team, a graphic designer, and let's say a certain stake holder that can provide you with domain knowledge. How do you go about building this? Where do you start?