Planet Positive Sport
A multi-tenant sustainability assessment and CO₂ reporting platform for international sports events
A multi-tenant sustainability assessment and CO₂ reporting platform for international sports events
Planet Positive Sport (PPS) is a multi-tenant sustainability assessment and CO₂ reporting platform for major sporting events, built for an international sports federation. A local organizing committee runs a guided, multi-category assessment for an event, pulls footprint data straight from its suppliers, sets objectives and action plans, and produces a CO₂-calculated report that an independent sustainability expert reviews before sign-off — all in one server-rendered tool.
What looks like a single questionnaire is, underneath, a full platform: five distinct user roles, a per-tenant federation model with white-label branding, a no-code questionnaire builder with a safe deploy engine, an emission-factors model, an account-free supplier data pipeline, a complete expert-review loop, and a privacy-respecting analytics suite. The work previously scattered across spreadsheets, email threads, and manual carbon math now lives in one place, designed for overwhelmed, non-technical organizers: clean, familiar, and low on cognitive load.
Sustainability reporting for a major sporting event is a coordination problem before it's an environmental one. The footprint data lives with dozens of third parties — the venue, the hotels, the caterer, the freight and mobility providers — and the organizer has to chase all of it, normalize it, run the carbon calculations by hand, and turn the result into something credible. Most organizing committees are volunteers doing this around a full-time job, with no sustainability background and no tooling.
The hard part isn't any single calculation. It's making a multi-party, multi-category, multi-role assessment feel manageable: knowing what to ask, who to ask, what "good" looks like, and where you stand — without drowning the organizer in a spreadsheet, and without losing the auditability a federation needs to stand behind the result.
PPS turns the assessment into a guided path with a state machine underneath. The LOC picks an official event from a curated list (auto-filling discipline, type, participants, dates, and country), adds its venues with country-scoped city pickers, then works category by category: set objectives and an action plan, answer a mix of primary and secondary questions with comments and document uploads, and watch a single progress engine keep the percentage in sync everywhere it appears.
Suppliers never need an account. The organizer invites each one by email, and the platform sends a category-specific form pre-populated with the event's details and any answers already saved, ready to resume. Submitted data goes through admin review — approve, edit-and-approve, or reject-with-feedback — and approved figures flow into a read-only Calculator category, where a year-aware emission-factors model turns numeric inputs into CO₂e, rolled up per venue where it matters.
When every category is complete, the owner submits the assessment for review. An assigned expert opens the same questionnaire in a locked, read-only mode and layers in three kinds of feedback: non-blocking recommendations, blocking action-needed comments that send the assessment back, and per-category sign-offs. Final confirmation is gated on every category being signed off with zero unresolved blocking comments. Once it clears, the event is marked completed and a branded, downloadable PDF report is generated.
PPS is genuinely multi-role: five user roles (administrator, organizer, collaborator, expert, supplier) each get their own dashboard, permissions, and access rules. Authorization is layered — authenticated, then email-verified, then approved — with finer per-event roles resolved on top (owner, collaborator, assigned expert, admin) so the same screens can serve different audiences safely.
Crucially, the LOC overview, category page, and questionnaire are built once and reused across all three review audiences via an audience flag. The same component tree renders as an editable organizer surface, a read-only expert review with inline comments, or an admin view — no duplicated UI, one source of truth for layout and copy.
A finite event-status state machine — not started, in progress, in review, fix needed, completed — drives every contextual call-to-action, lock, and badge across the dashboard, the event overview, the questionnaire, and the expert and admin surfaces. The "Submit" gate is computed from the exact same completeness predicate the server runs on write, deliberately decoupled from the rounded display percentage, so the UI can never enable a button the backend would reject. Once an assessment goes into review, every write path re-checks status server-side before persisting, guarding against stale or tampered clients even though the UI already hides the affordance.
The questionnaire itself is rich: multiple question types (single-choice, multi-select, numeric, free text, and a matrix table), inline autosave on change, per-question comments and file attachments, answered/unanswered/has-expert-comment filters, and per-venue iteration that multiplies question slots and progress by the number of venues. Alongside the questions sit an objectives-and-action-plan editor — objectives with achievement status and evidence, action items linked to a primary objective plus additional ones, and an optional per-category quote — with the card the user is editing kept open across every HTMX swap.
{{param}} interpolation, CLDR-correct pluralization via Intl.PluralRules, and cached date/number/currency formatters, delivered through fluent-html scoped context rather than prop drillingOperations dashboard for a Slovenian property inspection company
National innovation awards platform for Slovenia's Chamber of Commerce
Event carpooling platform with real-time CO2 impact tracking