-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Joël Deffner edited this page Jul 17, 2026
·
3 revisions
FlightMeet is a community platform for paraglider pilots: find and create flying meets, team up in flight groups, chat with other pilots, and check launch-site weather before committing to a flying day.
The project (repository fwebdev) is a decoupled two-tier application living in a single repository:
-
frontend/: a React 19 single-page application (Vite + TypeScript) that renders all UI. -
app/: a CodeIgniter 4 (PHP 8.2) backend that serves a JSON-only API under/api/*. It never renders HTML.
In production the SPA is compiled into public/ and served from the same origin as the API at https://team11.wi1cm.uni-trier.de/public/.
| Feature | Summary |
|---|---|
| Meet discovery | All flying meets as cards with title, spot, region, date/time, experience level, participant count and open/full status. Instant client-side search plus region and level filters. |
| Join / leave | One-click participation with immediate feedback. Full meets are locked automatically. Counts and status are always derived, never stored. |
| Meet management | Create and edit meets with validation; pick the flying spot on an interactive Leaflet map, or let the backend geocode it. |
| Flight groups | Regional and interest-based pilot communities, each with its own chat channel. |
| Chat | A global "All pilots" channel plus per-group channels. Full page at /chat and a floating popover launcher on every page. Polls every 3 seconds. |
| Weather | Open-Meteo forecasts with geocoding search, wind-first data display, and cached weather reports shown on a clustered map. |
| Accounts & profiles | Registration, session login (CodeIgniter Shield), public pilot profiles, subscription tiers (pilot / club / school), and roles (user / moderator / admin). |
| Admin dashboard | User management with server-side paging, search, filtering and sorting (TanStack Table). |
| Landing page | Animated marketing showcase built with GSAP scroll animations. |
| Page | What it covers |
|---|---|
| Architecture | The two-tier design, request flow, and how the SPA and API are served together |
| Getting Started | Prerequisites, setup, dev workflow, test accounts |
| Backend | CodeIgniter controllers, routes, filters, and libraries |
| Frontend | React routing, pages, components, and the UI stack |
| API Reference | The full JSON contract between SPA and backend |
| Authentication and Roles | Shield sessions, the role model, CSRF, and the admin area |
| Database | Schema, migrations, and seeders |
| Weather Integration | Open-Meteo geocoding/forecast usage and report caching |
| Deployment | Production build, .htaccess routing, and the university server |
-
docs/SPECIFICATION.md: functional requirements (F1 to F6) -
docs/API_FLIGHTMEET.md: the JSON API contract -
docs/AUTH.md: auth and permissions model -
CLAUDE.md: architecture overview and coding conventions
All UI is React. A new page means a route in
frontend/src/plus a JSON endpoint under/api/.... CodeIgniter never renders HTML (view()is off-limits); it returns JSON only.
FlightMeet
Code
Reference