Notes | Back to the Voter List

Navigation guide

# Townhall Voter List Software: the one-page clickable sample (version 4)

SAMPLE DATA. The society is made up (Sample Heights RWA, 120 flats); every name and number is made up. Nothing is saved or sent. Payments, wherever they are mentioned, are only ever taken by IT SERVICES BY RAJAT AGARWAL through Razorpay; no payment happens here. The wording is meant for use anywhere in the world: no clause numbers and no country-specific legal references.

## How to start
1. Double-click `start-demo.cmd` (or run `node server.js`). It opens **http://127.0.0.1:4176/**. Add the word `nobrowser` to start without opening the browser.
2. To stop it, double-click `stop-demo.cmd`. It stops only the program on port 4176. Versions 1 to 3 (ports 4173 to 4175) are left alone.
3. Nothing needs typing. Everything is buttons: press the gold button at the foot of each section.

## ONE page, no page changes
The whole Voter List product lives on one page, `/` (also `/v`).

- A **sticky step bar** stays at the top: 1, 2, 3, 4.1, 4.2, 5, 6.1, 6.2, then Your Voter list and What next?. It shows progress ("Step 4.1 of 8") and each step jumps (smooth scroll) to its section. **Attendance** and **End to End** sit at the end, greyed with a padlock, and open once the 1st cut is published.
- The sections are stacked. Only the section being worked on is open. A **finished section folds into one line** (for example "Owner or authorised proxy") with an **Edit** button that reopens it in place.
- After step 5 (Publish), the page also shows **Your Voter list** (tabs: Versions, Edit and save a new version, Freeze a copy for an event, Register (printable), Change history, Organizers, Sign in again) and **What next?**. Steps 6.1 and 6.2 stay open to the organizer for the whole correction period.

## The steps
| Step | Section | What it shows |
|---|---|---|
| 1 | Society / Association Details | Society / Association Name, kind of body (RWA, AOA, HOA, **Association**, cooperative housing society, apartment owners association, Others), Country, State / Region ("The rules and bye laws differ from one state or region to another."), **registration number saved with no spaces** (type it with spaces and the "Saved as" line shows it joined up), registering office, optional bye laws |
| 2 | Upload or Paste (Flat Numbers / House Numbers / Member IDs) | Excel/CSV upload or paste, template; **partial data may be uploaded**; everything is mapped against the Flat / House / Member ID; the list of e-mail IDs with how many IDs each is attached to; a few small things to mend in place (they never block) |
| 3 | Weightage | Equal (1 for each ID), or unequal: tap a number per ID; total and share update at once |
| 4.1 | Who may Vote | Five plain rules (Owner only, Owner or tenant, Owner or authorised proxy, Owner tenant or proxy, Member only); a proxy belongs to one event. No clause reference anywhere |
| 4.2 | Who may Vote (dues) | Optional tick-box "Cut-off date for submission of dues"; the date picker appears when ticked |
| 5 | Publish the 1st cut | Summary, "Download the 1st cut as PDF" / Print, the last date for submitting correction requests (date picker), **Publish the 1st cut** |
| 6.1 | Generate Verification Link | One constant link, shown with the last date of correction / verification and the date the link was issued. "See the link after the last date" shows **Correction Window Closed**. What the person sees: open link, verify e-mail (6-digit code or Google sign-in), enter ID, confirm or write the change, add documents (Government ID, Registration Paper, Rent Agreement, Proxy Nomination Form, Society ID, Others). The organizer presses **Accept fully / Accept partly / Reject**; the log updates at once |
| 6.2 | Manual correction | The organizer edits a record by hand (B-202) and the line joins the same complete log |
| 7 | Your Voter list | Appears after Publish (or "Sign in again" at the top). Panels open in place |
| 8 | What next? | The other four products from your list, "already filled in", the price-difference slot |

## Log and e-mail rules (shown in steps 2, 6.1 and 6.2)
- The log shows who asked for which data, for which Flat / House / Member ID, from which e-mail ID: Date, E-mail ID, Flat / House / Member ID, Asked for, Request date, Edit date, Approved / Rejected, Organizer.
- One e-mail ID opens one Flat / House / Member ID at a time (one by one only).
- One e-mail ID may be attached to several IDs, and the list says so: "this email ID is attached with 2 flat / house / member ID", "...with 3 ...", and "...with 4 or more than 4 flat / house / member ID".

## Old addresses still work
Earlier addresses redirect to the matching place on the one page: `/v/rule` goes to step 4.1, `/v/checks` to step 2, `/v/save` to step 5; `/v/home`, `/v/edit`, `/v/freeze`, `/v/register`, `/v/history`, `/v/organizers`, `/v/signin` go to the matching panel of Your Voter list; `/v/next` to What next. The five-product front door of version 3 is at `/products`.

## Ready-made views
`/v?open=society`, `/v?open=upload&fix=1-2`, `/v?open=weight&mode=unequal`, `/v?open=vote&rule=2`, `/v?open=dues`, `/v?open=publish`, `/v?open=verify`, `/v?open=manual`, `/v?saved=1&tab=register` (also `versions`, `edit`, `freeze`, `history`, `organizers`, `signin`), `/v?open=next`. Screenshots of these are in the `screens` folder.

## The rules shown in the sample
- The **Flat Number / House Number / Member ID** is required; every other piece of data is mapped against it. Exactly one voter for each ID.
- **Who may be the voter** is the society's choice; a proxy belongs to one event, with a letter reference and dates.
- **Weight** is equal by default; if unequal, the society gives each ID its own weight. Quorum and majorities later use these weights.
- **Names** are shown in full only in the working tables (step 2 mend table, Edit). Everywhere else they are partly hidden.
- **Registration number** is recorded without spaces and never claimed as verified.

## Prices
The old "Upload and check are free ... Rs 199" sentence on the first screen has been removed. A price slot for later versions and the price difference when moving to Attendance or End to End remain as dashed slots for the owner. Rs 499 and Rs 1,499 (End to End) are unchanged from version 3.

## Tags and phone use
Every page carries the SAMPLE DATA tag and a small state tag. The page works on a phone: sections stack, tables and the step bar scroll sideways, no sideways scrolling of the page itself.

## Checking it
With the sample running: `node tools/smoke.js` (234 checks, all green at hand-over).

## Version 4.2 additions (owner orders of 7 Nov 2026)
- **Numbered sub-sections** inside every step: 1.1 Society / Association Name, 1.2 Kind of body, 1.3 Country, 1.4 State / Region and so on; 2.1, 2.2 ...; 4.1.1, 4.1.2, 4.1.3 ...; 6.1.1 ...
- The word **Mend** is now **Edit** everywhere ("Edit this", "Edit everything for me").
- **4.1.3** in Who may Vote: a table, one row per ID, with Yes / No buttons for *Allowed to Attend* and *Allowed to Vote*.
- **Requests waiting for the organizer (6.1)**: a tick-box on each row, three lists (**Waiting / Accepted / Rejected**), an **Approve ticked requests** button (accepts all ticked ones fully, at once), and Accept fully / Accept partly / Reject on each row. A plain-words line says what was accepted and what was rejected, and any request can be moved back to Waiting.
- **Careful by design:** a plain question before publishing, deciding a request or applying a manual correction; gold buttons stay asleep until the step is valid (with a gentle message saying why: registration number, weights as numbers, dues date, last date, new information); Back on every step; Undo for decisions and the manual correction; the published button cannot be pressed twice.
- **Activity log** (last section, and a link in the step bar): every action, with who, what, date and time, newest first.
- `node tools/smoke.js` now runs 234 checks, all green.