The Biergarten App is an open-source, full-stack brewery directory and discovery platform built around a .NET 10 backend, a server-rendered React 19 website, and a C++20 data-generation pipeline that synthesizes realistic seed data with LLMs via Llama.cpp and Wikipedia.
What is The Biergarten App?
The Biergarten App is a full-stack directory and discovery platform for breweries, published on GitHub by aaronpo97 under the GPL-3.0 license. It takes brewery location data plus user accounts and produces a searchable web directory with JWT-based authentication, email confirmation, and refresh-token rotation. The repository is split into a .NET Web API with database migrations and seed data under web/backend/, a React Router + Vite website under web/frontend/, and a C++20 CLI under tooling/pipeline/. An older Next.js frontend is archived in archive/next-js-web-app/ for reference only.
Key Features
- JWT authentication — Access, refresh, and confirmation tokens with Argon2id password hashing, email confirmation, and refresh-token rotation.
- Searchable brewery directory — A database of brewery locations served through a server-rendered React app using React Router 7 and Vite 7.
- .NET 10 backend — Vertical-slice architecture with MediatR, ASP.NET Core, SQL Server 2022, and DbUp for migrations.
- LLM-powered seed-data pipeline — A C++20 CLI (CMake, Boost, libcurl, SQLite, llama.cpp) that generates realistic brewery seed data offline from Wikipedia.
- Storybook UI documentation — Storybook 10 coverage of the shared Biergarten theme system, tested with Vitest browser mode and Playwright.
- Full test stack — xUnit, Reqnroll BDD, FluentAssertions, and Moq for the backend, plus a Docker Compose test environment.
- Docker development setup — Docker Compose files for dev and test, with Mailpit as the local SMTP server for email flows.
- Documentation and diagrams — Setup, architecture, Docker, testing, environment-variable, and token-validation guides, plus SVG diagrams for architecture, deployment, authentication flow, and database schema.
Who is it for?
- Full-stack .NET developers — exploring a vertical-slice API with MediatR, DbUp migrations, and SQL Server 2022.
- React developers — building a server-rendered React Router 7 app styled with Tailwind CSS 4 and DaisyUI 5, with Storybook for component development.
- Developers curious about LLM tooling — studying a C++20 pipeline that uses Llama.cpp and Wikipedia to synthesize seed data locally and offline.
- Beer enthusiasts who code — self-hosting or contributing to a brewery discovery platform with a documented contributor workflow.
What can you do with The Biergarten App?
- Beer lovers: browse a searchable database of brewery locations to discover breweries and their brews.
- Contributors: fork the repository, create a feature branch, and open a pull request after running the documented checks (backend tests, lint, typecheck).
- Developers: run the full stack locally by copying
web/.env.exampletoweb/.env.dev, starting Docker Compose, and running the Vite dev server withAPI_BASE_URLandSESSION_SECRET.
How does The Biergarten App work?
The quick start uses two commands: Docker Compose brings up the API, SQL Server, and Mailpit, then npm install and npm run dev start the frontend against the local API. The C++ pipeline is run separately to generate the realistic seed data that populates the brewery database. Full prerequisite and setup details are in the Getting Started guide under docs/website/.
FAQ
Is The Biergarten App free?
Yes, The Biergarten App is open source under the GPL-3.0 license. Bugs and feature requests are tracked through GitHub Issues on the repository.
What tech stack does it use?
The active stack is .NET 10 with ASP.NET Core and SQL Server 2022 on the backend, and React 19, React Router 7, Vite 7, Tailwind CSS 4, and DaisyUI 5 on the frontend. Testing uses xUnit, Reqnroll, FluentAssertions, Moq, and Playwright.
What are the system requirements?
You need .NET SDK 10 or later, Node.js 18 or later, and Docker Desktop or an equivalent Docker Engine setup. The C++ data pipeline additionally requires its own C++20 toolchain, documented separately.
Is the Next.js version still maintained?
No, the older Next.js frontend is archived in archive/next-js-web-app/ and retained for reference only. The active website is the server-rendered React Router + Vite app in web/frontend/.








