DjangoForge Wizard Dashboard Documentation

This document describes the authenticated DjangoForge Wizard dashboard, its shared layout, form workflow, generated configuration, help dialogs, settings page, API behavior, and responsive interaction model.

Overview

The Wizard Dashboard is the visual configuration interface for DjangoForge. It allows an authenticated user to:

The dashboard is intentionally guided: users move through six configuration steps, while the sidebar provides direct access to each step after Build a project is expanded.

Access and routes

All dashboard routes require authentication.

RoutePurposeAuthentication
/wizard/Main Wizard DashboardRequired
/wizard/settings/Password settings pageRequired
/wizard/user-settings/JSON settings endpointRequired
/wizard/api/generate/Project generation endpointRequired by the dashboard flow
/wizard/download/<filename>/Generated ZIP downloadRequired

Unauthenticated users are redirected to /login/?next=/wizard/ or the relevant protected URL. Successful login returns the user to the requested destination, normally /wizard/.

Shared dashboard layout

The dashboard and settings page inherit the shared wizard layout:

Typography and visual system

Desktop sidebar

At large desktop widths, the sidebar is fixed to the left and fills the viewport height. The main header and content are offset to account for its width.

The sidebar contains:

  1. DjangoForge brand link.
  2. Dashboard link.
  3. Build a project expandable menu.
  4. Wizard step links, hidden until Build a project is selected.
  5. Account section with Change password.
  6. Back to website link.

The account section is fixed near the bottom of the sidebar, immediately above Back to website.

Mobile and tablet sidebar

On mobile and tablet widths:

Active navigation state

Only the current destination or wizard panel is visually active.

Dashboard overview

Before the form starts, the dashboard displays:

Selecting Get started hides the overview, shows the form, reveals progress, and opens Step 1.

Wizard navigation

The progress header displays:

The six steps are:

  1. Project basics
  2. Database
  3. Frontend assets
  4. Modules
  5. Post-generation setup
  6. Review & generate

Users can navigate with Next and Back or select a visible sidebar step. Direct sidebar selection intentionally shows the selected panel immediately; normal Next navigation validates the current panel first.

Every step includes a How to configure this step link. The link opens a modal explaining the purpose of the fields, recommended choices, and resulting behavior.

Step 1: Project basics

Project name

The project name is required. It must:

Example: my_company

Template

Available templates:

The Corporate template automatically enables Contact and prevents duplicate module configuration.

Python version

Available versions:

The generator validates version compatibility with the selected Django version.

Django version

Available versions:

Website title

Optional site title used for generated metadata and branding. If omitted, the project name is used.

Description

Optional project or website description used as generated project metadata.

Step 2: Database

The dashboard currently supports:

PostgreSQL is not currently supported by the generator and must not be selected or treated as an active generator option.

Generated database credentials are environment-driven rather than hard-coded into project settings.

Step 3: Frontend assets

CSS handling

Icon font

JavaScript libraries

The dashboard can vendor any combination of the following libraries:

LibraryTypical useWebsite
HTMXHTML-driven AJAX interactionshtmx.org
Alpine.jsLightweight reactive behavioralpinejs.dev
jQueryDOM and utility helpersjquery.com
SwiperTouch sliders and carouselsswiperjs.com
AOSAnimate elements on scrollAOS
WOW.jsReveal CSS animations on scrollwowjs.uk
GSAPHigh-performance timelines and animationsgsap.com
LightGalleryImage and video lightboxeslightgalleryjs.com
Chart.jsCharts and graphschartjs.org
SweetAlert2Alert and confirmation dialogssweetalert2.github.io
FlatpickrDate and time pickerflatpickr.js.org
Select2Enhanced select boxesselect2.org
DataTablesSortable and searchable tablesdatatables.net
DropzoneDrag-and-drop uploadsdropzone.dev
Tom SelectAutocomplete and flexible selectstom-select.js.org
SortableJSDrag-and-drop reorderingSortableJS

