Veterinarska Ambulanta
Veterinarska Ambulanta is a comprehensive clinic management platform designed for veterinary practices. Staff members — veterinarians and assistants — can manage patient animals and their owners, schedule appointments via a visual calendar, generate medical reports, and track treatment history. The system enforces role-based access control with JWT so that only authorized personnel can view or modify sensitive records.

Tech Stack
Key Features
Patient Record Management
Full CRUD for patient animals with species, breed, age, and owner linkage. A searchable and filterable table gives staff a quick overview of all registered patients.
Owner Management
Each patient is linked to an owner with contact details. Staff can navigate directly from a patient record to the owner profile and vice versa.
Appointment Calendar
An interactive calendar built with react-big-calendar shows scheduled appointments by day, week, or month. Staff can create, edit, and cancel appointments directly from the calendar view.
Medical Reports
Veterinarians can generate structured medical reports tied to specific appointments, documenting diagnosis, treatment, and prescribed medication.
Role-Based Access Control
JWT tokens carry role claims (Veterinar / Pomocnik). Protected routes enforce access at the frontend, and controllers enforce it at the API layer, ensuring least-privilege access.
Analytics Dashboard
Chart.js-powered charts display appointment trends, patient statistics, and species distribution to give clinic management an at-a-glance overview.
Challenges & Solutions
Challenge
Synchronizing calendar state with backend appointment data
Solution
Used react-big-calendar's controlled mode with custom event mapping, fetching appointments on month navigation and optimistically updating the local event list on create/delete to keep the UI responsive.
Challenge
Enforcing role-based access on both frontend and backend
Solution
Implemented a ProtectedRoute HOC that reads the decoded JWT role claim and redirects unauthorized users, while ASP.NET Core policy-based authorization independently enforces the same rules at the API level.
Challenge
Managing complex form validation for patient and appointment creation
Solution
Adopted react-hook-form with schema-based validation rules, providing instant inline error feedback without triggering unnecessary re-renders.