mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-04-05 18:09:04 +00:00
161 lines
5.0 KiB
Markdown
161 lines
5.0 KiB
Markdown
# 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](docs/getting-started.md) - Local setup for backend and active website
|
|
- [Architecture](docs/architecture.md) - Current backend and frontend architecture
|
|
- [Docker Guide](docs/docker.md) - Container-based backend development and testing
|
|
- [Testing](docs/testing.md) - Backend and frontend test commands
|
|
- [Environment Variables](docs/environment-variables.md) - Active configuration reference
|
|
- [Token Validation](docs/token-validation.md) - JWT validation architecture
|
|
- [Pipeline Guide](pipeline/README.md) - Build, model install, and run steps for the C++ data pipeline
|
|
- [Legacy Website Archive](docs/archive/legacy-website-v1.md) - Archived notes for the old Next.js frontend
|
|
|
|
## Diagrams
|
|
|
|
- [Architecture](docs/diagrams-out/architecture.svg) - Layered architecture
|
|
- [Deployment](docs/diagrams-out/deployment.svg) - Docker topology
|
|
- [Authentication Flow](docs/diagrams-out/authentication-flow.svg) - Auth sequence
|
|
- [Database Schema](docs/diagrams-out/database-schema.svg) - 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-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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
cd src/Website
|
|
npm install
|
|
API_BASE_URL=http://localhost:8080 SESSION_SECRET=dev-secret npm run dev
|
|
```
|
|
|
|
Optional frontend tools:
|
|
|
|
```bash
|
|
cd src/Website
|
|
npm run storybook
|
|
npm run test:storybook
|
|
npm run test:storybook:playwright
|
|
```
|
|
|
|
## Repository Structure
|
|
|
|
```text
|
|
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:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.test.yaml up --abort-on-container-exit
|
|
```
|
|
|
|
See [Testing](docs/testing.md) 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](docs/environment-variables.md) 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
|
|
|
|
- **Documentation**: [docs/](docs/)
|
|
- **Architecture**: See [Architecture Guide](docs/architecture.md)
|