A production-ready Node.js npm package that enables developers to create dynamic forms with centralized question reusability and structured data submission capabilities.
- π― Dynamic Form Builder - Create forms with flexible question types
- π Question Reusability - Centralized question bank for reusing questions across forms
- π Structured Data Submission - Validated and sanitized submission handling
- π Security First - Built-in input sanitization and parameterized queries
- π PostgreSQL 18 + JSONB - High-performance database with flexible schema
- π Submission Analytics - Built-in statistics and reporting
- π§ͺ 80%+ Test Coverage - Comprehensive unit and integration tests
- π Well Documented - Complete API reference and usage guides
npm install @saiqa-tech/checkops pgNote: CheckOps requires PostgreSQL 18 and the pg package as peer dependencies.
First, run the database migrations:
# Set your database credentials
export DB_HOST=localhost
export DB_PORT=5432
export DB_NAME=your_database
export DB_USER=postgres
export DB_PASSWORD=your_password
# Run migrations
npm run migrateimport CheckOps from '@saiqa-tech/checkops';
const checkops = new CheckOps({
host: 'localhost',
port: 5432,
database: 'your_database',
user: 'postgres',
password: 'your_password',
});
await checkops.initialize();const form = await checkops.createForm({
title: 'Customer Feedback Form',
description: 'Please share your experience with us',
questions: [
{
questionText: 'What is your name?',
questionType: 'text',
required: true,
},
{
questionText: 'What is your email?',
questionType: 'email',
required: true,
},
{
questionText: 'How would you rate our service?',
questionType: 'rating',
options: [1, 2, 3, 4, 5],
required: true,
},
],
});
console.log('Form created:', form.id);const submission = await checkops.createSubmission({
formId: form.id,
submissionData: {
'What is your name?': 'John Doe',
'What is your email?': 'john@example.com',
'How would you rate our service?': 5,
},
});
console.log('Submission created:', submission.id);const stats = await checkops.getSubmissionStats(form.id);
console.log('Total submissions:', stats.totalSubmissions);
console.log('Question statistics:', stats.questionStats);- text - Single-line text input
- textarea - Multi-line text input
- number - Numeric input
- email - Email input with validation
- phone - Phone number input
- date - Date picker
- time - Time picker
- datetime - Date and time picker
- select - Single-choice dropdown
- multiselect - Multiple-choice dropdown
- radio - Radio button group
- checkbox - Checkbox group
- boolean - Yes/No toggle
- file - File upload
- rating - Star rating or numeric rating
- API Reference - Complete API documentation
- Usage Guide - Detailed usage examples
- Examples - Real-world code examples
- Database Schema - Database structure
- Architecture - System architecture
- Security - Security best practices
- PostgreSQL 18 or higher
- JSONB support (included in PostgreSQL 9.4+)
- Sufficient storage for form data
We welcome contributions! Please see our Contributing Guide for details.
Apache License 2.0 - see the LICENSE file for details.
- GitHub Issues: https://github.com/saiqa-tech/checkops/issues
- Documentation: https://github.com/saiqa-tech/checkops
- Export submissions to CSV/Excel
- Form templates library
- Conditional logic for questions
- Multi-language support
- Email notifications
- Webhook integrations
- React/Vue components
Saiqa Tech - https://github.com/saiqa-tech
Built with β€οΈ for the developer community.