Skip to content

Equine care management platform for stables - track horses, vaccinations, worm tests, treatments, and automated notifications

Notifications You must be signed in to change notification settings

TorbenMerrald/StableManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stable Manager

A comprehensive equine care management platform for stables. Track horses, health events, vaccinations, worm tests, treatments, and receive automated notifications.

Features

  • Horse Management - Complete profiles with health history, documents, and care schedules
  • Vaccination Tracking - Plan and monitor vaccinations with automated reminders
  • Worm Testing - Schedule tests and track results with reminder notifications
  • Treatment Schedules - Recurring treatments with automatic task generation
  • Health Events - Log vet visits, feeding, therapy, farrier appointments, and more
  • Document Storage - Attach files and images to horses (stored in S3)
  • Multi-Tenant - Data isolation per stable with role-based access control
  • Notifications - Email, SMS (GatewayAPI), and in-app notifications
  • Dashboard - Overview of upcoming tasks, due vaccinations, and alerts
  • Localization - English and Danish language support

Tech Stack

Component Technology
Backend Java 21, Spring Boot, Jmix 2.7
Frontend Vaadin 24.9 Flow UI
Database PostgreSQL with EclipseLink ORM
Build Gradle 8.x
Scheduling Quartz
File Storage AWS S3 / DigitalOcean Spaces
Deployment Docker, Kamal 2

Getting Started

Prerequisites

  • Java 21+
  • PostgreSQL 15+
  • Node.js 18+ (for frontend build)
  • Gradle 8.x

Local Development

  1. Clone the repository

    git clone https://github.com/TorbenMerrald/StableManager.git
    cd StableManager
  2. Set up the database

    createdb stablemanager
  3. Configure local settings

    Copy the example configuration:

    cp src/main/resources/application-dev.properties.example \
       src/main/resources/application-dev.properties

    Edit application-dev.properties with your local settings (database, S3, etc.)

  4. Run the application

    ./gradlew bootRun

    The application will be available at http://localhost:7070

  5. Default login

    • Username: admin
    • Password: admin

Running Tests

./gradlew test                              # Run all tests
./gradlew test --tests "ClassName"          # Run single test class
./gradlew test --tests "*.methodName"       # Run single test method

Configuration

Environment Variables (Production)

Variable Description
SQL_URL PostgreSQL JDBC URL
SQL_USERNAME Database username
SQL_PASSWORD Database password
S3_BUCKET S3 bucket name
S3_ACCESSKEY S3 access key
S3_SECRET_ACCESSKEY S3 secret key
S3_ENDPOINT S3 endpoint URL
S3_REGION S3 region
SMTP_USERNAME SMTP username
SMTP_PASSWORD SMTP password
SMS_GATEWAYAPI_KEY GatewayAPI key (optional)
SMS_GATEWAYAPI_SECRET GatewayAPI secret (optional)
OPENAI_API_KEY OpenAI API key for document summarization (optional)

Deployment

Building the Docker Image

./gradlew bootBuildImage --imageName=torbenmerrald/stablemanager:<version>
docker push torbenmerrald/stablemanager:<version>

Deploying with Kamal

kamal deploy --skip-push --version=<version>

See config/deploy.yml for Kamal configuration.

Project Structure

src/main/java/dk/merrald/sm/
├── entity/       # JPA entities (Horse, Event, VaccinePlan, etc.)
├── view/         # Vaadin Flow UI views
├── service/      # Business logic
├── app/          # Scheduled jobs (reminders, task generation)
├── listener/     # Entity event listeners
└── security/     # Roles and authentication

License

Proprietary - All rights reserved.

Author

Torben Merrald - merrald.dk

About

Equine care management platform for stables - track horses, vaccinations, worm tests, treatments, and automated notifications

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •