Home - bcgov/lcfs GitHub Wiki

Welcome to the LCFS Wiki!

This wiki serves as the central knowledge base for the Low Carbon Fuel Standard (LCFS) application. It provides comprehensive documentation on the system architecture, development workflows, coding standards, and operational procedures.

Project Purpose

The Low Carbon Fuel Standard (LCFS) in British Columbia is a regulatory initiative designed to reduce the carbon intensity of transportation fuels used in the province. It aims to decrease greenhouse gas emissions by encouraging the use of renewable and low-carbon fuels, offering incentives for their supply, and setting progressively stricter carbon intensity targets for conventional fuels. This program plays a key role in B.C.'s strategy to transition towards cleaner energy options in the transportation sector and support the growth of the clean fuels industry.

(This section can be expanded with a more detailed description of the LCFS project's goals and objectives, if available.)

To provide up-to-date technical documentation that reflects the current state of the system, making it easier for team members to understand and work with the codebase, and to ensure all team members have access to current and accurate information about development processes, reducing onboarding time and maintaining consistency.

High-Level Architecture & Project Components

The LCFS system is a modern web application composed of several key services and technologies working in concert:

  • Frontend: Developed with React.js and utilizing Material-UI for base components, providing a modern and intuitive user interface. Vite is used for optimizing frontend assets.
  • Backend: Built on FastAPI (Python), the backend handles API requests, business logic, and data management.
  • Database: Utilizes PostgreSQL for secure and reliable data storage.
  • Authentication: Implements Keycloak for robust identity and access management.
  • ETL (Extract, Transform, Load): Employs Apache NiFi for data migration and synchronization, particularly for integrating data from the TFRS (Transportation Fuel Reporting System) database.
  • Caching: Redis is used as a caching layer to improve performance.
  • Message Queuing: RabbitMQ is used for asynchronous task processing.
  • Object Storage: MinIO (S3-compatible) is used for file storage.
  • ORM (Object Relational Mapper): Employs SQLAlchemy for database entity mapping in the backend.
  • Database Migrations: Manages database schema changes over time with Alembic.
  • Data Validation: Utilizes Pydantic for data validation within FastAPI.
  • Containerization: Docker is used for containerizing services, with Docker Compose for local development orchestration.
  • Deployment: The application is deployed on OpenShift Container Platform.

(A more detailed component interaction diagram will be available in Component Diagrams.)

Documentation Sections

This wiki is organized into the following main sections, broadly covering System Architecture (#2409) and Development Workflows (#2410):

System Architecture & Components

Development Workflows & Processes

General

Please use the navigation or the links above to explore the different aspects of the LCFS project.


This documentation is actively maintained. If you find any discrepancies or outdated information, please contribute by updating it.