Skip to content

nichtLehdev/pwr-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Posaunenwerk Rheinland

Web platform for the Posaunenwerk Rheinland brass music association. Manages events, courses, news, and organizational information.

Next.js TypeScript Prisma PostgreSQL Tailwind CSS tRPC Better Auth React Query pnpm

Tech Stack

  • Next.js 16 (App Router) + TypeScript
  • tRPC (end-to-end typesafe APIs)
  • Prisma + PostgreSQL
  • Better Auth (authentication)
  • Tailwind CSS

Quick Start

Docker (Recommended)

# 1. Clone and configure
git clone https://github.com/nichtLehdev/pwr-web.git
cd pwr-web

# 2. Set environment variables
# Required: DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_GITHUB_CLIENT_ID, 
#           BETTER_AUTH_GITHUB_CLIENT_SECRET, GITHUB_TOKEN, GITHUB_REPO
# Optional: SMTP_* (for email)

# 3. Start services
docker compose up -d

# 4. (Optional) Seed database
docker compose run --rm --profile seed db-seed

Visit http://localhost:3000

Local Development

# Install dependencies
pnpm install

# Start database (or use ./start-database.sh)
docker run -d --name posaunenwerk-db \
  -e POSTGRES_PASSWORD=password \
  -e POSTGRES_DB=posaunenwerk \
  -p 5432:5432 postgres:16-alpine

# Setup database
pnpm db:migrate
pnpm tsx prisma/seed.ts  # Optional

# Start dev server
pnpm dev

Environment Variables

Required:

  • DATABASE_URL - PostgreSQL connection string
  • BETTER_AUTH_SECRET - Auth secret (generate: openssl rand -base64 32)
  • BETTER_AUTH_GITHUB_CLIENT_ID - GitHub OAuth client ID
  • BETTER_AUTH_GITHUB_CLIENT_SECRET - GitHub OAuth secret
  • GITHUB_TOKEN - GitHub API token
  • GITHUB_REPO - GitHub repository (format: owner/repo)

Optional (Email):

  • SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD, SMTP_FROM

Scripts

Command Description
pnpm dev Development server
pnpm build Production build
pnpm start Production server
pnpm check Lint + type check
pnpm db:migrate Run migrations
pnpm db:studio Open Prisma Studio
pnpm test:email Test email configuration

Project Structure

src/
├── app/              # Next.js pages (aktuelles, dashboard, termine, etc.)
├── server/api/       # tRPC routers
├── server/better-auth/ # Auth configuration
├── lib/              # Utilities
└── trpc/             # tRPC client
prisma/
├── schema.prisma     # Database schema
└── migrations/       # Migration history

Features

Public:

  • Event calendar, course listings, news, organization info, downloads

Dashboard (Authenticated):

  • Content management (events, courses, posts)
  • Registration management
  • Approval workflow (DRAFT → PENDING → APPROVED)
  • Role-based access (ADMIN, LPW, RPW, OBLEUTE, USER)

User Roles

  • ADMIN - Full access
  • LPW - Landesposaunenwart (can approve all content)
  • RPW - Regionalposaunenwart (can approve for assigned districts)
  • OBLEUTE - District representatives (can create, needs approval)
  • USER - Regular users

Database Models

Key entities: User, Event, Course, Post, Bezirk, Ensemble, AuswahlChor, Location, Media, Download, CourseRegistration

Docker Services

  • db - PostgreSQL 16
  • db-migrate - Runs migrations on startup
  • db-seed - Optional seeding (profile: seed)
  • app - Next.js application

Documentation

See docs/ for detailed documentation:

License

Proprietary software for Posaunenwerk Rheinland.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages