Die Party API ist eine moderne Webanwendung zur Verwaltung von Veranstaltungen (Events). Sie richtet sich an Entwicklerinnen und Entwickler, die Events anlegen, durchsuchen und per Schnittstelle in andere Anwendungen integrieren möchten. Nutzerinnen und Nutzer können sich registrieren, einloggen und neue Events mit Angaben zu Titel, Beschreibung, Datum, Ort, Stadt und Veranstalter erstellen. Alle Event-Daten werden in einer Graphdatenbank Neo4j abgelegt, während sich die Benutzerverwaltung in einer SQLite-Datenbank befindet.
Funktionsübersicht.
1. Erstellung von Veranstaltungen (Events)
Über den Endpunkt /events können autorisierte Nutzer per POST-Anfrage oder über ein Webformular neue Events hinzufügen. Dabei validiert die Party API Eingaben wie Titel, Datum (im ISO-Format) und Beschreibung. Optional lassen sich eine Stadt, ein Veranstaltungsort und ein:e Organisator:in zuordnen. Technisch werden diese als Knoten (:Event, :City, :Location, :Organizer) und Beziehungen (IN_CITY, LOCATED_AT, ORGANIZED_BY) in Neo4j gespeichert.
2. Suche nach Events
Mit der Route /search bietet die Party API eine flexible Suchfunktion. Suchkriterien umfassen:
Die Party API nutzt SQLite für das User-Management. Neue Nutzer:innen legen ihren Account über /register an. Passwörter werden m sicher gehasht. Über /login authentifizieren sie sich; bei erfolgreichem Login wird das letzte Anmeldedatum protokolliert.
4. GraphQL-Schnittstelle
Zusätzlich zur REST-API stellt die Party API unter /graphql eine GraphQL-API bereit. Entwickler:innen können so genau die Daten abfragen, die sie benötigen – etwa alle Events in einer bestimmten Stadt oder sämtliche Veranstalter:innen. Die GraphQL-Schnittstelle nutzt das Python-Paket graphene und ermöglicht ein performantes, typisiertes Abfragen von Event-, Stadt-, Location- und Organizer-Knoten.
Technische Architektur
Die Kombination aus Graph- und relationaler Datenbank zeigt einen hybriden Ansatz: Benutzer:innen und Logindaten bleiben in einer leichtgewichtigen SQL-Datenbank, während Events als Netzwerk von Knoten und Kanten in Neo4j abgebildet werden – ideal, um komplexe Beziehungen performant abzufragen. Dank GraphQL können Frontend-Entwickler:innen exakt das Datenmodell nutzen, das sie für ihre Anwendung brauchen.
Funktionsübersicht.
1. Erstellung von Veranstaltungen (Events)
Über den Endpunkt /events können autorisierte Nutzer per POST-Anfrage oder über ein Webformular neue Events hinzufügen. Dabei validiert die Party API Eingaben wie Titel, Datum (im ISO-Format) und Beschreibung. Optional lassen sich eine Stadt, ein Veranstaltungsort und ein:e Organisator:in zuordnen. Technisch werden diese als Knoten (:Event, :City, :Location, :Organizer) und Beziehungen (IN_CITY, LOCATED_AT, ORGANIZED_BY) in Neo4j gespeichert.
2. Suche nach Events
Mit der Route /search bietet die Party API eine flexible Suchfunktion. Suchkriterien umfassen:
- Volltextsuche im Titel oder der Beschreibung
- Filter nach Stadt, Veranstaltungsort oder Organisator:in
- Direktes Abrufen eines einzelnen Events nach ID
Das Ergebnis ist eine JSON-Liste der passenden Events mit allen relevanten Feldern.
Die Party API nutzt SQLite für das User-Management. Neue Nutzer:innen legen ihren Account über /register an. Passwörter werden m sicher gehasht. Über /login authentifizieren sie sich; bei erfolgreichem Login wird das letzte Anmeldedatum protokolliert.
4. GraphQL-Schnittstelle
Zusätzlich zur REST-API stellt die Party API unter /graphql eine GraphQL-API bereit. Entwickler:innen können so genau die Daten abfragen, die sie benötigen – etwa alle Events in einer bestimmten Stadt oder sämtliche Veranstalter:innen. Die GraphQL-Schnittstelle nutzt das Python-Paket graphene und ermöglicht ein performantes, typisiertes Abfragen von Event-, Stadt-, Location- und Organizer-Knoten.
Technische Architektur
- Backend: Python Flask als Webserver
- GraphQL: graphene + flask_graphql für Schema und Endpunkt
- Graphdatenbank: Neo4j via py2neo zur Modellierung vernetzter Event-Daten
- Relationale Datenbank: SQLite für Benutzerkonten
- CORS: flask_cors erlaubt Zugriffe von beliebigen Domains (z. B. React- oder Angular-Frontends)
Die Kombination aus Graph- und relationaler Datenbank zeigt einen hybriden Ansatz: Benutzer:innen und Logindaten bleiben in einer leichtgewichtigen SQL-Datenbank, während Events als Netzwerk von Knoten und Kanten in Neo4j abgebildet werden – ideal, um komplexe Beziehungen performant abzufragen. Dank GraphQL können Frontend-Entwickler:innen exakt das Datenmodell nutzen, das sie für ihre Anwendung brauchen.