Semester Project for the Software-as-a-Service Technologies course, during the 8th semester of the School of Electrical and Computer Engineering at the National Technical University of Athens.
We have developed a SaaS web application, Energy Live 2022, that allows users to monitor electricity market prices in Europe through their browser. The data, which is made available as open data, will be collected automatically by the application, through an API connection, and will be displayed on the website as a chart. Users must have a valid paid subscription to the application to be able to use it.
- Selection of energy market quantity (Actual total load, Generation per type, Cross border flows), country and, if applicable, other parameters, as well as the starting date of the visualisation
- Display of the values of the quantity in a chart, starting from the selected date and ending at the current date, with the option to update the chart when new data are added
- Option to download the data in a CSV file, or download the chart image
- Sign in via the "Sign in with Google" service
For the development of the application, we used the following tools:
- Design and architecture: Visual Paradigm CE
- Development: Node.js, Express.js, React.js, Recharts, Google Firebase
- Source code and agile project management: GitHub
- Deployment: Google Cloud Firestore, Google Firebase Hosting, Google Cloud Run
- Testing: jMeter
For the development of our web application, we used the Scrum framework. The development was split into 3 main sprints.
The initial sprint had, mostly, to do with the architecture of our project and the listing of the different microservices needed. The second sprint was dedicated to the development of the application's codebase, as well as an initial deployment of the various microservices on the cloud. During the third sprint we made our final touches or changes to the codebase and architecture, while performing the testing of our application, after it had been redeployed on the cloud.
We used Google Cloud Firestore, Google Firebase Hosting and Google Cloud Run to deploy components of our project.
The NoSQL database is deployed on the Google Cloud Firestore. Our data is stored, updated and retrieved through the useful tools provided by the framework, using the Node.js SDK.
The web application is deployed on Google Firebase Hosting. The link for our web application is available at the top of this README. This was done through the Firebase CLI (and npm) using the following commands under the /frontend
directory:
firebase init
npm run build
firebase deploy
The microservices were deployed on the Google Cloud Run service. Each microservice was deployed as a separate service, inside a container and running on a specific port, specified in each /microservice-directory/config/dev.env
PORT variable. This was done through the GCloud CLI using the following command for each microservice (region is set to "europe-west3"):
gcloud run deploy --source microservice-directory --port PORT
For the SDK Setup, place the following, together with the config based on the app configuration found here, at /frontend/src/Firebase/firebase.js
:
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
const config = {
// Add the SDK firebase config here
};
const app = initializeApp(config);
export const auth = getAuth(app);
export default app;
For the Firebase Admin SDK, generate a new private key here and place it under all the following folders:
/agpt-send-data/config/
/agpt-update-DB/config/
/atl-send-data/config/
/atl-update-DB/config/
/ff-send-data/config/
/ff-update-DB/config/
/handle-plan/config/
/login-session/config/
/orchestrator/config/