regulated-form-validator
v1.0.3
Published
Declarative, compliance-ready form validation for React with YAML/JSON configs and runtime custom rules.
Maintainers
Keywords
Readme
📦 Regulated Form Validator (React)
Regulated Form Validator is a React library for compliance‑ready form validation and rendering, powered by YAML/JSON declarative configs.
It helps developers build dynamic, auditor‑friendly forms for BFSI, healthcare, and other regulated domains without reinventing validation logic.
- 🛡️ Compliance‑focused: Ships with BFSI & healthcare presets (PAN, Aadhaar, IFSC, Insurance IDs, etc.)
- ⚡ Developer‑friendly: Declarative configs, runtime custom rule registry, reusable preset fields, async API validation
- 🌍 i18n‑ready: Localized error messages (
en,fr, etc.) for multilingual compliance workflows - 👀 Audit‑ready: Human‑readable configs that make validation logic transparent for compliance reviews
- 🔄 Runtime flexibility: Add, remove, or list custom rules dynamically without redeploying
- 🧩 Error‑safe architecture: Regex, date, async, and conditional rules handle invalid inputs gracefully
This project bridges the gap between developer productivity and regulatory compliance, making it easy to build forms that are both user‑friendly, multilingual, and audit‑ready.
✨ Features
• Declarative config: Define fields and rules in YAML/JSON.
• Dynamic rendering: Auto-generate React forms from config.
• Rich validations: required, regex, length, enum, number, date, crossField, conditional(when), async, custom, i18n.
• BFSI rules built-in: PAN, IFSC, Aadhaar.
• Auditor-friendly: Human-readable config files for compliance reviews.
• Error‑safe: Regex, date, async, and conditional rules handle invalid inputs gracefully.
• Custom registry API: Add, remove, and list custom rules at runtime.
• i18n support: Localized error messages (en, fr, etc.) for multilingual compliance workflows.
📥 Installation
npm install regulated-form-validator📋 Preset Fields
The library ships with ready‑to‑use preset fields for daily‑use, BFSI, and healthcare domains. Each preset includes strict validations, per‑character filtering (allowedChars), and immediate error feedback (messageOnInvalid).
⚡ Quick Example: Load Presets in React Here’s how developers can directly use preset fields without writing YAML:
import {
FormRenderer,
validateAll,
NameField,
EmailField,
PANField,
} from "regulated-form-validator";
export default function PresetDemo() {
const presetConfig = {
fields: [NameField, EmailField, PANField],
};
return (
<FormRenderer
config={presetConfig}
onSubmit={(values) => {
const result = validateAll(presetConfig.fields, values);
console.log("Validation Result:", result);
}}
/>
);
}🏠 Daily-Use Preset Fields
The library ships with strict daily-use presets for common scenarios:
- NameField – required, alphabets only, 2–50 characters
- PincodeField – required, exactly 6 digits
- EmailField – required, proper email format
- AddressField – required, alphanumeric + space/comma/dot/hyphen, 5–100 characters
- PhoneField – required, exactly 10 digits
- GenderField – required select (
Male,Female,Other) - PasswordField – required, strong password (≥8 chars, uppercase, lowercase, number, special char)
- ConfirmPasswordField – required, must match
PasswordField - DobField – required, valid date, must be before today
- UsernameField – required, 5–20 chars, alphanumeric + underscore
- OTPField – required, exactly 6 digits
- AlternateEmailField – optional, valid email format
- AlternatePhoneField – optional, valid 10-digit phone number
- AgeField – required, number between 18 and 65
Each preset includes:
allowedCharsfor per-character filteringmessageOnInvalidfor immediate feedback- Human-readable error messages for compliance reviews
🏦 BFSI Preset Fields
The library ships with strict BFSI presets for compliance‑heavy domains:
- IFSCField – required, 11 characters, format
SBIN0001234 - GSTField – required, exactly 15 characters, strict GSTIN format
- AccountNumberField – required, 9–18 digits
- MICRField – required, exactly 9 digits
- SWIFTField – required, 8 or 11 alphanumeric characters
- CreditCardField – required, exactly 16 digits
- CVVField – required, exactly 3 digits (password type)
- ExpiryDateField – required, valid future date in
MM/YYformat
Each preset includes:
- Uppercase enforcement where applicable
allowedCharsfor per‑character filteringmessageOnInvalidfor immediate feedback- Auditor‑friendly error messages
- Enhanced validations for BFSI compliance (length, regex, conditional checks)
🏥 Healthcare Preset Fields
The library ships with strict healthcare presets for patient and medical record management:
- PatientIDField – required, exactly 8 characters, uppercase letters + digits
- InsuranceField – required, 2 uppercase letters + 6 digits (e.g., AB123456)
- HealthIDField – required, 10–16 characters, uppercase letters + digits
- BloodGroupField – required select, options:
A+,A-,B+,B-,O+,O-,AB+,AB- - MedicalRecordField – required, 6–12 digits
- DoctorIDField – required, exactly 6 characters, uppercase letters + digits
- HospitalCodeField – required, 3 uppercase letters + 3 digits (e.g., HSP123)
- PrescriptionIDField – required, exactly 10 digits
- NationalHealthNumberField (NHN) – required, exactly 12 digits
Each preset includes:
- Uppercase enforcement where applicable
allowedCharsfor per‑character filteringmessageOnInvalidfor immediate feedback- Auditor‑friendly error messages
- Enhanced validations for healthcare compliance (length, regex, select options, conditional checks)
🏛 Government ID Preset Fields
The library also ships with strict Government ID presets for compliance‑heavy domains:
- PANField – required, 10 characters, format
ABCDE1234F - AadhaarField – required, exactly 12 digits
- VoterIDField – required, exactly 10 alphanumeric characters
- DrivingLicenseField – required, exactly 16 alphanumeric characters
- PassportField – required, 8 characters, format
A1234567(1 uppercase letter + 7 digits)
Each preset includes:
- Uppercase enforcement where applicable
allowedCharsfor per‑character filteringmessageOnInvalidfor immediate feedback- Auditor‑friendly error messages
- Enhanced validations for government compliance (length, regex, uppercase enforcement)
💡 Usage Note:
For practical examples of how to import and use these preset fields in a React app,
please refer toexample/Demo.jsx.
This demo shows how to configure forms, override preset validations, and integrate
advanced rules (crossField, conditionalwhen, async, i18n).
📖 Yaml Usage
- Define a YAML Config for Customization
fields:
- name: fullName
label: Full Name
type: text
validation:
- type: required
message: "Full name is required"
- type: regex
pattern: "^[A-Za-z ]+$"
message: "Only letters and spaces"
- type: length
min: 3
message: "At least 3 characters"
- name: pan
label: PAN
type: text
validation:
- type: required
message: "PAN is required"
- type: pan
message: "Invalid PAN"- Load and Render in React
import React from "react";
import { parseConfig, FormRenderer, validateAll } from "regulated-form-validator";
import yaml from "js-yaml";
import fs from "fs";
const config = parseConfig("form-config.yaml");
export default function App() {
return (
<FormRenderer
config={config}
onSubmit={(values) => {
const result = validateAll(config.fields, values);
console.log(result);
}}
/>
);
}🔧 Customization
You can customize fields in several ways:
- Override presets
import { NameField } from "regulated-form-validator";
const CustomNameField = {
...NameField,
label: "Applicant Name",
validation: [
...NameField.validation,
{ type: "regex", pattern: "^[A-Za-z]+$", message: "No spaces allowed" }
]
};- Add
allowedCharsandmessageOnInvalid
const NumericCodeField = {
name: "code",
label: "Numeric Code",
type: "text",
validation: [{ type: "required", message: "Code is required" }],
allowedChars: /^[0-9]$/,
messageOnInvalid: "Only digits are allowed"
};- Custom rules via addCustom
addCustom("startsWithA", (value) => String(value ?? "").startsWith("A"));🧪 Testing
Run unit tests locally to validate your form logic:
# Run all tests
npm test
# Run tests in watch mode (helpful during development)
npm run test:watchTests are located in the directory and cover:
• Field rendering from YAML/JSON configs
• Built-in BFSI validations (PAN, IFSC, Aadhaar)
• Conditional and cross-field rules
• Custom validation hooks
• Error handling for invalid regex/date inputs
• Runtime registry API (addCustom, removeCustom, listCustom)
📜 License
MIT © 2026 Abhiraj Madan Marne
💡 Roadmap
• ✅ Local demo app for testing
• ✅ Publish to npm registry
• ✅ Add more domain-specific validation rules
• ✅ Expand documentation with examples
• 🚧 Add Responsive CSS
🤝 Contributing
Contributions, issues, and feature requests are welcome! Feel free to open a PR or start a discussion in the issues section.
🌟 Why This Matters
This project aims to make regulated form validation simple, declarative, and auditor-friendly. By using YAML/JSON configs, developers can build compliance-ready forms without reinventing validation logic for BFSI, healthcare, and other sensitive domains.
