Update readme with Steam integration, landing page, and architecture changes
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 10s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-28 12:40:37 +00:00
parent 461729809e
commit ce091d3918

View File

@@ -15,6 +15,7 @@ This website is currently self hosted on my Raspberry Pi. Any interference and t
All services run in Docker containers orchestrated by Docker Compose: All services run in Docker containers orchestrated by Docker Compose:
``` ```
vue ── Frontend build (outputs dist to shared volume)
nginx (80, 443) ── Frontend SPA + Reverse Proxy nginx (80, 443) ── Frontend SPA + Reverse Proxy
backend (8080) ── Go API backend (8080) ── Go API
db (5432) ── PostgreSQL 16 db (5432) ── PostgreSQL 16
@@ -30,29 +31,34 @@ certbot ── SSL Certificate Management
**Backend** - Go (Gin), gqlgen (GraphQL), GORM, PostgreSQL, JWT auth, WebSockets **Backend** - Go (Gin), gqlgen (GraphQL), GORM, PostgreSQL, JWT auth, WebSockets
**Integrations** - Spotify API, Anthropic Claude API, Icecast2 **Integrations** - Spotify API, Steam API, Anthropic Claude API, Icecast2
**Infrastructure** - Docker Compose, Nginx, Let's Encrypt (Certbot), Gitea + Act Runner **Infrastructure** - Docker Compose, Nginx, Let's Encrypt (Certbot), Gitea + Act Runner
## Features ## Features
- Spotify integration (currently playing, recently played) - Spotify integration (currently playing, recently played)
- Steam integration (online status, recent games)
- Obsidian note viewer with wikilink and LaTeX support - Obsidian note viewer with wikilink and LaTeX support
- Live radio streaming via Icecast2 - Live radio streaming via Icecast2
- Real-time chat over WebSockets - Real-time chat over WebSockets with image/video uploads
- Blog with admin panel (CRUD) - Blog with admin panel (CRUD)
- Activity and rowing session tracking - Activity and rowing session tracking
- Fan shrines (GTO, Evangelion, Demoman, Skip Skip Benben) - Fan shrines (GTO, Evangelion, Demoman, Skip Skip Benben)
- Self-hosted Git (Gitea) with CI/CD and commit feed on homepage - Self-hosted Git (Gitea) with CI/CD and commit feed on homepage
- Claude AI integration - Claude AI integration
- Printable CV with role-specific sections
- Landing page with animated stamps section
- Route transitions (slide/fade) and performance optimizations (gzip, WOFF2 fonts, lazy loading)
## Pages ## Pages
| Route | Description | | Route | Description |
| -------------- | ------------------------------------- | | -------------- | ------------------------------------- |
| `/` | Home dashboard with grid layout | | `/` | Landing page |
| `/stp` | Home dashboard with grid layout |
| `/admin` | Admin panel (authenticated) | | `/admin` | Admin panel (authenticated) |
| `/cv` | Curriculum Vitae | | `/cv` | Curriculum Vitae (printable) |
| `/bookmarks` | Bookmarks | | `/bookmarks` | Bookmarks |
| `/notes/:path` | Obsidian note viewer | | `/notes/:path` | Obsidian note viewer |
| `/shrines` | Fan shrine index + individual shrines | | `/shrines` | Fan shrine index + individual shrines |
@@ -61,7 +67,7 @@ certbot ── SSL Certificate Management
The primary API is **GraphQL** at `POST /api/graphql` (with a playground at `GET /api/graphql`). Queries cover posts, users, favorites, activities, rowing sessions, Spotify (currently playing, recently played), Gitea feed, and messages. The primary API is **GraphQL** at `POST /api/graphql` (with a playground at `GET /api/graphql`). Queries cover posts, users, favorites, activities, rowing sessions, Spotify (currently playing, recently played), Gitea feed, and messages.
REST endpoints handle auth (`/auth/*`), Spotify OAuth (`/spotify/*`), file uploads (`/messages/upload`), note serving (`/notes/*`), and WebSocket chat (`/api/ws`). REST endpoints handle auth (`/auth/*`), Spotify OAuth (`/spotify/*`), file uploads (`/messages/upload`), note serving (`/notes/*`), and WebSocket chat (`/api/ws`). Steam data (online status, recent games) is also available via the GraphQL API.
Protected endpoints require JWT authentication via `/auth/login` (tokens set as HTTP-only cookies). Protected endpoints require JWT authentication via `/auth/login` (tokens set as HTTP-only cookies).
@@ -121,6 +127,9 @@ SPOTIFY_CLIENT_SECRET=
SPOTIFY_REDIRECT_URI= SPOTIFY_REDIRECT_URI=
SPOTIFY_AUTH_STATE= SPOTIFY_AUTH_STATE=
STEAM_API_KEY=
STEAM_ID=
ICECAST_SOURCE_PASSWORD= ICECAST_SOURCE_PASSWORD=
ICECAST_RELAY_PASSWORD= ICECAST_RELAY_PASSWORD=
ICECAST_ADMIN_USER= ICECAST_ADMIN_USER=