Aaron Po e4e16a5084 fix: address critical correctness, reliability, and design issues in pipeline
CORRECTNESS FIXES:
- json_loader: Add RollbackTransaction() and call it on exception instead of
  CommitTransaction(). Prevents partial data corruption on parse/disk errors.
- wikipedia_service: Fix invalid MediaWiki API parameter explaintext=true ->
  explaintext=1. Now returns plain text instead of HTML markup in contexts.
- helpers: Fix ParseTwoLineResponse filter to only remove known thinking tags
  (<think>, <reasoning>, <reflect>) instead of any <...> pattern. Prevents
  silently removing legitimate output like <username>content</username>.

RELIABILITY & DESIGN IMPROVEMENTS:
- load/main: Make n_ctx (context window size) configurable via --n-ctx flag
  (default 2048, range 1-32768) to support larger models like Qwen3-14B.
- generate_brewery: Prevent retry prompt growth by extracting location context
  into constant and using compact retry format (error + schema + location only).
  Avoids token truncation on final retry attempts.
- database: Fix data representativeness by changing QueryCities from
  ORDER BY name (alphabetic bias) to ORDER BY RANDOM() for unbiased sampling.
  Convert all SQLITE_STATIC to SQLITE_TRANSIENT to prevent use-after-free risks.

POLISH:
- infer: Advance sampling seed between generation calls to improve diversity
  across brewery and user generation.
- data_downloader: Remove unnecessary commit hash truncation; use full hash.
- json_loader: Fix misleading log message from "RapidJSON" to "Boost.JSON".
2026-04-03 11:58:00 -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%