Intellidwell Logo Docs
IntelliSignup App ↗

📊 Dynamic Forms & Spreadsheet Engine

IntelliSignup incorporates a full-fledged dynamic questionnaire builder paired with an automated reporting engine. It enables organizers to gather detailed feedback, dietary requirements, volunteer skills, or survey submissions, and converts those responses into live web charts and native spreadsheet vector charts.

💡 Spreadsheet Engine Distinction

Most web applications export static CSV tables or embed low-resolution screenshots when generating Excel files. IntelliSignup's excel_charts.py engine uses openpyxl to compile true XML chart objects (Pie, Doughnut, Bar, and Line) bound dynamically to formula cells. Users opening exported files in Microsoft Excel or Google Sheets can click, resize, recolor, and edit the chart data natively!

1. Visual Form Constructor

The questionnaire builder (available at /forms/new and /forms/<id>/edit) provides an intuitive interface for constructing customized surveys:

  • Form Title & Description: Markdown-ready instructions and context for respondents.
  • Vanity URL Slug: Automatically generated URL slug for standalone hosting (e.g., /f/youth-camp-dietary-survey).
  • Dynamic Question Controls: Add, duplicate, reorder, and delete questions with instant client-side preview.
  • Required Enforcement: Toggle whether an individual question requires an answer before submission can complete.
  • Choice Serialization: For options-based fields, organizers input comma-separated choices that are safely normalized and validated server-side.

2. Supported Field Types

The form schema (CustomFormField) supports six distinct question types, each mapped to optimized HTML inputs and reporting models:

Field Type HTML Input Element Data Handling Default Chart / Analysis
text <input type="text"> Single-line string values (e.g., emergency contact name). Paginated response table & search filter.
paragraph <textarea rows="3"> Multi-line textual responses (e.g., medical considerations). Expandable verbatim quotation list.
number <input type="number"> Floating point / integer values (e.g., party size, shirt size). Statistical summary (Min, Max, Mean/Average, Sum, Count).
select <select><option> Single choice selected from a clean dropdown menu. Pie Chart & Doughnut Chart with percentages.
radio <input type="radio"> Single selection rendered as stacked radio buttons. Pie Chart & Doughnut Chart with percentages.
checkbox <input type="checkbox"> Multi-select checkboxes allowing multiple selections per participant. Horizontal Bar Chart with total selection counts.

3. Standalone vs Attached Forms

IntelliSignup questions operate in two distinct architectural configurations:

🌐 Standalone Questionnaires (/f/<slug>)

Operates as an independent survey landing page. Anyone with the URL can submit responses. Ideal for post-event evaluations, RSVPs without item signups, and community polls. Stores records with anonymous visitor keys.

🔗 Event-Attached Questionnaires

Linked directly to an event via SignupEvent.custom_form_id. Questions render directly inside the item/slot claim form. The resulting CustomFormResponse is foreign-keyed to the participant's SignupClaim!

💡 Relational Integrity

When a questionnaire is attached to an event, every response row is permanently bound to the participant's claim. If an organizer views the roster or exports the event CSV, the questionnaire answers appear right beside that participant's name, email, and claimed items.

4. Results Dashboard & Chart.js Visualizations

The responses portal (/forms/<id>/responses) delivers an interactive data analytics suite:

  • Live Response Counters: Real-time tally of total submissions and percentage response rates.
  • Submissions Over Time (Timeline Chart): A dynamic line graph showing submission spikes and daily activity trends.
  • Interactive Chart Switcher: Every categorical question features a toolbar enabling viewers to toggle dynamically between:
    • Pie Chart: Highlighting relative proportional share.
    • Doughnut Chart: Modern radial visual presentation.
    • Bar Chart: Clear comparison of absolute frequency counts.
  • Numeric Summaries: Automatic calculation of minimum, maximum, and average values for numerical fields.
  • Individual Submissions Table: An audit table showing exact timestamps, participant names, and individual question answers, with individual deletion controls for spam mitigation.

5. Public Response Sharing

Organizers frequently need to share survey results with committee members, stakeholders, or church councils who do not have an organizer account. IntelliSignup provides a secure sharing subsystem:

1. Secret Token
Tokenized Share URL

Each form generates a 16-byte random token: https://intellisignup.net/forms/shared/{token}.

➔ Stakeholder Access
2. Read-Only View
Public Analytics Portal

External viewers can see live Chart.js graphs, stats, and download Excel reports without any login.

➔ Organizer Controls
3. Immediate Revocation
Pause or Regenerate

Organizers can toggle public sharing off or regenerate the token to instantly invalidate previous links.

6. openpyxl Native Excel Engine (excel_charts.py)

The spreadsheet generation module represents one of the most technically advanced components in IntelliSignup. Implemented in app/excel_charts.py, it builds complete Microsoft Excel .xlsx binaries in-memory using openpyxl:

Design Palette & Visual Styling

Spreadsheets adhere to an executive-ready corporate palette:

  • Header Background: Deep Midnight Navy (#1D2742) with bold white text.
  • Accent & Chart Series: Warm Bronze (#B28A53).
  • Row Striping: Subtle alternating zebra fills (#FBF9F6) with light stone borders (#E2D9CC).
  • Summary Borders: Accounting-standard single top border with double bottom border.
  • Auto-Fitting Columns: Automatic calculation of character widths with padding (min 12, max 45 chars).

Embedded Vector Chart Architecture

Python (openpyxl Chart Construction Excerpt)
# Excerpt from app/excel_charts.py
if chart_type in ('pie', 'doughnut'):
    chart = DoughnutChart() if chart_type == 'doughnut' else PieChart()
    chart.title = sanitize_sheet_title(field.label)
    data = Reference(ws, min_col=2, min_row=data_start_row - 1, max_row=curr_row - 1)
    labels = Reference(ws, min_col=1, min_row=data_start_row, max_row=curr_row - 1)
    chart.add_data(data, titles_from_data=True)
    chart.set_categories(labels)
    chart.dataLabels = DataLabelList()
    chart.dataLabels.showPercent = True
    chart.width = 16
    chart.height = 10
    ws.add_chart(chart, f"{chart_col}{table_header_row}")

Available Export Formats

📗 Full Multi-Sheet Workbook (.xlsx)

Includes an Overview & Charts sheet with embedded vector graphs for every question, followed by a raw Submissions Data sheet containing the full tabular roster.

📈 Single-Question Excel (.xlsx)

Downloads a dedicated single-question report featuring a clean tally table, percentage calculations, and an embedded native Pie, Donut, or Bar chart.

📉 Timeline Activity Excel (.xlsx)

Generates a date-by-date submission frequency table paired with an embedded native LineChart showing velocity over time.

📑 Standard CSV Export (.csv)

Standard plain-text comma-separated export optimized for importation into SQL databases, Python Pandas, or R statistical pipelines.

7. 1-Click Clipboard Exports

To speed up presentation preparation, IntelliSignup features native browser clipboard copy functions:

  • Copy Chart Image: Reads the active Chart.js canvas object, converts it to an image blob, and writes it directly to the system clipboard using the navigator.clipboard.write() API. Users can immediately press Ctrl+V inside PowerPoint, Google Slides, or Slack to paste high-resolution charts.
  • Copy Table Data: Formats the question frequency distribution into Tab-Separated Values (TSV) and copies it to the clipboard, allowing users to paste structured rows directly into Google Sheets or Excel without downloading any file.