← Back to all products
$29
Multi-Step Wizard
Build multi-step form wizards with state management, progress tracking, and conditional step skipping.
JSONMarkdownPython
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 10 files
multi-step-wizard/
├── LICENSE
├── README.md
├── examples/
│ └── onboarding_wizard.json
├── free-sample.zip
├── guide/
│ ├── 01_features.md
│ ├── 02_cli-reference.md
│ ├── 03_programmatic-usage.md
│ └── 04_file-structure.md
├── index.html
└── src/
└── multi_step_wizard.py
📖 Documentation Preview README excerpt
Multi-Step Wizard
Build multi-step form wizards with state management, progress tracking, and conditional step skipping. Pure Python, zero dependencies.
Part of the [Form Forge](https://form-forge.codevault.dev) toolkit by CodeVault.
Features
- Multi-step form engine: define wizard flows as JSON, render to HTML or run interactively
- State management: persist wizard state across steps with JSON session files
- Progress tracking: visual progress bar and step numbering
- Conditional step skipping: skip steps based on previous answers
- HTML rendering: generate complete, styled HTML wizard forms
- Interactive CLI mode: step-through wizard in the terminal
- Customizable labels: back, next, submit button text, form action/method
- Python 3.10+ stdlib only — no pip installs required
Quick Start
# Run the built-in demo wizard
python src/multi_step_wizard.py --demo
# Run interactively from a JSON definition
python src/multi_step_wizard.py --input examples/onboarding_wizard.json --interactive
# Render to HTML
python src/multi_step_wizard.py --input examples/onboarding_wizard.json --render
# Render to an HTML file
python src/multi_step_wizard.py --input examples/onboarding_wizard.json --render --output wizard.html
CLI Reference
| Flag | Description |
|---|---|
--input FILE | Load wizard definition from JSON file |
--render | Render the wizard as HTML to stdout |
--interactive | Run the wizard interactively in the terminal |
--demo | Run a built-in demo wizard |
--output FILE | Write rendered HTML to a file instead of stdout |
Wizard JSON Format
{
"id": "user-onboarding",
"title": "Account Setup Wizard",
"showProgressBar": true,
"showStepNumbers": true,
"allowBack": true,
"nextLabel": "Continue",
"backLabel": "Go Back",
"submitLabel": "Complete Setup",
"action": "/api/onboarding",
"method": "POST",
"steps": [
{
"id": "personal",
*... continues with setup instructions, usage examples, and more.*
📄 Code Sample .py preview
src/multi_step_wizard.py
#!/usr/bin/env python3
"""
Multi-Step Wizard — Form Wizard Framework
==========================================
Build multi-step form wizards with state management, progress
tracking, step validation, and back/forward navigation.
Outputs HTML or JSON for integration with any frontend.
Part of the Form Forge toolkit by DataNest.
License: MIT
"""
from __future__ import annotations
import argparse
import copy
import hashlib
import html
import json
import logging
import os
import secrets
import sys
import time
from dataclasses import dataclass, field
from datetime import datetime, timezone
from enum import Enum
from typing import Any
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
logger = logging.getLogger(__name__)
# ---------------------------------------------------------------------------
# Constants
# ---------------------------------------------------------------------------
STATE_DIR = "wizard_states"
MAX_STEPS = 50 # Sane upper limit
SESSION_ID_BYTES = 16 # 32 hex chars
class StepStatus(Enum):
"""Status of a wizard step."""
PENDING = "pending"
ACTIVE = "active"
COMPLETED = "completed"
SKIPPED = "skipped"
class FieldType(Enum):
"""Input types within a wizard step."""
# ... 562 more lines ...