Digital Management System for LPG Gas Distribution in Rwanda
# Tekeraheza Digital Management System - Backend
The core processing engine for the Tekeraheza LPG Gas Distribution Management System. Built with Spring Boot 3.2.1, this backend provides a robust, secure, and scalable REST API for managing gas distribution operations in Rwanda.
## 🚀 Key Features
* **Secure Authentication**: JWT-based auth with support for standard login, Google OAuth2, and Two-Factor Authentication (Email OTP & Authenticator App).
* **Role-Based Access Control (RBAC)**: Fine-grained permissions for ADMIN, MANAGER, STAFF, DELIVERY_PERSONNEL, and CUSTOMER roles.
* **Order Lifecycle Management**: Full tracking from pending to confirmed, processing, out-for-delivery, and completed.
* **Inventory & Stock Tracking**: Real-time management of LPG cylinders (by size/brand), warehouses, and automated low-stock alerts.
* **Delivery Coordination**: Integration for route assignment and status tracking for delivery personnel.
* **Comprehensive Reporting**: Generate and export reports in PDF and Excel formats (Apache POI & OpenPDF).
* **Notification Engine**: Multi-channel notifications via Email (Thymeleaf templates) and in-app alerts.
* **GraphQL Support**: Enhanced querying capabilities for specific data modules.
## 🛠️ Technology Stack
* **Framework**: Spring Boot 3.2.1
* **Language**: Java 17
* **Database**: PostgreSQL (Persistence), H2 (Testing)
* **Migration**: Flyway
* **Security**: Spring Security + JJWT (0.12.3)
* **API Documentation**: SpringDoc OpenAPI / Swagger UI
* **Mapping**: MapStruct 1.5.5
* **Utilities**: Lombok, Apache POI
## 🏗️ Getting Started
### Prerequisites
* JDK 17 or higher
* Maven 3.6+
* PostgreSQL 14+
### Setup
1. **Clone the repository**
2. **Configure Environment**: Update `src/main/resources/application.yml` with your database credentials and API keys.
```yaml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/tekeraheza
username: your …