This project serves as a learning platform for students to develop full-stack applications using Quarkus and Angular Renaissance. The application simulates a resource management system for a prepper bunker, tracking various resources like weapons, ammunition, food, drinks, medications, fuel, and more.
showcase.mp4
The Prepper Bunker Management System consists of:
- Backend: A RESTful API built with Quarkus
- Frontend: A modern UI built with Angular Renaissance and Angular Material
- quarkus-hibernate-orm-panache: Simplified ORM and repository management
- quarkus-rest-jackson: JSON serialization/deserialization
- quarkus-jdbc-h2: In-memory database
- quarkus-smallrye-openapi: API documentation
- @angular/material: Material Design components
- HttpClient: API communication
- SCSS: Advanced styling
The application uses the following database schema:
---
config:
theme: forest
---
erDiagram
storage_location {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR name
VARCHAR description
}
ammunition_type {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR caliber
VARCHAR type
}
weapon {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR type
VARCHAR model
INT quantity
BIGINT ammunition_type_id FK
BIGINT storage_location_id FK
}
ammunition_stock {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
BIGINT ammunition_type_id FK
INT quantity
BIGINT storage_location_id FK
}
drink {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR type
DOUBLE quantity
DATE expiration_date
BIGINT storage_location_id FK
}
food {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR type
DOUBLE quantity
DATE expiration_date
BIGINT storage_location_id FK
}
medication {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR name
INT quantity
DATE expiration_date
VARCHAR purpose
BIGINT storage_location_id FK
}
fuel_type {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR name
}
fuel {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
BIGINT fuel_type_id FK
DOUBLE quantity
BIGINT storage_location_id FK
}
battery {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR type
DOUBLE capacity
INT quantity
BIGINT storage_location_id FK
}
generator {
BIGINT id PK "GENERATED BY DEFAULT AS IDENTITY"
VARCHAR type
DOUBLE power
BIGINT fuel_type_id FK
VARCHAR status
BIGINT storage_location_id FK
}
weapon ||--o{ ammunition_type : "uses"
weapon ||--o{ storage_location : "stored at"
ammunition_stock ||--o{ ammunition_type : "is for"
ammunition_stock ||--o{ storage_location : "stored at"
drink ||--o{ storage_location : "stored at"
food ||--o{ storage_location : "stored at"
medication ||--o{ storage_location : "stored at"
fuel ||--o{ fuel_type : "is"
fuel ||--o{ storage_location : "stored at"
battery ||--o{ storage_location : "stored at"
generator ||--o{ fuel_type : "runs on"
generator ||--o{ storage_location : "stored at"
The database is initialized with sample data using the import.sql file.
/templates: Empty starter templates for students to begin implementation/prepper-bunker-backend: Completed Quarkus backend implementation/prepper-bunker-frontend: Completed Angular Renaissance frontend implementation
This project is designed to help students:
- Understand RESTful API design with Quarkus
- Work with JPA and Panache for database operations
- Develop modern UIs with Angular Renaissance and Material Design
- Implement CRUD operations and data validation
- Create a cohesive full-stack application
- Navigate to
/prepper-bunker-backend - Run
./mvnw quarkus:devto start the development server - Access the OpenAPI documentation at
http://localhost:8069/q/openapi
- Navigate to
/prepper-bunker-frontend - Run
npm installto install dependencies - Run
npm run devto start the development server - Access the application at
http://localhost:4200