FestiMobility is a web application for sustainable mobility management, making carpooling easy for events such as festivals or concerts. It connects drivers proposing rides and passengers seeking to attend an event, with interactive map visualization.
- Two user types: drivers and passengers
- Ride proposals with schedules and departure/arrival points
- Search and filter rides
- Interactive map (OpenStreetMap & Leaflet)
- Smart ride matching (Valhalla)
- Internal messaging system
- Booking and seat management
- Notifications
- Django 5.2
- HTMX
- Bootstrap 5
- OpenStreetMap & Leaflet
- Valhalla (route calculation)
- Mapbox Matrix API (MVP)
- poetry
- PostgreSQL (recommended)
- RESTful API
- TDD (Test Driven Development)
FestiMobility offers two methods for route calculation and driver/passenger matching:
- Principle: Uses the Mapbox cloud API to calculate distances/durations between points (drivers, passengers).
- Pros:
- Fast integration (REST API, no infrastructure to manage)
- Maintained map data and algorithms from Mapbox
- Good support and documentation
- Cons:
- Usage limits depending on plan (paid above free quota)
- Reliance on a third-party service (GDPR to consider)
- Less customization possible
→ This solution is prioritized for the MVP to accelerate development and user testing.
- Principle: Self-hosted open source routing server based on OpenStreetMap.
- Pros:
- Data sovereignty
- Advanced customization (profiles, algorithms, etc.)
- No recurring costs for external services
- Cons:
- More complex setup and technical maintenance
- Requires server resources
→ Valhalla integration remains a target for the stable version, to ensure full control over costs and data.
valhalla_matching_example.py: Matching example using Valhalla (requires local server)demo_mapbox_matrix.py: Equivalent example using Mapbox API (API key required)
See each script for specific instructions.
- Clone the repository:
git clone <repo-url> cd FestiMobility
- Copy the environment example file: Edit variables as needed (database, Django secret, etc.)
cp env_example .env
- Install Python dependencies with poetry:
poetry install
- Prepare Valhalla routing data (OSM + tiles): By default, this command now downloads a minimal OSM extract around Châteauroux (very small area, for testing only), generates Valhalla tiles, and prepares the
make install
./valhalla_datafolder. The Python example has also been adapted to use only coordinates in this area. - Start Valhalla (routing API) and PostgreSQL: Services will be available at http://localhost:8002 (Valhalla) and localhost:5432 (PostgreSQL). Variables from .env are automatically loaded by docker-compose.
make valhalla-up
- Apply Django migrations:
poetry run python manage.py migrate
- Start the Django server:
poetry run python manage.py runserver
make install: prepare Valhalla datamake valhalla-up: start Valhalla and PostgreSQL in backgroundmake valhalla-down: stop servicesmake valhalla-clean: remove all generated data
TDD is the preferred approach. To run tests:
poetry run python manage.py testPlease refer to the specifications (cahier_des_charges.md) before contributing.
AGPLv3