This Project is focused on retrieving historical data of Wellenwerk's indoor rapid surf wave (standing river wave). The goal is to track slot availabilities, as slots usually have a capacity of 12 people for a limited time (e.g., 60 minutes for an advanced session). Surfers naturally try to book sessions with fewer people.
To gain insights into the booking behavior of Wellenwerk surfers, the availabilities are tracked. The Wellenwerk booking API is fetched at regular intervals, and the availability of each session is stored in a Supabase database. The historical data is then presented in a Streamlit app.
The future goal of this project is to forecast the booking behavior of Wellenwerk customers to help identify sessions with the least participants.
- Session Management: Each surf session is stored as a document containing start time, session type, and a history of available slots.
- Dynamic Slot Updates: New availability entries are appended only when changes occur, reducing unnecessary updates.
- Cloud Functions: A Deno function fetches and updates session availability in real-time.
- Database Integration: Supabase is used for scalable storage of historical session data.
- Cache Layer: The cache stores the latest availability snapshot to optimize database operations.
A session document contains:
id(String): Unique identifier for the session instance.session_id(String): Identifier for the session type.session_type(String): Type of session (e.g., Beginner, Intermediate, Advanced, Surfnight).start_time(Datetime): Start time of the session.end_time(Datetime): End time of the session.availability(JSONB): History of available slots:timestamp(Datetime): Time of availability recording.available_slots(Integer): Number of slots available at that time.
deleted_at(Datetime | null): Timestamp when the session was marked as deleted (null if still active).
The cache stores the most recent availability data to reduce repeated database writes. It is updated with each fetch and flushed periodically to maintain consistency.
The Wellenwerk Project dashboard is accessible here:
https://wellenwerk.streamlit.app
Use the dashboard to explore historical session availability and analyze booking trends.
- Data Analysis: Conduct a detailed analysis of already collected data to uncover booking patterns, peak times, and trends.
- ML Forecasting: Implement a machine learning model to predict session availability and recommend sessions with minimal participants.
- Dashboard Enhancements: Visualize predicted availability and historical trends in the Streamlit app.
- User Recommendations: Provide suggestions for optimal booking slots based on forecasts.