Skip to content

Infrastructure and tools

LiamDaigle edited this page Nov 6, 2024 · 7 revisions

For each library, framework, database, tool, etc

Tech Stack Proposition

Abstract

This tech stack is a proposed solution for building the wildfire visualization platform. It is designed to create a scalable, maintainable, and well-tested system using modern frameworks and DevOps practices. The tech stack outlined below has been agreed upon by the development team and is under review by the stakeholders.

The platform’s current focus is to visualize historical wildfire data while ensuring the infrastructure can support future simulations and communication protocols. Free alternatives such as GitHub Actions and SonarQube are also being considered to minimize costs.


1. Frontend

1.1 Framework:

  • React: React will be used for developing the user interface. It's a very strong and reliable frontend UI that excels in creating dynamic UI components. This is perfect for what we need, as we will be dynamically loading a lot of data from our backend to the frontend.

1.2 Mapping Tools:

  • OpenLayers: OpenLayers is an open-source JavaScript library for embedding interactive maps. It will allows custom map layers and can integrate with various data sources.

1.3 CSS Framework:

  • Tailwind CSS: These frameworks simplify the design process, ensuring the interface is responsive and visually appealing.

1.4 Testing:

  • Jest (Unit Testing) and Cypress (End-to-End Testing): Jest is fully integrated into the React ecosystem, meaning that it will allow us to create unit tests without worrying about conflicts between the libraries. Cypress is an end-to-end testing tool that our team is very familiar with. It allows for easy and efficient end-to-end testing.

2. Backend

2.1 Framework:

  • Spring Boot (Java): A robust framework for building scalable backends, providing easy integration with databases and external APIs.

2.2 Database:

  • PostgreSQL: This database will be used for storing wildfire, weather, and geographic data. PostgreSQL is the preferred relational database for handling complex geographic data (PostGIS extension).

2.3 Data Integration:

  • N/A

2.4 Testing:

  • JUnit and Spring Test: These will be used for unit and integration testing in the backend.

3. CI/CD and DevOps

3.1 CI/CD Tools:

  • GitHub Actions: Github Actions simplifies the CI/CD process by allowing easy creation of workflows using the .yml file type as well as being fully integrated into our codebase.

3.2 Static Code Analysis:

  • SonarQube: Integrated with Github Actions to ensure code quality through static analysis.
  • SonarCloud: A free cloud-based version of SonarQube for open-source projects that runs on every PR.

3.3 Containerization:

  • Docker: The platform will be containerized using Docker, enabling consistent deployment across development, staging, and production environments. Images will be saved on the cloud platform Docker Hub.

4. Logging

4.1 Backend:

  • Logback (with SLF4J): A widely-used logging framework in the Java ecosystem, supporting various logging levels (INFO, DEBUG, ERROR).

4.2 Frontend:

  • react-logger: For logging in React applications, to track frontend errors and warnings.

5. Infrastructure

5.1 Local Deployment:

  • The project will be deployed on CRIM’s internal servers. Data will be stored locally for performance optimization, and public APIs will be integrated when necessary.

5.2 Staging Environment:

  • A staging server will be set up for testing new features before pushing to production.

Conclusion

This tech stack provides a modern and scalable approach to developing the wildfire visualization platform. The team is considering free alternatives (GitHub Actions, SonarCloud) to optimize costs while maintaining a robust development and deployment process.

This proposal is currently under review by stakeholders, and any feedback will be incorporated into the final stack selection.

Clone this wiki locally