88 lines
2.2 KiB
Markdown
88 lines
2.2 KiB
Markdown
# CannaManage
|
|
|
|
Full-stack management platform for German cannabis cultivation associations (Anbauvereinigungen) under the CanG/KCanG regulatory framework.
|
|
|
|
## Tech Stack
|
|
|
|
| Layer | Technology |
|
|
|-------|-----------|
|
|
| **Frontend** | Next.js 15, React 19, TypeScript, Tailwind CSS 4, shadcn/ui |
|
|
| **Backend** | Spring Boot 3.5, Java 17, Spring Security (JWT + session) |
|
|
| **Database** | PostgreSQL 16, Flyway migrations |
|
|
| **Infrastructure** | Docker Compose, Gitea Actions CI/CD, TrueNAS deployment |
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
cannamanage/
|
|
├── cannamanage-api/ # Spring Boot REST API (entry point)
|
|
├── cannamanage-service/ # Business logic layer
|
|
├── cannamanage-domain/ # JPA entities, enums, value objects
|
|
├── cannamanage-frontend/ # Next.js frontend (pnpm)
|
|
├── deploy/ # Deployment scripts & nginx config
|
|
├── docker-compose.yml # Local development stack
|
|
└── .gitea/workflows/ # CI/CD pipeline
|
|
```
|
|
|
|
## Local Development
|
|
|
|
### Prerequisites
|
|
|
|
- Java 17+
|
|
- Maven 3.9+
|
|
- Node.js 22+ with pnpm 10+
|
|
- Docker & Docker Compose
|
|
|
|
### Backend
|
|
|
|
```bash
|
|
# Start PostgreSQL
|
|
docker compose up -d db
|
|
|
|
# Run Spring Boot
|
|
mvn spring-boot:run -f cannamanage-api/pom.xml -Dspring-boot.run.profiles=local
|
|
```
|
|
|
|
### Frontend
|
|
|
|
```bash
|
|
cd cannamanage-frontend
|
|
pnpm install
|
|
pnpm dev
|
|
```
|
|
|
|
The frontend runs on http://localhost:3000, backend on http://localhost:8080.
|
|
|
|
### Full Stack (Docker)
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
## Deployment
|
|
|
|
Push to `main` triggers the Gitea Actions CI pipeline which:
|
|
1. Runs backend tests (`mvn test`)
|
|
2. Runs frontend lint (`pnpm lint`)
|
|
3. Builds Docker images
|
|
4. Deploys to TrueNAS via Docker Compose
|
|
5. Verifies backend health + frontend availability
|
|
|
|
Manual deploy:
|
|
```bash
|
|
cd deploy && ./deploy.sh
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
| Variable | Purpose | Default |
|
|
|----------|---------|---------|
|
|
| `CANNAMANAGE_SECURITY_JWT_SECRET` | JWT signing key (base64, 256-bit) | — (required) |
|
|
| `CORS_ORIGINS` | Allowed CORS origins (comma-separated) | `http://localhost:3000` |
|
|
| `SMTP_HOST` / `SMTP_PORT` | Mail server for invites | `localhost:1025` |
|
|
| `SCHEDULERS_ENABLED` | Enable background jobs | `true` |
|
|
|
|
## License
|
|
|
|
Proprietary — Patrick Plate
|