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
Phase 2 implementation per Chief Cole approval (Chief_Cole-20251107103829) Club Detail Page Restructure: - Replaced single-view club detail with tabbed interface - Three tabs: Profile, Courts, Slot Definitions (links to existing page) - Tab navigation with active state highlighting - Breadcrumb navigation maintained Profile Tab (ClubProfileTab): - Full club metadata editing form with sections: - Basic Information: name (required), timezone (required, IANA dropdown) - Location: address line 1/2, city, postal code, country (all optional) - Contact: phone, email (validated), website (validated) (all optional) - Integration: provider, remote club ID (read-only for Phase 2) - Client-side validation: required fields, email format, URL format - Server-side validation: maps backend errors to fields - Success/error messaging with auto-hide success toast - Cancel button resets form to original values - Professional slate theme form styling Courts Tab (ClubCourtsTab): - Court list view with empty state - Add/edit/delete actions per court - Add Court modal: single field (name), duplicate name validation - Edit Court modal: pre-populated, same validation - Delete with cascade blocking: - Dependency check before delete (slot definitions, upcoming bookings) - Blocking modal shows dependency counts with resolution steps - Confirmation modal for clean delete (no dependencies) - In-memory mock data management (3 courts default) - Court 1 has mock dependencies (12 slot defs, 45 bookings) for testing Modal Components: - CourtFormModal: Add/edit with field-level validation - DeleteConfirmationModal: Confirm before deletion - DependenciesBlockingModal: Shows why delete is blocked + resolution steps All components use professional slate theme All modals use backdrop blur + center positioning All forms have loading states + error handling Build tested and passed (npm run build successful) Total new lines: ~1400 across 3 components Ready for mock-driven testing while Backend Brooke builds APIs |
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