Go to file
Moritz Graf 754e495607 feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
.vscode Adding inital website! 2025-12-19 16:56:50 +01:00
public Final project polish: Refined game, added NAT gating, and GEMINI.md handbook. 2026-01-02 10:29:40 +01:00
scripts feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
src feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
terraform feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
.gitignore chore: improve local development experience with setup scripts 2026-01-02 22:28:54 +01:00
DEVELOPMENT.md Adding inital website! 2025-12-19 16:56:50 +01:00
Dockerfile feat: implement firebase authentication with terraform infrastructure 2026-01-02 21:56:41 +01:00
GEMINI.md feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
README.md feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
deploy.sh feat: implement firebase authentication with terraform infrastructure 2026-01-02 21:56:41 +01:00
index.html Adding inital website! 2025-12-19 16:56:50 +01:00
k8s-manifests.yaml Final project polish: Refined game, added NAT gating, and GEMINI.md handbook. 2026-01-02 10:29:40 +01:00
package-lock.json feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
package.json feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00
tsconfig.app.json Adding inital website! 2025-12-19 16:56:50 +01:00
tsconfig.json Adding inital website! 2025-12-19 16:56:50 +01:00
tsconfig.node.json Adding inital website! 2025-12-19 16:56:50 +01:00
vite.config.ts feat: google auth with secret manager and testing 2026-01-03 09:14:44 +01:00

README.md

Haumdaucher Website 🦢🍻

D'Offizielle Website der Haumdaucher aus Regensburg.

🚀 Quick Start (Local)

npm install
npm run dev

Visit http://localhost:5173/ to see the site.

🛠 Documentation

For detailed information on the project structure, how to modify themes, update content, or deploy to Kubernetes, please see the Development Guide.

🎡 Deployment

Use the provided deployment script to push to your Kubernetes cluster:

./deploy.sh

Check k8s-manifests.yaml for resource definitions.

🚀 Bootstrap & Authentication (Infrastructure)

We use Terraform to manage Firebase Authentication and Firestore. To set this up for a new environment:

1. Manual Prerequisites (One-time)

  1. Create a Project: Go to Google Cloud Console and create a new project.
  2. Enable Billing: Link a Billing Account to this project (Required for Terraform to enable Identity Platform).
  3. Local Auth:
    gcloud auth login
    gcloud auth application-default login
    
  4. Configure Secrets: Run the helper script to create and populate the required secrets in Google Secret Manager:
    ./scripts/manage_secrets.py
    
    (You will need the Client ID and Secret from the GCP Console > APIs & Services > Credentials)
  5. Verify: Log in to the application. You should see the member banner.

🛠 Local Development Requirements

This project uses Firebase for authentication. To run the app locally, you need the environment variables (API keys) that are normally injected during deployment.

1. Generate Local Environment Config

We typically manage infrastructure via Terraform. Use the included helper script to fetch the configuration from your active Terraform state and create a local .env file:

npm run setup:env

Prerequisites: You must have terraform and jq installed, and terraform apply must have been run at least once.

2. Start Dev Server

npm run dev

2. Infrastructure Deployment

Navigate to the terraform directory and apply the configuration:

cd terraform
terraform init
terraform apply -var="project_id=YOUR_PROJECT_ID" -var='allowed_users=["your_email@gmail.com"]'

This will:

  • Enable Firebase, Firestore, and Identity APIs.
  • Create the Firestore Database.
  • Create the Allowlist in Firestore (config/allowlist).

3. Adding Friends

To approve new users, simply update the allowed_users list in your terraform.tfvars (or CLI argument) and re-run terraform apply.