Skip to content

saiqa-tech/checkops

CheckOps

A production-ready Node.js npm package that enables developers to create dynamic forms with centralized question reusability and structured data submission capabilities.

npm version License

Features

  • 🎯 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

Installation

npm install @saiqa-tech/checkops pg

Note: CheckOps requires PostgreSQL 18 and the pg package as peer dependencies.

Quick Start

1. Initialize Database

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 migrate

2. Initialize CheckOps

import CheckOps from '@saiqa-tech/checkops';

const checkops = new CheckOps({
  host: 'localhost',
  port: 5432,
  database: 'your_database',
  user: 'postgres',
  password: 'your_password',
});

await checkops.initialize();

3. Create a Form

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);

4. Submit Responses

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);

5. Get Analytics

const stats = await checkops.getSubmissionStats(form.id);
console.log('Total submissions:', stats.totalSubmissions);
console.log('Question statistics:', stats.questionStats);

Supported Question Types

  • 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

Documentation

Database Requirements

  • PostgreSQL 18 or higher
  • JSONB support (included in PostgreSQL 9.4+)
  • Sufficient storage for form data

Contributing

We welcome contributions! Please see our Contributing Guide for details.

License

Apache License 2.0 - see the LICENSE file for details.

Support

Roadmap

  • Export submissions to CSV/Excel
  • Form templates library
  • Conditional logic for questions
  • Multi-language support
  • Email notifications
  • Webhook integrations
  • React/Vue components

Authors

Saiqa Tech - https://github.com/saiqa-tech

Acknowledgments

Built with ❀️ for the developer community.