Veterinary Clinic System
A clinic-management backend for veterinary practices: patients, owners, appointments, and records.
Role
Backend developer — team of 4
Stack
Go, Iris, PostgreSQL, Redis
Language
Go
Repository
Link pending
Problem
Clinic operations — linking animals to owners, scheduling visits without conflicts, and keeping accurate treatment history — are hard to manage in ad-hoc tools. The system had to model those relationships faithfully.
Solution
The backend of a clinic management system built as a modular monolith in Go with Iris: clients with animal patients, appointment scheduling, visit records, and treatment history.
My contribution
Implemented the backend with a modular-monolith architecture in Golang with Iris. Built the PostgreSQL data layer with Redis caching and containerized all services with Docker.
Architecture
A modular monolith: domain modules (clients, scheduling, records) behind one deployable, with a relational schema centered on the owner–patient relationship. Redis caches hot lookups; visits reference patient, doctor, and time slots; treatment records attach to visits.
owner ──< patient ──< visit ──< treatment
│
└── time-slot (doctor, start, end)
└─ conflicts rejected by service + DB constraintsOverview
The system models a veterinary clinic: owners register with their animal patients, appointments are scheduled for visits, and each visit accumulates treatment records that form the patient's medical history.
Requirements
Core requirements:
- Owners can have multiple animal patients of different species.
- Appointments reference patient, time slot, and attending doctor.
- No two appointments may occupy the same doctor's time slot.
- Visit history for a patient must be queryable as a timeline.
Technical Decisions
Scheduling safety is enforced twice: the service layer validates availability before accepting an appointment, and the database schema adds constraints that make double-booking structurally impossible. Defense in depth keeps scheduling correct even if a validation check regresses.
Results
A complete domain model and backend that mirrors how a small clinic actually operates, built end-to-end in Go and PostgreSQL.
The hard part
Appointment scheduling without conflicts: the schema and service layer together have to prevent double-booking a time slot while keeping a day's schedule fast to read.
A decision worth noting
Chose a modular monolith over microservices for a team of 4 — module boundaries keep the code organized while avoiding distributed-systems overhead. Enforced scheduling rules in the service layer backed by database constraints.
Outcome
A working clinic-management backend demonstrating relational modeling, caching, and rule enforcement in a real-world domain (Jun 2025 – May 2026).
Next project
Weather Analytics Dashboard