You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Guillermo Pages 95b32e5664
continuous-integration/drone/push Build is passing Details
chore: bump deploy number to 8
1 month ago
dictionaries feat(phase-0): integrate admin clubs API with staging backend 1 month ago
docker feat(phase-0): integrate admin clubs API with staging backend 1 month ago
docs feat(phase-0): integrate admin clubs API with staging backend 1 month ago
public feat(phase-0): integrate admin clubs API with staging backend 1 month ago
src feat(phase-0): integrate admin clubs API with staging backend 1 month ago
.deploy.yml chore: bump deploy number to 8 1 month ago
.dockerignore feat(phase-0): integrate admin clubs API with staging backend 1 month ago
.drone.yml feat(phase-0): integrate admin clubs API with staging backend 1 month ago
.drone.yml.back feat(phase-0): integrate admin clubs API with staging backend 1 month ago
.eslintrc.json feat(phase-0): integrate admin clubs API with staging backend 1 month ago
.gitignore feat(phase-0): integrate admin clubs API with staging backend 1 month ago
API.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
ARCHITECTURE_IMPROVEMENTS.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
CLAUDE.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
NEXTJS15.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
OPTIMIZATION_AUDIT.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
PHASE_0_STATUS.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
PIPELINE_OPTIMIZATION.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
README.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
REFACTORING_EXAMPLE.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
SWAP_UI_IMPROVEMENTS.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
THEME.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
THEME_CUSTOMIZATION_GUIDE.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
WEBSOCKET_SETUP.md feat(phase-0): integrate admin clubs API with staging backend 1 month ago
docker-compose.dev.yml feat(phase-0): integrate admin clubs API with staging backend 1 month ago
docker-compose.yml feat(phase-0): integrate admin clubs API with staging backend 1 month ago
env.example feat(phase-0): integrate admin clubs API with staging backend 1 month ago
i18n-config.ts feat(phase-0): integrate admin clubs API with staging backend 1 month ago
index.html feat(phase-0): integrate admin clubs API with staging backend 1 month ago
next-env.d.ts feat(phase-0): integrate admin clubs API with staging backend 1 month ago
next-inspect.js feat(phase-0): integrate admin clubs API with staging backend 1 month ago
next.config.mjs feat(phase-0): integrate admin clubs API with staging backend 1 month ago
package-lock.json feat(phase-0): integrate admin clubs API with staging backend 1 month ago
package.json feat(phase-0): integrate admin clubs API with staging backend 1 month ago
postcss.config.cjs feat(phase-0): integrate admin clubs API with staging backend 1 month ago
tailwind.config.cjs feat(phase-0): integrate admin clubs API with staging backend 1 month ago
tsconfig.app.json feat(phase-0): integrate admin clubs API with staging backend 1 month ago
tsconfig.json feat(phase-0): integrate admin clubs API with staging backend 1 month ago
tsconfig.node.json feat(phase-0): integrate admin clubs API with staging backend 1 month ago

README.md

Playchoo Manager - Venue Administration Portal

Domain: https://manager.playchoo.com Project Owner: Frontend Faye (Uma Canvas) Status: Phase 0 - Initial scaffolding complete

Overview

This is the venue administration frontend for Playchoo, enabling venue administrators to manage clubs, courts, schedules, and bookings. It is a separate Next.js application from the consumer-facing app.

Architecture

  • Framework: Next.js 15 with App Router
  • Language: TypeScript
  • Styling: Tailwind CSS 4
  • State Management: React Context API
  • Auth: SwissOID (via playchoo-auth backend)
  • API: Python Flask API (py-playchoo-api)
  • CI/CD: Drone CI
  • Container: Docker

Project Structure

playchoo-manager-nextjs/
├── src/
│   ├── app/[locale]/          # Next.js app router pages
│   │   ├── admin/             # Admin routes
│   │   │   └── clubs/         # Club management
│   │   ├── layout.tsx         # Root layout
│   │   └── page.tsx           # Admin home
│   ├── components/            # React components
│   ├── hooks/                 # Custom React hooks
│   ├── lib/                   # Utilities
│   └── types/                 # TypeScript types
├── docker/                    # Docker configuration
├── .drone.yml                 # CI/CD pipeline
└── docker-compose.yml         # Production deployment

Development

Prerequisites

  • Node.js 22+
  • Docker & Docker Compose
  • Access to py-playchoo-api backend

Environment Setup

Copy .env.local.example to .env and configure:

# Application
APPLICATION_DOMAIN_NAME=manager.playchoo.com
REVERSE_DOMAIN=playchoo-manager-nextjs
APP_PORT=8200

# Development APIs
NEXT_PUBLIC_PYTHON_API_URL=http://localhost:5000
NEXT_PUBLIC_AUTH_BACKEND_URL=http://localhost:3700
NEXT_PUBLIC_WEBSOCKET_URL=ws://localhost:5000
NEXT_PUBLIC_SWISSOID_TARGET_SERVICE_HANDLE=playchoo
NEXT_PUBLIC_APP_VERSION=0.1.0-dev

Run Locally

# Install dependencies and start dev server (port 8100)
npm run dev

# Or manually
npm install
npm run dev

Build

npm run build
npm start  # Runs on port 8200

Docker

# Build
docker build -f docker/Dockerfile -t playchoo-manager .

# Run with docker-compose
docker-compose up -d

Phase 0 Implementation Status

Completed

  • Project scaffolded from playchoo-nextjs template
  • Configuration updated for manager.playchoo.com
  • Ports changed: dev (8100), prod (8200)
  • Customer-facing pages removed
  • Admin landing page created
  • /admin/clubs route with access-aware messaging
  • Docker and CI/CD configs updated

Pending (Blocked by Backend)

  • Auth integration - Blocked by Access Avery
    • Needs: Auth middleware exposing admin context
    • Needs: club_admin association checks
  • Club listing - Blocked by Data Dana
    • Needs: GET /admin/clubs endpoint
    • Needs: GET /admin/clubs/{club_id} endpoint

Phase 1 Roadmap

  • Slot definition management UI
  • Create/edit forms for slot templates
  • Materialisation status feedback
  • Integration with Job Jonah's materialisation job

Dependencies & Blocking

See docs/owners/ in py-playchoo-api for coordination:

  • Frontend_Faye.md - My status updates
  • Data_Dana-blocking-Frontend_Faye.md - API contracts I need
  • Frontend_Faye-blocking-*.md - Items blocking others

Deployment

Deployed via Drone CI on push to master:

  1. Build Docker image with BuildKit caching
  2. Push to registry.sn48.zivili.ch/meow/playchoo-manager-nextjs
  3. Deploy to production server via drone-deploy

URLs

Notes

  • This project shares the same backend APIs as the consumer app
  • Auth is handled via SwissOID sessions (same as consumer app)
  • Admin permissions are checked at the API level
  • UI gracefully handles missing permissions with access-aware messaging