Vet Clinic Management System is a passion-driven side project built from over 18 years of professional software development experience. What started as a personal challenge is evolving into a robust, comprehensive management platform for veterinary clinics. Developing this as a side project allows me to prioritize quality and user experience. My goal is to create a powerful, self-hosted solution that will always be 100% free for anyone to deploy and manage themselves. While I may eventually offer a managed hosting service for those who prefer a turnkey experience, the core software will remain free and open to the community. Note: This project is currently a work in progress. It will take time to reach the full level of maturity I envision, but development is steady and ongoing.
This is a web-based application to manage a mobile veterinary clinic, built with Angular, NestJS, and Prisma.
- Node.js: Ensure you have Node.js installed.
- NX: This project uses Nx for monorepo management.
npm installThe project uses SQLite for the local database.
# Generate Prisma Client
npm run db:generate
# Run migrations (initializes the dev.db file)
npm run db:migrateYou can start both the backend and frontend simultaneously, or individually.
npm start# Start the Backend (API) - Default: http://localhost:3000
npm run start:api
# Start the Frontend (Web) - Default: http://localhost:4200
npm run start:web| View | Light Mode | Dark Mode |
|---|---|---|
| Dashboard | ![]() |
![]() |
| Patient Directory | ![]() |
![]() |
| Clinic Settings | ![]() |
![]() |
| Tasks & Reminders | ![]() |
![]() |
| Messages | ![]() |
![]() |
| Invoices | ![]() |
![]() |
| Appointments | ![]() |
![]() |
| Clients / Clients | ![]() |
![]() |
| User Settings | ![]() |
![]() |
The patient details view features a route-based tab navigation system for comprehensive records.
| Tab | Light Mode | Dark Mode |
|---|---|---|
| Medical History | ![]() |
![]() |
| Vaccinations | ![]() |
![]() |
| Prescriptions | ![]() |
![]() |
| Appointments | ![]() |
![]() |
| Boarding | ![]() |
![]() |
| Tasks | ![]() |
![]() |
| Estimates | ![]() |
![]() |
| Forms | ![]() |
![]() |
| Invoices | ![]() |
![]() |
| Labs | ![]() |
![]() |
| Reminders | ![]() |
![]() |
Standardized modals for adding records across all patient sub-sections.
| Section | Light Mode | Dark Mode |
|---|---|---|
| Medical History | ![]() |
![]() |
| Vaccinations | ![]() |
![]() |
| Prescriptions | ![]() |
![]() |
| Appointments | ![]() |
![]() |
| Boarding | ![]() |
![]() |
| Tasks | ![]() |
![]() |
| Estimates | ![]() |
![]() |
| Forms | ![]() |
![]() |
| Invoices | ![]() |
![]() |
| Labs | ![]() |
![]() |
| Reminders | ![]() |
![]() |
Standardized modals for generating reports and printing.
| Section | Light Mode | Dark Mode |
|---|---|---|
| Medical History | ![]() |
![]() |
| Vaccinations | ![]() |
![]() |
| Prescriptions | ![]() |
![]() |
| Appointments | ![]() |
![]() |
| Boarding | ![]() |
![]() |
| Tasks | ![]() |
![]() |
| Estimates | ![]() |
![]() |
| Forms | ![]() |
![]() |
| Invoices | ![]() |
![]() |
| Labs | ![]() |
![]() |
| Reminders | ![]() |
![]() |
The client details view provides a comprehensive overview of client records with tabbed navigation.
| Tab | Light Mode | Dark Mode |
|---|---|---|
| Client Info | ![]() |
![]() |
| Patients | ![]() |
![]() |
| Financial | ![]() |
![]() |
| Appointments | ![]() |
![]() |
| Boarding | ![]() |
![]() |
| Tasks | ![]() |
![]() |
| Reminders | ![]() |
![]() |
| Forms | ![]() |
![]() |
| Messaging | ![]() |
![]() |
| Section | Light Mode | Dark Mode |
|---|---|---|
| Patients | ![]() |
![]() |
| Financial | ![]() |
![]() |
| Appointments | ![]() |
![]() |
| Boarding | ![]() |
![]() |
| Tasks | ![]() |
![]() |
| Reminders | ![]() |
![]() |
| Forms | ![]() |
![]() |
| Messaging | ![]() |
![]() |
- Swagger UI (API Docs): http://localhost:3000/api-docs
- Prisma Studio (DB Manager): http://localhost:5555 (Run
npm run db:studio)
The screenshots in this README.md and the docs/screenshots directory are automatically generated to ensure consistency across Light and Dark modes.
To refresh all screenshots:
- Ensure the application is running (
npm start). - Run the generation script:
node docs/maintenance/generate_screenshots.js
This script uses Playwright to:
- Navigate to all key application routes.
- Capture screenshots in both Light and Dark modes.
- Save the results directly to
docs/screenshots/.
vet-clinic: Angular Frontend with Material Design.api: NestJS Backend.shared-types: Shared TypeScript interfaces and DTOs.prisma: Database schema and migrations.
- Frontend: Angular + Angular Material. Responsive design for mobile, tablet, and desktop.
- Backend: NestJS for a structured, scalable API.
- Database: Prisma ORM with SQLite (Relational integrity without overhead).





















































































































