Weekly Registration System for Ski School Ski Zadov

Published:

Weekly Registration System for Ski School

This project is a production-ready webpage application developed for Ski Zadov, my family ski school, in order to automate and manage weekly registrations for their seasonal ski courses.

🏔️ Live project:
👉 https://vikendovelyzovani.zadov.cz/
(The live version is active, though the backend database is still being developed.)

Ski Zadov Registration System Screenshot


Core Problem & Solution

Problem

Customers purchase a season course, which entitles them to up to 8 lessons out of 12 available weeks during the winter with a possibility a book a given weekend lesson till each wednesday night. Managing these constraints manually, ensuring no over-booking, handling multiple time slots, and enforcing weekly cutoffs, was time-consuming and error-prone.

Solution

A Flask + PostgreSQL web app that:

  • Automates registration limits (8 out of 12 weeks)
  • Allows two/even three time slots per weekend (Friday/Saturday)
  • Automatically closes registration every Wednesday at 24:00
  • Provides an admin dashboard with Google Sheets synchronization

Architecture Overview

Tech Stack

  • Backend: Flask (Python)
  • Database: PostgreSQL (hosted on Railway)
  • ORM: SQLAlchemy
  • Hosting: Railway.app
  • Integrations: Google Sheets API for attendance tracking
  • Import: Secure CSV import of registered students from e-shop exports

Key Features

  • Unique constraints prevent duplicate registrations
  • Schema migration scripts for evolving database models
  • Secure environment handling via config.py
  • Optimized admin interface for real-time oversight

Live Deployment

🌐 Live web app: https://vikendovelyzovani.zadov.cz/
(Used in production by Ski Zadov to manage weekly registrations for the ski school.)