Back to Home

Projects

var(--variable-cM9ypOjZX)
var(--variable-cM9ypOjZX)

Qartvela

A full sports-club management platform built on .NET 10 and Angular — groups, students, trainers, halls, scheduling, attendance, and a prorated billing engine, all behind a Georgian-language admin experience.

My Role

Full-Stack Engineer — designed and built the platform end to end: the ASP.NET Core (.NET 10) backend, the Angular admin application, and the domain model connecting scheduling, attendance, and billing.

Project Type

Personal Project — a club management ERP for sports schools: members, training schedules, attendance, and payments in one system.

Tools Used

.NET 10 / ASP.NET Core, Angular, TypeScript, prorated billing engine, weekly schedule calendar, attendance tracking, role-based administration, Georgian-language UI

Read the write-up

Prorated Billing That Survives Real Life

Problem & Solutions

One System Instead of Spreadsheets

Problem

Sports clubs run on scattered spreadsheets and chat threads — members in one file, schedules in another, money in a third. Nothing connects who trains, when they trained, and what they owe.

Solution

Qartvela models the club as one domain: a group ties together its sport, hall, trainer, and students — and the schedule, attendance board, and billing all derive from that single source of truth.

Billing That Understands Real Life

Problem

Members join mid-month, leave mid-month, and freeze for injuries — flat monthly fees turn every edge case into a manual correction and an awkward conversation at the front desk.

Solution

A prorated billing engine generates each student’s invoice from their actual group membership — join and leave prorations included — and tracks paid, partial, overdue, and waived states, with a month overview showing collection progress at a glance.

A Day Runs Through the Board

Problem

An administrator’s day is a stream of small questions: which trainings run today, in which hall, who has been marked, who actually showed up — and the answers were never in one place.

Solution

A per-day attendance board with color-coded group cards answers all of it in one screen — tap to mark, watch the counters fill — backed by a weekly calendar of every training, filterable by sport, hall, and trainer.

Architecture

ARCHITECTURE
Qartvela
Hover a part to see why it is there · click to pin
ApplicationDataExternal / peopleInfrastructure

Angular admin over an ASP.NET Core 10 API with EF Core and JWT auth; a prorated billing engine turns group membership intervals into invoices in SQL Server.

Decision log

The calls that shaped the build — what was decided, why, and what it cost.

Membership intervals instead of monthly flags

Decision. Store a student's membership as an interval with a start date and optional end date, and freezes as intervals too.

Context. Members join mid-month, leave mid-month, and freeze for injuries; a per-month flag turns every case into a manual correction.

Consequence. Proration is one pure function over dates; join, leave, and freeze are not special cases.

Invoices are generated, never edited

Decision. Produce invoices from the intervals and forbid hand-editing.

Context. Editable invoices drift from the membership records and produce arguments.

Consequence. Fixing data fixes the invoice; the invoice line explains itself. Administrators lose the ability to fudge a number, deliberately.

.NET 10 and Angular with EF Core

Decision. Build on ASP.NET Core with Entity Framework Core and an Angular admin.

Context. The deepest stack I run and teach, on a system that needs years of maintenance.

Consequence. Typed domain logic that is unit-testable without a database; a familiar stack for anyone I would hand it to.

Attendance at a Glance

Each training is a color-coded card with its hall, trainer, and live counters — marking a group takes seconds, and unmarked trainings stand out immediately.

A Week of Trainings on One Grid

Sixty trainings across seven days, filterable by sport, hall, and trainer — the whole club’s rhythm is visible in a single calendar.

Billing That Does the Math

Prorated invoices, paid and overdue states, and a monthly collection overview — the money side of the club stays accurate without a spreadsheet in sight.

Growth & Outcome

A working ERP that runs a club’s entire month: 200+ students organized into groups and halls, a weekly training calendar, one-tap attendance marking, and automatic prorated invoices with debtor tracking — fully in Georgian.

Gallery