Dynamic Records System
Laravel API for building custom data-entry templates at runtime, then collecting and validating records against them without writing new code.
Architecture Overview
erDiagram
TEMPLATE ||--o{ FIELD : defines
FIELD ||--o{ OPTION : offers
TEMPLATE ||--o{ RECORD : produces
RECORD ||--o{ VALUE : holds
FIELD ||--o{ VALUE : types
OPTION ||--o{ VALUE : constrains
USER ||--o{ RECORD : creates
A generic data-entry engine. Instead of modelling one domain, it models the act of modelling: an administrator defines a template, gives it fields of a chosen type, and the system then accepts, validates and stores records against that template. Adding a new kind of form requires no migration and no deployment.
The schema separates templates, fields, options, records and values, so a select, radio or checkbox field draws its permitted answers from a predefined option set and every stored value is checked against it. Originally written to hold medical records, the design is domain-agnostic.
Key Features:
- Runtime template creation with named, ordered, optionally required fields
- Seven field types: text, select, radio, checkbox, date, number and boolean
- Option sets backing every choice-style field, enforced on write
- Automatic validation of required fields and permitted option values
- Records grouped and queried by their template
- Admin and standard user roles with distinct permissions
- API-first design with token authentication via Laravel Sanctum
Tech Stack:
- Backend: Laravel, PHP, Sanctum
- Views: Blade
- Database: MySQL