Simple Micro Service Architecture
Backend : Python Frontend : NextJS Database : PostgreSQL
Architecture : Docker compose Production : Docker swarm
Service : API, PostgreSQL, Adminer, NextJs web app.
To launch the the Docker network go to ARCHITECTURE/docker/README.md for documentation.
To access the API web interface go to : http://localhost:8000
To access the Vercel frontend go to : http://localhost:3000/pages
To access the Database use adminer via : http://localhost:8080
The secrets are given inside the docker-compose file in ARCHITECTURE/docker/compose.dev.yaml => The server name is the docker service name.
This is a template feel free to adapt it to your need; Some simple advise to start, create a .env file to enter secrets and open them inside the BACKEND_API/configuration.py file.
For the frontend I advise you to browse the Vercel template to copy one for a good start.
For production uses the prod.Dockerfile for the frontend and not the dev.Dockerfile.
Here’s a clean, concise English version of your project that you can reuse as a prompt or presentation base, plus a logical development roadmap (very useful for interviews or planning).
WannaGo is a microservices-based web/mobile application that helps users discover and plan activities (concerts, sports, cultural events, etc.) based on their preferences, location, social network, and external data sources. (For the moment based in France principaly)
The platform aggregates events from multiple APIs, enriches them (weather, popularity), and provides personalized recommendations.
- Authentication (JWT-based): sign up, login, logout, password management
- User profile: personal info, location, preferences
- Interests: activity types, mobility radius, weather preferences
- Social features: friends, shared activities
- History: viewed events, participations, reviews
- Fetch events from external APIs (Ticketmaster, OpenAgenda, etc.)
- Normalize data into a unified format
- Remove duplicates
- Multi-source aggregation
- Filtering (distance, date, category, price)
- Caching system for performance
- Interactive map (OpenStreetMap)
- Geolocation-based search
- Event list with sorting (distance, date, popularity)
- Pagination
- Full event information (date, location, price, description, image)
- Weather forecast integration
- Distance from user
- Participation & sharing features
- Friends attending
- Join / leave events
- View participants
- See friends attending
- Users can rate and review events
- Display average ratings and feedback
Personalized suggestions based on:
- User preferences
- History
- Friends’ activity
- Distance
- Weather
Simple scoring example:
score = preferences + friends + weather + proximity
-
Current and forecast weather (OpenWeather API)
-
Used for:
- Display
- Recommendation adjustments
-
Central entry point for frontend
-
Orchestrates microservices:
- User Service
- Event Service
- Recommendation Service
Main endpoints:
/events/recommendations/users/login/friends/participation/review
List of API i wanna use : For cultural events Ticketmaster (already implemented) Data.culture.gouv.fr OpenAgenda API DATAtourisme
Weather : OpenWeather
Maps: OpenStreetMap
- Friends activity feed
- Event sharing
- Group suggestions
-
AI (OpenAI):
- Event summarization
- Smart recommendations
- Chatbot (“What to do this weekend?”)
-
Notifications
-
Trending analysis
- Expose event data for partners (tourism, Airbnb, etc.)
- REST API (JSON format)
- Microservices architecture
- Reverse proxy
- Caching (events, weather)
- Logging & monitoring (interceptors)
- REST APIs
Here’s the smart order to build this project (this is what recruiters love to see 👇):
👉 Goal: Have a working app quickly
-
User Service (basic)
- Signup / Login (JWT)
- Basic profile
-
Event Aggregator (simple)
- Connect to ONE API (e.g. Ticketmaster)
- Normalize data
- Store events
-
Basic API Gateway
/events/login
-
Simple Event List (no map yet)
- Display events
- Basic filtering (date, category)
👉 Goal: Make it actually useful
-
Geolocation + distance filtering
-
Interactive Map (OpenStreetMap)
-
Event Details Page
-
Participation system
- Join / leave event
👉 Goal: Add engagement
- Friends system
- See friends’ events
- Event sharing
👉 Goal: Make it smart
- Recommendation engine (simple scoring first)
- Weather integration
- Improve recommendations with weather
👉 Goal: Make it production-ready
- Caching (events + weather)
- Multi-API aggregation
- Deduplication logic
- Pagination & performance
If you need a strong one-liner explanation:
“WannaGo is a microservices-based event discovery platform that aggregates multi-source data and provides personalized, context-aware recommendations using user preferences, geolocation, social signals, and weather conditions.”
- Center map around france (?),
- Improve recommendations with weather (?),
- Multi-API aggregation (More api entry, more country),
- Deduplication logic,
- Pagination & performance,