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 251b849500
continuous-integration/drone/push Build is passing Details
feat(admin): add materialisation trigger/status UI + court management infrastructure
Phase 1 continuation + Phase 2 preparation per Chief Cole request (Chief_Cole-20251107102650)

Materialisation UI (Phase 1 continuation):
- Created MaterialisationStatusPanel component with 5 states (never run, success, running, failed, rate limited)
- Polling strategy: 3-second intervals while job running
- Rate-limit countdown timer with live updates
- Idempotency key generation (UUID v4) for manual triggers
- Mock data for development with state cycling
- Integrated into slot definitions page between header and table
- TypeScript types: MaterialisationStatus, MaterialisationTriggerRequest/Response, helpers
- API client with mock implementation (USE_MOCKS flag)
- Professional slate theme consistent with existing UI

Court Management Infrastructure (Phase 2 preparation):
- Created TypeScript types for courts and club profile
- Court types: Court, CourtRequest, CourtDependencies
- Profile types: ClubProfile, ClubProfileUpdateRequest
- Common timezones list (40+ IANA zones)
- Validation helpers (email, URL)
- API client with full CRUD mocks:
  - getClubProfile, updateClubProfile
  - getCourts, createCourt, updateCourt, deleteCourt
  - getCourtDependencies (cascade blocking)
- Mock data: 3 courts, full profile, dependency simulation
- In-memory mock state management

Implementation ready for:
- Next: Club detail tab navigation (Profile/Courts/Slot Definitions)
- Next: Profile tab with edit form
- Next: Courts tab with add/edit/delete modals

Build tested and passed (npm run build successful)
1 month ago
dictionaries feat(slot-definitions): add create/edit form with validation 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(admin): add materialisation trigger/status UI + court management infrastructure 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 fix(auth): update manager app to use dedicated auth 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(landing+auth): add marketing landing page and admin auth guards 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