Skip to content

Infrastructure and tools

im-samwong edited this page Sep 30, 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:

  • Angular: Angular will be used for developing the user interface. It’s a scalable framework ideal for building SPAs (Single Page Applications) with responsive design and strong support for data binding, routing, and UI interaction.

1.2 Mapping Tools:

  • Leaflet or OpenLayers (TBD): Both are open-source JavaScript libraries for embedding interactive maps. They allow custom map layers and can integrate with various data sources.

1.3 CSS Framework:

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

1.4 Testing:

  • Karma (Unit Testing) and Cypress or Protractor (End-to-End Testing) (TBD): To ensure the frontend is thoroughly tested.

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 or MySQL (TBD): These databases will be used for storing wildfire, weather, and geographic data. PostgreSQL is preferred for handling complex geographic data (PostGIS extension).

2.3 Data Integration:

  • Unsure at the moment

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:

  • Jenkins: Jenkins will automate the build, test, and deployment processes through a pipeline.
  • GitHub Actions (Alternative): We may consider GitHub Actions for CI/CD to keep everything integrated within the GitHub ecosystem, especially for lightweight, continuous deployment.

3.2 Static Code Analysis:

  • SonarQube: Integrated with Jenkins to ensure code quality through static analysis.
  • SonarCloud (Alternative): A free cloud-based version of SonarQube for open-source projects can be considered.

3.3 Containerization:

  • Docker: The platform will be containerized using Docker, enabling consistent deployment across development, staging, and production environments.

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:

  • ngx-logger: For logging in Angular 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