Kenzo cb43b4a7b5
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Implement OAuth authentication and admin panel
- Introduced OAuth-based login flow with session management and CSRF protection.
- Added admin panel for managing events and gallery content with real-time editing functionality.
- Integrated Gitea API for saving files and updating repository content.
- Updated `.env.example` to include OAuth and Gitea-related configurations.
- Added example event and gallery JSON files for demonstration.
2025-11-08 16:12:33 +01:00

Gallus Pub Website

This is the Gallus Pub website built with Astro. It includes an admin area at /admin for editing content (events, gallery, texts). Changes are committed back to the Git repository via the Gitea API which triggers your Woodpecker + Fly.io deployment pipeline.

Local development

To run the site locally with OAuth login (Gitea):

  1. Copy the example env file and fill values:

    cp .env.example .env.local
    
    • Create a Gitea OAuth application with Redirect URI: http://localhost:4321/api/auth/callback.
    • Set OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET from Gitea.
    • Set GITEA_OWNER, GITEA_REPO, and a GITEA_TOKEN (PAT) with write access to the repo.
    • Generate random secrets for sessions/CSRF (e.g. openssl rand -hex 32).
  2. Install dependencies:

    npm install
    
  3. Start dev server using your local env file:

    npm run dev:local
    

    The site runs at http://localhost:4321. Visit http://localhost:4321/admin to log in via Gitea OAuth.

Notes:

  • If OAuth variables are missing or malformed, the auth endpoints return a clear 500 with guidance instead of crashing.
  • Production secrets are configured on Fly.io; .env.local is ignored by Git.

Project structure

/
├── public/              # static assets
├── src/
│   ├── content/         # editable JSON content (events, gallery)
│   ├── pages/           # Astro pages, includes /admin and API routes
│   ├── components/      # UI components
│   └── utils/           # session helpers
├── .env.example         # template for local env
├── fly.toml             # Fly.io config
├── Dockerfile
└── package.json

Commands

  • npm install install deps
  • npm run dev dev server without loading .env.local (expects env to be present in the shell)
  • npm run dev:local dev server loading .env.local via dotenv-cli
  • npm run build production build (SSR via @astrojs/node)
  • npm run preview preview the production build
Description
Reposetory für die Website vom Gallus Pub Auftragsgeber: Sabrina Signer Geschäfft: Gallus Pub
Readme 29 MiB
Languages
TypeScript 47.6%
Astro 30.5%
CSS 14.7%
JavaScript 5.2%
Dockerfile 2%