Key Features Overview
HRS provides a complete suite of features for managing every aspect of an equestrian school. This page details all major capabilities with code examples from the actual implementation.Student Management (Alumnos)
Complete Registration System
Fromsrc/lib/api.ts:12, the student entity includes:
Personal Information
- DNI with real-time duplicate validation
- Full name and contact details
- Birth date for age calculation
- Automatic +549 phone prefix for Argentina
- Optional email for communications
Enrollment Tracking
- Automatic registration date
- Active/inactive status management
- Lesson plan selection (4/8/12/16 classes monthly)
- Enrollment history
Horse Assignments
- Three boarding types: No horse, Reserved school horse, Private horse
- Flexible boarding quotas: Full, Half, Third
- Automatic horse-student linking
- Owner vs reservation distinction
Class Monitoring
- Remaining classes tracker
- Attendance percentage calculations
- Class history and statistics
- Trial class support
Real-Time DNI Validation
The system prevents duplicate registrations:- Validates DNI as you type (9+ digits)
- Shows immediate error if DNI exists
- Prevents form submission for duplicates
- Works for both students and instructors
Flexible Lesson Plans
Four monthly plans available:- 4 classes/month: Casual riders
- 8 classes/month: Regular students (twice weekly)
- 12 classes/month: Committed riders
- 16 classes/month: Intensive training
Three Boarding Options
Fromsrc/types/enums.ts:1:
- School assigns available horse per class
- Maximum flexibility
- No boarding costs
- Ideal for beginners
- Student reserves specific school horse
- Consistent horse-rider pairing
- Boarding quota configuration
- Priority access to reserved horse
- Student brings own horse
- Full boarding services
- Quota-based pricing
- Private horse management
Horse Management (Caballos)
Horse Entity Structure
Fromsrc/lib/api.ts:50:
School Horses (ESCUELA)
- Available to all students
- Can be reserved by students
- Shared resource scheduling
- Utilization tracking
Private Horses (PRIVADO)
- Owned by specific students
- Only usable by owner
- Boarding management
- Individual care tracking
Horse Features
- Availability Status: Track which horses can be scheduled
- Owner Associations: Link horses to student owners
- Type Differentiation: Visual distinction in calendar and reports
- Usage Statistics: Monitor how often each horse is used
- Conflict Prevention: Cannot schedule same horse for overlapping classes
Instructor Management (Instructores)
Instructor Profile
Fromsrc/lib/api.ts:37:
Color-Coded Scheduling
Each instructor gets a unique color:- 7 predefined color options
- Visual identification in calendar
- Quick schedule overview
- Distinguishes classes at a glance
Instructor Analytics
- Workload Tracking: Classes per instructor
- Specialty Distribution: Which specialties they teach
- Efficiency Metrics: Completion vs cancellation rates
- Performance Reports: Detailed instructor statistics
Class Management (Clases)
Class Entity
Fromsrc/lib/api.ts:58:
Four Specialties
Fromsrc/types/enums.ts:3:
EQUITACION
Standard riding lessons for students of all levels
ADIESTRAMIENTO
Horse training and dressage classes
EQUINOTERAPIA
Therapeutic riding for special needs
MONTA
Open riding sessions (auto-assigns placeholder student)
Six Class States
Fromsrc/types/enums.ts:8:
- PROGRAMADA: Initial state when class is created
- INICIADA: Class has begun
- COMPLETADA: Successfully finished
- CANCELADA: Cancelled by school or student
- ACA: Student notified in advance they won’t attend
- ASA: Student didn’t show up without notice
Classes in COMPLETADA, INICIADA, or CANCELADA states cannot be edited (historical record).
Class Duration Options
- 30 minutes: Standard short lesson
- Occupies one 30-minute time slot
- Default duration
- 60 minutes: Extended lesson
- Occupies two consecutive 30-minute slots
- Visual continuity indicator in calendar
- Both cells are clickable
Operating Hours & Validation
- Schedule: 09:00 to 18:30
- Time Slots: 30-minute intervals
- Critical Validation: No class can end after 18:30
- ❌ 60-min class at 18:00 → ends 19:00 (rejected)
- ✅ 60-min class at 17:30 → ends 18:30 (allowed)
- ✅ 30-min class at 18:00 → ends 18:30 (allowed)
“La clase no puede terminar después de las 18:30. Con duración de 60 minutos a las 18:00 terminaría a las 19:00.”
Trial Classes System
Two Types of Trial Classes
Type 1: New Person (Persona Nueva) Fromsrc/lib/api.ts:30:
- For prospective students not yet registered
- Just requires first and last name
- No full student account needed
- Creates “trial person” record
- Identified with 🎓 emoji in calendar
- For registered students trying new specialty
- Student must be INACTIVE
- Student must have no classes in that specialty
- Cannot repeat trial for same specialty
Trial Class Rules
✅ Automatic Validations:- Student cannot have trial if already has classes in that specialty
- Cannot repeat trial class for same specialty
- Trial classes DON’T count toward monthly quota
- 🎓 Emoji in calendar cells
- Orange border highlighting
- “Prueba” badge in details
- Informational alerts when editing
Advanced Calendar System
Three Powerful Views
- Month View
- Week View
- Day View (Excel-Style)
Overview Display
- All weeks of the month
- Up to 3 classes per day shown
- “+X more” indicator for additional classes
- Click day to see details or create class
Color Coding System
Background Color: Instructor’s assigned color (lightened for readability) Left Border Color (State indicator):- 🟠 Orange: PROGRAMADA (Scheduled)
- 🔵 Blue: INICIADA (Started)
- 🟢 Green: COMPLETADA (Completed)
- 🔴 Red: CANCELADA (Cancelled)
- 🟣 Purple: ACA (Absence with Notice)
- 🌸 Pink: ASA (Absence without Notice)
Calendar Features
Hover Information
Mouse over any class to see:
- Student name
- Horse name
- Class state
- Instructor name
Click Actions
- Click class: Open detailed popover
- Click empty cell: Create new class
- Quick state changes from popover
- Direct access to participant profiles
Conflict Detection
- ⚠️ Warning for horse conflicts
- ⚠️ Warning for instructor conflicts
- Visual indicators in cells
- Prevention of double-booking
Filtering
- Filter by student
- Filter by instructor
- Combinable filters
- Real-time updates
Calendar Tools & Operations
1. Copy Classes (Bulk Scheduling)
Copy entire week’s schedule to another week: Fromsrc/lib/api.ts:488:
- Select source day (any day in source week)
- Select destination day (any day in destination week)
- Specify number of weeks to copy
- System copies all classes from entire week
2. Delete Classes in Range
- Select start and end dates
- Delete all classes within date range
- Confirmation required before deletion
- Bulk cleanup capability
3. Cancel Entire Day
Available in Day View: Cancellation Reasons:- Rain
- Holiday
- Maintenance
- Special Event
- Emergency
- Other (with custom notes)
- Only cancels PROGRAMADA classes
- Respects already completed classes
- Preserves already cancelled classes
- Batch state update
4. Export to Excel
Frompackage.json:51:
- Title with full date
- Color-coded headers:
- 🔵 Blue for school horses (ESCUELA)
- 🟡 Gold for private horses (PRIVADO)
- Cell backgrounds with instructor colors
- Orange borders for trial classes
- Cell comments with complete class details
- Legend for instructors and horse types
- Optimized for A4 printing
- Auto-column width adjustment
Reporting & Analytics
Available Reports
Fromsrc/pages/Index.tsx:59:
Period Filtering
All reports support:- Start date selection
- End date selection
- Default: Current month
- Custom date ranges
Excel Export Format
Professional formatting includes:- Titles and subtitles
- Color-coded headers
- Alternating row colors for readability
- Optimized column widths
- Calculated totals and percentages
- Filename:
Reporte_[Type]_[Date].xlsx
Financial Management (Finanzas)
Fromsrc/pages/Index.tsx:66:
- Income tracking
- Expense monitoring
- Financial reports
- Period-based analysis
Search & Filtering
Intelligent Global Search
Available in all sections:- Alumnos (Students)
- Instructores (Instructors)
- Caballos (Horses)
- Clases (Classes)
- Real-time search as you type
- Multi-field simultaneous filtering
- Instant results
- Maintains traditional filters
src/lib/api.ts:85:
View Options
Table vs Cards Views
All main sections support two display modes: Table View:- Traditional row/column format
- Compact information display
- Sortable columns
- Quick scanning
- Visual card-based layout
- Highlighted key information
- Better for touch interfaces
- More engaging presentation
Pagination System
Smart Controls:- Previous/Next navigation (← →)
- Page size selector: 10, 20, 50, 100 items
- Current page / total pages indicator
- Total records counter
- Maintains search and filter state
Quick Actions
In List Views
- Click row: View complete details
- Context menu (⋮):
- Edit record
- Delete record
- Contact (students & instructors)
- WhatsApp with pre-loaded message
In Calendar
- Click empty cell: Create class with pre-filled data
- Click class: View details in popover
- Quick state change: Update status from popover
- Navigate to profiles: Direct links to participants
Detailed Profile Pages
Student Profile
- Complete personal information
- Assigned horse details
- Class statistics and charts
- Complete class history
- Attendance percentage
- Visual performance graphs
Instructor Profile
- Personal information
- Specialty distribution charts
- Performance statistics
- Efficiency metrics
- Complete class history
Horse Profile
- Horse information
- Associated owners
- Type and availability
- Usage statistics
- Class history
Class Details
- Full class information
- All participants (Student, Instructor, Horse)
- Quick state change controls
- Trial class indicator
- Quick access to all participant profiles
Notifications & Validations
Toast Notification System
Frompackage.json:63:
- 🟢 Success: Confirmations of successful actions
- 🔴 Error: Validation errors and failures
- 🟡 Warning: Important notices
- 🔵 Info: Informational messages
Contextual Messages
- Tooltips: Explanatory hints on complex fields
- Real-time Validation: Instant feedback as you type
- Confirmations: Required before destructive actions
- Field Help: Inline guidance for complex inputs
Data Validation Rules
Critical Validations
Default Values
- Class Duration: 30 minutes
- New Class State: PROGRAMADA
- New Student State: Active
- New Instructor State: Active
- New Horse Availability: Available
- Phone Prefix: +549 (automatic for Argentina)
Session Management
Fromsrc/components/auth/IdleHandler.tsx:
Security Features:
- Auto-logout after 15 minutes of inactivity
- Basic Auth with secure credential storage
- Session-based authentication
- Protected routes requiring login
- Automatic credential refresh
- Email whitelist for registration
- Strong password validation
This comprehensive feature set makes HRS a complete solution for equestrian school management, handling everything from student enrollment to detailed analytics and reporting.