Each library name in the dashboard opens its official website in a secure new tab. Select2 automatically enables its jQuery dependency.

Custom CSS and JavaScript scaffolds

When enabled, the generator creates empty custom CSS and JavaScript files for project-specific changes.

Step 4: Modules

Modules are independent and composable. Each module has a question-mark help button that opens a guide describing its purpose, generated models, and model relationships.

Authentication

Blog

Generated model: Post

Important fields include title, slug, excerpt, content, featured image, publication status, publication date, and timestamps.

Relationship:

Draft posts are hidden from public pages. Search, pagination, detail pages, and admin management are included.

Contact

Generated model: ContactMessage

Stores name, email, subject, message, handled state, and creation time.

Relationship:

Corporate Website automatically enables Contact.

Inline image upload

Generated model: EditableImage

Stores a unique content key, image file, and update timestamp.

Relationship:

Image replacement is staff-only and includes a localized placeholder when no image is available.

Inline text edit

Generated model: EditableText

Stores content key, language, translated value, and update timestamp.

Relationship:

Editing is staff-only and performed through AJAX-enabled interface controls.

FAQ

Generated model: Faq

Stores question, answer, display order, publication state, and creation time.

Relationship:

FAQ entries can be ordered and managed in the Django admin.

Site settings

Generated model: SiteSettings

Stores title, slogan, phone, email, address, logo, favicon, about text, and copyright text.

Relationship:

Multilingual

Multilingual infrastructure does not create one standalone module model. It adds:

When enabled, the dashboard lets the user select languages and a primary language.

Step 5: Post-generation setup

Setup script

When enabled, DjangoForge creates setup helpers that can:

Target operating system

Admin username and password

These values are used by the generated setup process to create the initial Django admin account. The default password should be changed before production use.

GitHub publishing

When enabled, the setup helper can:

  1. Initialize Git.
  2. Create the initial commit.
  3. Add the configured repository URL.
  4. Push the configured branch.

The repository URL and branch are entered in the dashboard. Credentials are read from GITHUB_TOKEN or GITHUB_ACCESS_TOKEN in .env.

The built-in GitHub guide explains installation, repository setup, token configuration, setup commands, and token safety.

Development server

The generated setup script can optionally launch the development server after setup.

Step 6: Review and generate

The review screen contains two tabs:

All Details

Displays the resolved project configuration, including:

Mockup

Available mockup styles:

The mockup previews the selected corporate or general visual direction. It is a visual preview and does not replace the generated project.

Generate project

The Generate project button submits the assembled configuration to /wizard/api/generate/. On success, the dashboard displays:

Validation and dependencies

The dashboard performs client-side validation before advancing:

The backend performs authoritative validation again before writing files. Client-side validation must not be treated as a security boundary.

JavaScript dependency behavior:

User settings page

The User Settings sidebar item opens /wizard/settings/.

The current settings scope is intentionally limited to password management:

The page uses Django’s PasswordChangeForm and preserves the current authenticated session after a successful password change with update_session_auth_hash.

The page includes:

Frontend implementation

Important files:

FileResponsibility
studio/templates/generator/wizard_base.htmlShared wizard shell
studio/templates/generator/_wizard_header.htmlShared header
studio/templates/generator/_wizard_sidebar.htmlSidebar and navigation
studio/templates/generator/index.htmlDashboard content and wizard JavaScript
studio/templates/generator/settings.htmlPassword settings page
studio/generator/views.pyDashboard, settings, generation, and JSON endpoints
studio/generator/urls.pyWizard routes
studio/static/css/tailwind.cssCompiled dashboard styles

The dashboard uses progressive enhancement-style JavaScript for:

Responsive behavior

All modal dialogs use viewport-aware scrolling so long help content remains usable on small screens.

Security notes

Verification checklist

After changing the dashboard or shared layouts, run:

.\.venv\Scripts\python.exe studio\manage.py check
.\.venv\Scripts\python.exe -m pytest

The current project verification baseline is 111 passing tests.