feat: initialize k-tv-frontend with Next.js and Tailwind CSS

- Added package.json with dependencies and scripts for development, build, and linting.
- Created postcss.config.mjs for Tailwind CSS integration.
- Added SVG assets for UI components including file, globe, next, vercel, and window icons.
- Configured TypeScript with tsconfig.json for strict type checking and module resolution.
This commit is contained in:
2026-03-11 19:13:21 +01:00
commit 01108aa23e
130 changed files with 29949 additions and 0 deletions

77
k-tv-backend/.env.example Normal file
View File

@@ -0,0 +1,77 @@
# ============================================================================
# K-TV Configuration
# ============================================================================
# Copy this file to .env and adjust values for your environment.
# ============================================================================
# Server
# ============================================================================
HOST=127.0.0.1
PORT=3000
# ============================================================================
# Database
# ============================================================================
# SQLite (default)
DATABASE_URL=sqlite:data.db?mode=rwc
# PostgreSQL (requires postgres feature flag)
# DATABASE_URL=postgres://user:password@localhost:5432/mydb
DB_MAX_CONNECTIONS=5
DB_MIN_CONNECTIONS=1
# ============================================================================
# Cookie Secret
# ============================================================================
# Used to encrypt the OIDC state cookie (CSRF token, PKCE verifier, nonce).
# Must be at least 64 characters in production.
COOKIE_SECRET=your-cookie-secret-key-must-be-at-least-64-characters-long-for-security!!
# Set to true when serving over HTTPS
SECURE_COOKIE=false
# ============================================================================
# JWT
# ============================================================================
# Must be at least 32 characters in production.
JWT_SECRET=your-jwt-secret-key-at-least-32-chars
# Optional: embed issuer/audience claims in tokens
# JWT_ISSUER=your-app-name
# JWT_AUDIENCE=your-app-audience
# Token lifetime in hours (default: 24)
JWT_EXPIRY_HOURS=24
# ============================================================================
# OIDC (optional — requires auth-oidc feature flag)
# ============================================================================
# OIDC_ISSUER=https://your-oidc-provider.com
# OIDC_CLIENT_ID=your-client-id
# OIDC_CLIENT_SECRET=your-client-secret
# OIDC_REDIRECT_URL=http://localhost:3000/api/v1/auth/callback
# OIDC_RESOURCE_ID=your-resource-id # optional audience claim to verify
# ============================================================================
# CORS
# ============================================================================
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000
# ============================================================================
# Jellyfin (required for schedule generation)
# ============================================================================
# Base URL of your Jellyfin instance
JELLYFIN_BASE_URL=http://192.168.1.10:8096
# API key — Jellyfin Dashboard → API Keys
JELLYFIN_API_KEY=your-jellyfin-api-key
# User ID used for library browsing — Jellyfin Dashboard → Users → click user → copy ID from URL
JELLYFIN_USER_ID=your-jellyfin-user-id
# ============================================================================
# Production Mode
# ============================================================================
# Set to true/production/1 to enforce minimum secret lengths and other checks.
PRODUCTION=false