2026-03-30 00:22:34 -04:00
2026-03-30 00:22:34 -04:00

The Biergarten App

The Biergarten App is a multi-project monorepo with a .NET backend and an active React Router frontend in src/Website. The current website focuses on account flows, theme switching, shared UI components, Storybook coverage, and integration with the API.

Documentation

Diagrams

Current Status

Active areas in the repository:

  • .NET 10 backend with layered architecture and SQL Server
  • React Router 7 website in src/Website
  • Shared Biergarten theme system with a theme guide route
  • Storybook stories and browser-based checks for shared UI
  • Auth demo flows for home, login, register, dashboard, logout, and confirmation
  • Toast-based feedback for auth outcomes

Legacy area retained for reference:

  • src/Website-v1 contains the archived Next.js frontend and is no longer the active website

Tech Stack

  • 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

Quick Start

Backend

git clone https://github.com/aaronpo97/the-biergarten-app
cd the-biergarten-app
cp .env.example .env.dev
docker compose -f docker-compose.dev.yaml up -d

Backend access:

Frontend

cd src/Website
npm install
API_BASE_URL=http://localhost:8080 SESSION_SECRET=dev-secret npm run dev

Optional frontend tools:

cd src/Website
npm run storybook
npm run test:storybook
npm run test:storybook:playwright

Repository Structure

src/Core/          Backend projects (.NET)
src/Website/       Active React Router frontend
src/Website-v1/    Archived legacy Next.js frontend
docs/              Active project documentation
docs/archive/      Archived legacy documentation

Key Features

Implemented today:

  • User registration and login against the API
  • JWT-based auth with access, refresh, and confirmation flows
  • SQL Server migrations and seed projects
  • Shared form components and auth screens
  • Theme switching with Lager, Stout, Cassis, and Weizen variants
  • Storybook documentation and automated story interaction tests
  • Toast feedback for auth-related outcomes

Planned next:

  • Brewery discovery and management
  • Beer reviews and ratings
  • Social follow relationships
  • Geospatial brewery experiences
  • Additional frontend routes beyond the auth demo

Testing

Backend suites:

  • API.Specs - integration tests
  • Infrastructure.Repository.Tests - repository unit tests
  • Service.Auth.Tests - service unit tests

Frontend suites:

  • Storybook interaction tests via Vitest
  • Storybook browser regression checks via Playwright

Run all backend tests with Docker:

docker compose -f docker-compose.test.yaml up --abort-on-container-exit

See Testing for the full command list.

Configuration

Common active variables:

  • Backend: DB_SERVER, DB_NAME, DB_USER, DB_PASSWORD, ACCESS_TOKEN_SECRET, REFRESH_TOKEN_SECRET, CONFIRMATION_TOKEN_SECRET
  • Frontend: API_BASE_URL, SESSION_SECRET, NODE_ENV

See Environment Variables for details.

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Workflow

  1. Start development environment: docker compose -f docker-compose.dev.yaml up -d
  2. Make changes to code
  3. Run tests: docker compose -f docker-compose.test.yaml up --abort-on-container-exit
  4. Rebuild if needed: docker compose -f docker-compose.dev.yaml up -d --build api.core

Support

Languages
TypeScript 76.4%
C# 18.7%
Gherkin 1.3%
HTML 1.1%
CSS 1%
Other 1.4%