# Local demo data

`php artisan migrate:fresh --seed` builds a fictional election workspace for local development. It includes an election, all six position types, a synthetic county/constituency/two-ward hierarchy, eight polling stations, sample parties and candidates, one campaign, two agents, campaign membership, and results in verified, pending, flagged and rejected states.

All demo accounts use the password `password`:

| Email | Role | Use |
| --- | --- | --- |
| `superadmin@tallying.test` | Super administrator | Full system access, including all review controls |
| `admin@tallying.test` | Administrator | Master data, campaign setup and agent assignments; only assigned campaign data |
| `officer@tallying.test` | Election officer | Read only central dashboards, reports and review records |
| `manager@tallying.test` | Campaign admin | Campaign dashboard and review queue |
| `agent1@tallying.test` | Agent | Own assigned stations and result entry |
| `agent2@tallying.test` | Agent | Own assigned stations and result entry |

The seeded evidence is a tiny placeholder image named `DEMO_PLACEHOLDER_not_an_official_form.png`; it is not a real polling-station form. All geographic and candidate data is fictional and must not be treated as official election data. The main `DatabaseSeeder` intentionally skips these demo records when `APP_ENV=production`.
