mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-04-05 10:09:03 +00:00
98083ab40c1fe6d509e9e393e39bb845891df5c4
Introduce a pluggable web client interface and concrete CURL implementation: adds IWebClient, CURLWebClient, and CurlGlobalState (headers + curl_web_client.cpp). DataDownloader now accepts an IWebClient and delegates downloads. Add WikipediaService for cached Wikipedia summary lookups. Refactor SqliteDatabase to return full City records and update consumers accordingly. Improve JsonLoader to use batched transactions during streaming parses. Enhance LlamaGenerator with sampling options, increased token limits, JSON extraction/validation, and other parsing helpers. Modernize CMake: set policy/version, add project_options, simplify FetchContent usage (spdlog), require Boost components (program_options/json), list pipeline sources explicitly, and tweak post-build/memcheck targets. Update README to match implementation changes and new CLI/config conventions.
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
- Getting Started - Local setup for backend and active website
- Architecture - Current backend and frontend architecture
- Docker Guide - Container-based backend development and testing
- Testing - Backend and frontend test commands
- Environment Variables - Active configuration reference
- Token Validation - JWT validation architecture
- Legacy Website Archive - Archived notes for the old Next.js frontend
Diagrams
- Architecture - Layered architecture
- Deployment - Docker topology
- Authentication Flow - Auth sequence
- Database Schema - Entity relationships
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-v1contains 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:
- API Swagger: http://localhost:8080/swagger
- Health Check: http://localhost:8080/health
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 testsInfrastructure.Repository.Tests- repository unit testsService.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
- 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
Development Workflow
- Start development environment:
docker compose -f docker-compose.dev.yaml up -d - Make changes to code
- Run tests:
docker compose -f docker-compose.test.yaml up --abort-on-container-exit - Rebuild if needed:
docker compose -f docker-compose.dev.yaml up -d --build api.core
Support
- Documentation: docs/
- Architecture: See Architecture Guide
Description
No description provided
beerbrewerycloudinary-apidaisyuinextjsopen-sourceprismareactserverless-functionssocial-networksparkpost-apitailwindcssvercel
Readme
4.6 MiB
Languages
TypeScript
76.4%
C#
18.7%
Gherkin
1.3%
HTML
1.1%
CSS
1%
Other
1.4%