← System Documentation Getting started

Quick start

The shortest controlled route from installation to a witnessed mock election.

Quick Start

Objective

This guide takes a new installation from an empty database to a controlled mock election. Read the complete manual before a binding poll.

1. Prepare the application

py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
python manage.py generate_security_keys
python manage.py migrate
python manage.py createsuperuser
python manage.py check
python manage.py test
python manage.py runserver

Use APP_ENV=development locally. Do not copy .env, db.sqlite3, media or protected evidence into Git.

2. Create platform users

  1. Sign in as the technical superuser.
  2. Open Control Centre.
  3. Create an ordinary authorised user for routine administration.
  4. assign a current Platform Administrator appointment;
  5. sign out and verify that the ordinary account can use the Control Centre without Django staff status.

3. Create the association

Enter the official name, short name, description, primary and secondary colours, data controller, data-protection email, retention period and active state. Then assign at least an association Owner or Administrator.

4. Create an election cycle

Set title, unique reference, type, nomination mode, nomination dates where Self or Mixed mode is selected, voting opening and closing, result approval requirement and permitted voter-verification methods.

For a first mock election, use a future nomination window and voting period. Do not use production member data.

5. Appoint the core Committee

Appoint three distinct active authorised users:

  • Electoral Commissioner / Chairperson;
  • Election Secretary;
  • ICT and Data Protection Commissioner.

Each appointment requires dates, an official reference and a protected PDF appointment letter. Optional officers may be added. The appointees do not need to be voters.

6. Build the election register

Choose a source: association directory, previous election, upload or empty register. Add test voters, review status and certify the register with a formal reference. Changing the register after certification requires recertification.

7. Configure the ballot

Create single-seat, multiple-seat, Yes/No or referendum positions. Set seats, maximum selections, order, required status and abstention rules.

Use the selected nomination mode correctly:

  • Upload: add/import Commission candidates;
  • Self: submit and approve test self-nominations;
  • Mixed: use both sources and reconcile duplicates;
  • None: add predetermined candidates or questions directly.

Upload a valid photograph for every approved candidate. Publish the final candidate list after all decisions are complete.

8. Complete readiness

Resolve every readiness message. Confirm:

  • current core appointments and appointment letters;
  • certified unchanged register with active eligible voters;
  • final candidate list where candidate contests exist;
  • valid positions and approved photographed candidates;
  • required result-approval count;
  • no invalid unlinked Self-mode candidates;
  • no blocking configuration changes.

Run a witnessed mock election using test accounts and record the outcome.

9. Conduct the mock poll

The Commissioner opens voting. Test each enabled verification method, ballot type, abstention rule, duplicate-vote prevention and receipt. Monitor incidents without observing selections. Close voting.

10. Tally and publish

Generate the first tally snapshot, compare ballot count with participation count, record incidents, obtain the required independent approvals and publish. Test CSV, certified PDF, generated declaration, signed-declaration upload and the public previous-results archive.

The generated declaration should contain two representative acknowledgement rows for every approved candidate.

11. Complete release checks

py manage.py makemigrations --check --dry-run
py manage.py check
py manage.py test
py manage.py verify_audit_ledger

Review TESTING_ACCEPTANCE.md, SECURITY_AND_PRIVACY.md, BACKUP_RECOVERY.md and PROJECT_FILE_CLEANUP.md before promotion to production.

Continue the procedure