Skip to content

crim-ca/WildfireVisualizationProject

Repository files navigation

Wildfire Visualization Platform

CI Docker Image CI E2E Pipeline Release

Release Demos

Click to expand

Project Summary

The Wildfire Visualization Platform is an innovative tool designed to provide historical data on wildfires. The platform integrates data from multiple sources such as weather APIs, geographic data, and wildfire propagation models to offer data scientists and climate scientists a comprehensive view of wildfire events. Using open-source data visualization tools, it aims to enhance decision-making and provide predictive insights for wildfire management.

Project Documentation

Development Process

Project Planning

Compliance and Security

User Testing

Most Important Files and Tests

Click to expand
File path with clickable GitHub link Purpose
docker-compose.yml Backbone of application, contains all configurations for services and resource allocations.
MapContext.tsx Glue for the frontend, contains all the shared attributes across all components.
MapView.tsx Component for rendering the map, serves as the background of our app.
DataService.java Fetches information from external API, and applies application logic.
StacRepository.java Communicates with the database, inserting and deleting entries.
Test file path with clickable GitHub link Purpose
loads End to end test ensuring proper loading of available datasets
loads End to end test ensuring proper loading of metadata values from the selected dataset
runs properly when sped up End to end test that ensure the wildfire simulation runs properly, even when sped up
registerGeoTIFF_shouldReturnTrue_onSuccess Unit test ensuring proper functionality when registering a GeoTIFF (file responsible for loading weather assets)
processGeoTIFF_shouldReturnTrue_onSuccess Unit test ensuring proper functionality when processing a GeoTIFF (downloading and storing in GeoServer and saving layer URL in DB)

Team Members

Click to expand
Name Student ID GitHub ID Email Address
Wong, Samuel 40209013 im-samwong samuel.wong60@gmail.com
Dubois, Gabriel 40209252 Adissuu gabrieldubois.eng@gmail.com
Hilout, Yasmine 40214158 yasminehilout yasminehilout@gmail.com
Fetanat, Ali 40158208 Fetyali7 fetyali7@gmail.com
Frattolillo, Philip 40192245 PFratt phil.fratt@gmail.com
Villemure, Louis 40210315 lo-vil louis.villemure@gmail.com
Daigle, Liam 40207583 LiamDaigle liam.daigle@gmail.com
Keating, Kade 40166656 Kadestery kadekeating@gmail.com
Cheng, Justin 40210279 justncheng chengjustin2002@gmail.com
Guertin, Xavier 40213525 XavierGuertin xavierguertin@gmail.com
Oliel, Eden 40211989 eo2000 olieleden0@gmail.com

Equity and Diversity Statement

The Wildfire Visualization Platform Team is committed to fostering equity, diversity, and inclusion in all aspects of its development and deployment. We recognize that wildfires impact diverse communities differently and strive to ensure our tools are accessible, informative, and responsive to the needs of all users—especially those from historically underserved or vulnerable populations. By prioritizing inclusive data representation and engaging with a broad range of stakeholders, we aim to support equitable decision-making and promote environmental justice through transparent and collaborative technology.


Running the Application

To run the application, follow these steps:

  1. Clone the Repository

    git clone https://github.com/XavierGuertin/WildfireVisualizationProject.git
  2. Navigate to the Project Root

    cd WildfireVisualizationProject
  3. Run the Application using Docker Compose

    docker-compose up --pull always
  4. Access the Application Once the project is running, open your browser and navigate to:

    http://localhost:3000
    

Developer Guide

For setting up the development environment, follow these additional steps:

  1. Pull Required Services

    docker compose pull geoserver db tileserver tileserver-init
  2. Start Services

    docker compose up geoserver db tileserver tileserver-init
  3. Add Environment Variables

    # Navigate to the frontend directory
    cd frontend
    
    # Create environment files if they don't exist
    touch .env.production .env.development
    

    Add the following variables to both .env.production and .env.development

    NEXT_PUBLIC_BACKEND_URL=http://localhost:8080
    NEXT_PUBLIC_GEOSERVER_URL=http://localhost:8090/geoserver/Default/wms
    NEXT_PUBLIC_TILESERVER_URL=http://localhost:8081/data/OAM-World-1-8-min-J80
  4. Run the Backend

    nx dev backend
  5. Install Dependencies

    cd wildfire-visualization-platform
    npm i
  6. Run the Frontend

    nx dev frontend

Running Tests

To ensure code quality, run tests for both frontend and backend as follows:

Frontend Testing

  • Location of Tests: ./apps/frontend/__tests__
  • Components to Test: ./apps/frontend/src/components
  • Example Test File: apps/frontend/__tests__/MapMetaData.spec.tsx

Run frontend tests:

nx test frontend

Frontend End-to-End (E2E) Testing

  • Location of Tests: apps/frontend-e2e/src/e2e
  • Example Test File: apps/frontend-e2e/src/e2e/app.cy.ts
  • Developers need to create a cypress.env.json file with the following: "COLLECTIONS_URL": "*URL_TO_COLLECTIONS_ENDPOINT*"

Run frontend E2E tests:

nx e2e frontend-e2e

Backend Testing

  • Location of Tests: ./apps/backend/src/tests
  • Components to Test: ./apps/backend/src/main
  • Example Test File: src/test/java/com/example/backend/backendTests/BackendSampleJUnitTest.java

Run backend tests:

nx test backend

Tech Stack

The project utilizes the following technologies:

Frontend:

  • Framework: NextJS
  • Mapping Library: OpenLayers
  • CSS Framework: Tailwind CSS
  • Testing: Jest for unit testing, Cypress for end-to-end testing

Backend:

  • Framework: Spring Boot (Java)
  • Database: PostgreSQL
  • API Development: RESTful APIs with Spring Boot
  • Testing: JUnit for unit testing, Cypress for e2e testing

DevOps & Infrastructure:

  • CI/CD: Github Actions for automated builds and deployments
  • Containerization: Docker for managing containers and deployments
  • Code Quality: SonarQube for static code analysis
  • Version Control: GitHub for repository management

About

The Wildfire Visualization Platform is an innovative tool designed to provide historical data on wildfires

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors