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.
|
continuous-integration/drone/push Build is passing
Details
- Fix approve/reject API URLs (add /competitions prefix, send empty JSON body) - Fix pending count in HUD (use pending_registrations field) - Fix registration name display (show member names for individuals) - Add pending_registrations to Competition type |
1 week ago | |
|---|---|---|
| dictionaries | 3 weeks ago | |
| docker | 1 month ago | |
| docs | 1 month ago | |
| public | 1 month ago | |
| src | 1 week ago | |
| .deploy.yml | 1 month ago | |
| .dockerignore | 1 month ago | |
| .drone.yml | 3 weeks ago | |
| .eslintrc.json | 1 month ago | |
| .gitignore | 1 month ago | |
| API.md | 1 month ago | |
| ARCHITECTURE_IMPROVEMENTS.md | 1 month ago | |
| CLAUDE.md | 1 month ago | |
| NEXTJS15.md | 1 month ago | |
| OPTIMIZATION_AUDIT.md | 1 month ago | |
| PHASE_0_STATUS.md | 1 month ago | |
| PIPELINE_OPTIMIZATION.md | 1 month ago | |
| README.md | 1 month ago | |
| REFACTORING_EXAMPLE.md | 1 month ago | |
| SWAP_UI_IMPROVEMENTS.md | 1 month ago | |
| THEME.md | 1 month ago | |
| THEME_CUSTOMIZATION_GUIDE.md | 1 month ago | |
| WEBSOCKET_SETUP.md | 1 month ago | |
| docker-compose.dev.yml | 1 month ago | |
| docker-compose.yml | 1 month ago | |
| env.example | 1 month ago | |
| i18n-config.ts | 1 month ago | |
| index.html | 1 month ago | |
| next-env.d.ts | 1 month ago | |
| next-inspect.js | 1 month ago | |
| next.config.mjs | 1 month ago | |
| package-lock.json | 2 weeks ago | |
| package.json | 2 weeks ago | |
| postcss.config.cjs | 1 month ago | |
| proxies.mjs | 1 week ago | |
| proxy-api.mjs | 1 week ago | |
| proxy-auth.mjs | 1 week ago | |
| tailwind.config.cjs | 1 month ago | |
| tsconfig.app.json | 1 month ago | |
| tsconfig.json | 1 month ago | |
| tsconfig.node.json | 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/clubsroute 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_adminassociation checks
- ⏳ Club listing - Blocked by Data Dana
- Needs:
GET /admin/clubsendpoint - Needs:
GET /admin/clubs/{club_id}endpoint
- Needs:
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 updatesData_Dana-blocking-Frontend_Faye.md- API contracts I needFrontend_Faye-blocking-*.md- Items blocking others
Deployment
Deployed via Drone CI on push to master:
- Build Docker image with BuildKit caching
- Push to registry.sn48.zivili.ch/meow/playchoo-manager-nextjs
- Deploy to production server via drone-deploy
URLs
- Dev: http://localhost:8100
- Staging: TBD
- Production: https://manager.playchoo.com
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