Laravel Vue.js

SwimSport
Laravel web application for managing a swimming school

A custom Laravel, Inertia.js and Vue.js web application built for SwimSport, a company organizing swimming lessons and sports camps. The system helps manage students, lesson groups, instructors, attendance, registrations, pricing and payments in one dedicated platform.
Client: SwimSport

The challenge

SwimSport needed more than a standard administration panel. The system had to support real day-to-day operations of a swimming school, including mobile use by instructors during classes. It needed to make attendance checking faster, simplify group management and reduce manual coordination between administrators, instructors and parents.

One of the most important parts of the project was the electronic attendance journal. Instructors needed to quickly view assigned groups, check attendance, move students between lessons and register make-up classes directly during or around pool sessions. This made mobile usability and a clear calendar interface essential parts of the implementation.

Another challenge was payment management. SwimSport did not rely only on online payments, so the system needed a way to register bank transfers efficiently. Instead of checking payments manually one by one, the application had to support importing bank CSV files and matching payments to student charges using a unique payment identifier or bank account number.

Solution

I designed and developed a custom Laravel, Inertia.js and Vue.js application with several connected modules: an instructor calendar, student and parent accounts, an administrative dashboard, camp registration, price management, payment handling and attendance management.

The system allows SwimSport to manage groups, schedules, students, instructors, camps, pricing rules, discounts, days off and attendance data from one place. It also supports list generation and Excel exports, which makes the application useful not only for daily operations but also for administration and reporting.

I also implemented a bank payment import mechanism. The administrator can upload a CSV file exported from the bank, and the system matches incoming transfers to student charges using a unique payment identifier or bank account number. This reduced manual payment checking and made it possible to handle offline bank transfers without a full online payment gateway.

Key features

The application includes modules for managing students, parents, instructors, lesson groups, schedules, attendance, camps, pricing, discounts and payments.

One of the central features is the electronic attendance journal. Instructors can quickly view assigned groups, check attendance, register absences, manage make-up lessons and work with the system directly on mobile devices during swimming classes.

The system also includes a bank payment import mechanism. Administrators can upload CSV files exported from the bank, and the application matches incoming transfers to student charges using a unique payment identifier or bank account number.

Additional features include list generation, Excel exports, configurable pricing rules, discount handling, days-off management and administrative tools for managing the structure of the swimming school.

Technical scope

The application was built with Laravel, Inertia.js and Vue.js. Laravel handled the backend logic, database structure and business rules, while Inertia.js and Vue.js were used to create dynamic interfaces for administrators, instructors, parents and students.

I implemented user roles, student and parent accounts, instructor views, calendar-based lesson management, attendance handling, payment-related logic, data exports, API endpoints and administrative modules for managing the structure of the swimming school.

The system was designed to support both desktop administration and mobile use by instructors during swimming lessons. Selected data is also shared with the public SwimSport website through the Laravel API.

Outcome

The final application gave SwimSport one dedicated platform for managing the daily operations of the swimming school. Instead of relying on separate spreadsheets, manual coordination and scattered communication, the company can manage students, lessons, instructors, attendance, registrations and payments from one system.

For instructors, the mobile-friendly attendance journal makes it easier to work directly during classes. For administrators, the system improves control over groups, schedules, payments and reporting.

The project is still being developed with new features and improvements. I continue to cooperate with the client, maintaining and extending the Laravel application. Some data from the system is also exposed through a Laravel API and displayed on the SwimSport website, which I built as a custom WordPress theme with integrations and custom Gutenberg blocks.