The Biergarten App is a full-stack directory and discovery platform for breweries. It features a robust user authentication system, a searchable database of brewery locations, and a custom offline data-generation pipeline that uses LLMs (Llama.cpp) and Wikipedia to synthesize realistic seed data.
It features:
- A .NET backend (Web API + database migrations/seed) under
web/backend/ - A server-rendered React website (React Router + Vite) under
web/frontend/ - A C++20 “pipeline” CLI for generating seed data under
tooling/pipeline/
Specialized documentation (setup, architecture, docker, testing, diagrams, and
pipeline notes) lives under docs/.
Website + backend (active stack):
Data generation pipeline (C++):
Active areas in the repository:
- .NET 10 backend (layered architecture) + SQL Server
- React 19 website (React Router 7 + Vite)
- Shared Biergarten theme system + Storybook coverage
- Auth flows and account/email integration (local Mailpit in dev compose)
- Data generation pipeline with C++ and Llama.cpp
Archived/reference areas:
archive/next-js-web-app/contains an older Next.js frontend retained for reference
- Backend: .NET 10, ASP.NET Core, SQL Server 2022, DbUp
- Frontend: React 19, React Router 7, Vite 7, Tailwind CSS 4, DaisyUI 5
- UI Documentation: Storybook 10, Vitest browser mode, Playwright
- Testing: xUnit, Reqnroll (BDD), FluentAssertions, Moq
- Infrastructure: Docker, Docker Compose
- Security: Argon2id password hashing, JWT access/refresh/confirmation tokens
- Data Pipeline: C++20, CMake, Boost, libcurl, SQLite, llama.cpp
For full setup details, use Getting Started. This section is the shortest path to a working dev environment.
git clone https://github.com/aaronpo97/the-biergarten-app
cd the-biergarten-app
cp web/.env.example web/.env.dev
docker compose --env-file web/.env.dev -f web/docker-compose.dev.yaml up --build -dBackend access:
- API Swagger: http://localhost:8080/swagger
- Health Check: http://localhost:8080/health
- Mailpit UI (dev SMTP): http://localhost:8025
cd web/frontend
npm install
API_BASE_URL=http://localhost:8080 SESSION_SECRET=dev-secret-change-me npm run devOptional frontend tools:
cd web/frontend
npm run storybook
npm run test:storybook
npm run test:storybook:playwrightweb/
backend/ .NET API + domain/service/infrastructure + DB projects
frontend/ React Router website + Storybook + Playwright/Vitest
tooling/
pipeline/ C++20 seed-data generation CLI (CMake)
docs/
architecture.md High-level architecture overview
website/ Backend/frontend setup, docker, testing, diagrams
pipeline/ Pipeline docs, ethics notes, PlantUML diagrams
archive/
next-js-web-app/ Older Next.js frontend (reference only)
Run the backend test stack with Docker:
docker compose --env-file web/.env.test -f web/docker-compose.test.yaml up --abort-on-container-exitSee Testing for the full command list.
Common active variables:
- Backend/Docker:
DB_SERVER,DB_NAME,DB_USER,DB_PASSWORD,ACCESS_TOKEN_SECRET,REFRESH_TOKEN_SECRET,CONFIRMATION_TOKEN_SECRET,WEBSITE_BASE_URL - Frontend runtime:
API_BASE_URL,SESSION_SECRET,NODE_ENV
See Environment Variables for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request