This side project is a technical playground for practicing a Go-based stack with MongoDB, GraphQL. It processes open data on bike availability in Paris, aggregating the number of available docks and bikes over time.
- Go – Backend services and data processing
- MongoDB – Stores raw and aggregated bike station data
- GraphQL – API layer for querying station data
- Fetch real-time bike station data at regular intervals and store it in MongoDB.
- Use MongoDB Change Streams (watcher) to detect and record station update events.
- Aggregate updates to compute rolling sums over 15, 30, and 60 minutes.
- Expose aggregated data through a GraphQL API.
- The Collector service fetches data and writes it to MongoDB.
- The Watcher listens to MongoDB change streams (oplog) and logs events to a dedicated collection.
- The TimeSeries service aggregates those events into time-based summaries.
- The GraphQL API exposes both raw and aggregated data to clients.
