5.9 KiB
OpenEventDatabase Backend
OpenEventDatabase (OEDB) is a database for events with geographic information. It is a collaborative way to share things that have no space in OpenStreetMap.
Getting Started
Prerequisites
- Docker and Docker Compose
- PostgreSQL (if running locally without Docker)
- Python 3.x (if running locally without Docker)
Installation
Copiez le fichier d'environnement pour accéder à la base de données.
cp .env.example .env
installez la base de données.
py -m venv venv
source venv/bin/activate
pip install -r requirements.txt
bash setup_db.sh
vous pouvez ajouter des données d'exemple:
cd data
py import_example_from_csv.co2db.py
Using Docker (Recommended)
-
Clone the repository:
git clone https://github.com/yourusername/openeventdatabase.git cd openeventdatabase/backend
-
Start the services using Docker Compose:
docker-compose up -d
This will start both the PostgreSQL database and the backend API server.
-
Access the API at
http://localhost:8080
Running Locally
-
Install dependencies:
pip install -r requirements.txt
-
Set up the database:
./setup_db.sh
-
Verify database tables are properly created:
./check_tables.sh
-
Start the server with uwsgi:
uwsgi --http :8080 --wsgi-file backend.py --callable app
Or with gunicorn:
gunicorn backend:app
Note: The server will automatically check database connectivity at startup and will exit if the PostgreSQL database is not responding.
If you encounter permission errors when accessing the API (such as "permission denied for table events"), run the setup script again to ensure proper permissions:
./setup_db.sh
You can also test database permissions with:
./test_permissions.sh
Or specifically test permissions on the events table:
./test_table_permissions.sh
Environment Variables
DB_NAME
: Database name (default: "oedb")DB_HOST
: Database host (default: localhost)DB_USER
: Database user (default: postgres)POSTGRES_PASSWORD
: Database passwordNEW_USER
: New PostgreSQL user to create with full permissions (default: "oedb_user")NEW_PASSWORD
: Password for the new PostgreSQL user (default: "oedb_password")
Mock Data
The repository includes scripts to create and check mock events in the database:
-
Create mock events:
./create_mock_events.py
This script creates 18 mock events (3 for each category: traffic, nature, weather, sport, conference, party) with start dates slightly before the current date and end dates far in the future.
-
Check mock events:
./check_mock_events.py
This script checks the mock events in the database, showing counts by category and date ranges for each event.
API Documentation
The OpenEventDatabase API allows you to search for events using various query parameters. You can filter events by:
- Event type or category (
what
) - Time period (
when
,start
,stop
) - Geographic location (
bbox
,near
,polyline
) - And more...
Query Parameters
For detailed information about the available query parameters, examples, and response format, see the API Query Parameters Documentation.
Search Endpoint
The API includes a dedicated search endpoint (/event/search
) that allows you to search for events using a GeoJSON geometry in the request body. This is particularly useful for complex spatial queries. For more information, see the Search Endpoint Documentation.
Anti-Spam and Caching Measures
The API implements caching and rate limiting to improve performance and prevent abuse. For more information about these measures, see the Anti-Spam and Caching Measures Documentation.
Testing
A comprehensive test plan is available for verifying the functionality of the API, including caching, rate limiting, and search features. See the Test Plan for details.
Swagger Documentation
Have a look at the swagger file for a complete API reference:
swagger.json
Démo
page de démo listant les évènements selon leur type, les afficher sur une carte. créer une page de démo qui permet de modifier un évènement, faire un lien vers cette page quand on ouvre une popup d'évènement sur la page de /demo. et afficher une icone pour les marqueurs de carte selon le type d'évènement, définis en quelques uns et utilise les icones de bulma css. vérifier le fonctionnement des endpoints de recherche avec les queryparameters, les mettre dans la page de démo.
la page /demo/by-what a une erreur, Error: Expecting value: line 1 column 1 (char 0) récupérer les évènements depuis osmcal dans osm_cal.py ✓ dans les extracteurs, vérifier qu'il n'existe pas déjà des évènements avec les mês propriétés avant de les créer. ✓
Database Schema
The following diagram shows the database schema for the OpenEventDatabase:
The database consists of three main tables:
- events: Stores event data including type, what, when, geo reference, and tags
- events_deleted: Archive of deleted events
- geo: Stores geometry data referenced by events
The events table has a foreign key relationship with the geo table through the events_geo field, which references the hash field in the geo table.
-- il manque l'attribution openstreetmap sur les cartes maplibre. ✓ ajouter une icone pour ajouter les sources https://source.cipherbliss.com/tykayn/oedb-backend ✓
ajouter un lien sur la page de démo qui montre comment faire une recherche vers des évènements de type music, et de type sport ✓
proposer un contrôle de maplibre pour changer de fond de carte openstreetmap vecto ou raster. ✓
License
See the LICENSE file for details.