Skip to content

mayadomi/sidequester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TDU Sidequester

A web-based event planner and schedule viewer for the Santos Tour Down Under cycling festival.

Inspired by the ongoing work by David Rossi who created and has maintained All The TDU for the last 8 years, I wanted to create a version that helped me acheive two main goals:

  • A searchable/filterable view of events through a schedule and map lens
  • A project to help me upskill in Laravel, Claude Code and AI/LLM integrations.

Events listing

Features

  • Event browser — searchable, filterable listing of all TDU events with category, cost, distance, recurrence, and women's event indicators
  • Timeline / schedule view — visual day-by-day timeline grid showing overlapping events across the festival week
  • Map view — showing all the ride routes, event locations and race stages.
  • Event detail pages — full event info with banner images and route links
  • Favourites — authenticated users can save events to a personal shortlist
  • Editor role — credentialed users can create and edit events, upload banner images, and manage sponsor logos
  • Admin panel — user management and editor access approval workflow
  • Data import — scraper and importer pipeline for ingesting event data from the official TDU program

Schedule view

Map view

Stack

Layer Technology
Backend PHP 8.2+, Laravel 12
Frontend React 19, TypeScript, Inertia.js
Styling Tailwind CSS 4, Radix UI
Auth Laravel Fortify (with 2FA)
Media Spatie MediaLibrary
Routing Laravel Wayfinder (type-safe)
Database Postgres Postgis (Docker)

Getting Started

Prerequisites

  • PHP 8.2+ (via Laravel Herd or another local server)
  • Composer
  • Node.js 20+

Installation

git clone https://github.com/mayadomi/sidequester.git
cd sidequester

composer install
npm install

cp .env.example .env
php artisan key:generate

php artisan migrate
php artisan db:seed

npm run build

Development

composer dev        # starts PHP server, queue worker, and Vite together

Or run each separately:

php artisan serve
php artisan queue:listen
npm run dev

Importing Event Data

php artisan events:import

The importer reads JSON scraped from the TDU website and normalises it against the canonical categories, sponsors, and locations defined in config/tdu.php.

The scraped data required a meaningful amount of manual curation — event titles, categories, and venue names varied significantly across the source, and sponsor associations were often missing or inconsistent. The normalisation aliases in config/tdu.php capture the bulk of these mappings, but edge cases were resolved by hand.

Event detail

User Roles

Role Access
viewer Browse events, manage favourites
editor Create and edit events, manage sponsor images
admin Full access including user management

Viewers can request editor access from the sidebar; admins approve requests from the Users panel.

Dark Mode

Key Commands

composer test               # lint + full test suite
php artisan test            # tests only
composer lint               # PHP auto-fix (Pint)
npm run types               # TypeScript check
npm run lint                # ESLint auto-fix
php artisan wayfinder:generate   # regenerate type-safe route helpers

Next Steps

Agentic integration

A planned agentic layer would allow users to describe what they're looking for in natural language — "show me beginner-friendly morning rides near the city under 30km" — and have an AI assistant query, filter, and build a personalised schedule on their behalf. This would sit on top of the existing filter and favourites infrastructure and could also assist editors with event data entry and normalisation.

License

MIT

About

A platform to connect riders and fans to cycling events forming part of the Tour Down Under.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors