Skip to content

malteschaaf/wellenwerk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wellenwerk Project

Overview

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.

Key Features

  • 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.

Data Structure

Session Document

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).

Cache

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.

Usage

The Wellenwerk Project dashboard is accessible here:

https://wellenwerk.streamlit.app

Use the dashboard to explore historical session availability and analyze booking trends.

Roadmap

  1. Data Analysis: Conduct a detailed analysis of already collected data to uncover booking patterns, peak times, and trends.
  2. ML Forecasting: Implement a machine learning model to predict session availability and recommend sessions with minimal participants.
  3. Dashboard Enhancements: Visualize predicted availability and historical trends in the Streamlit app.
  4. User Recommendations: Provide suggestions for optimal booking slots based on forecasts.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors