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
Added error handling to prevent middleware crashes when browsers send invalid locale codes. Filters out malformed locale values before passing to Intl.getCanonicalLocales, with fallback to default locale if all values are invalid. Fixes: RangeError: Incorrect locale information provided |
1 month ago | |
|---|---|---|
| dictionaries | 1 month ago | |
| docker | 1 month ago | |
| docs | 1 month ago | |
| public | 1 month ago | |
| src | 1 month ago | |
| .deploy.yml | 1 month ago | |
| .dockerignore | 1 month ago | |
| .drone.yml | 1 month ago | |
| .drone.yml.back | 1 month 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 | 1 month ago | |
| package.json | 1 month ago | |
| postcss.config.cjs | 1 month 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