Skip to content

Civic engagement platform

A product experiment I built end to end: one platform that gives each organization a public website and a private dashboard for working with the community it serves. It was designed around local public officials and is shown here with demo data.

Year
2026
Credits
Self-initiated product. Designed and built by me.
Built with
Next.js, TypeScript, Tailwind CSS, Supabase (Postgres, Auth, Storage), Vercel
The platform’s demo site on desktop and mobile. The desktop shows the Commitments page, with five commitments summarised by status. The phone shows the form residents use to report a local issue.
A fictional demo: the commitments tracker on desktop and the issue report form on a phone. All names and data are made up.

The problem

Local officials mostly talk to residents through social media. Plans get buried in the feed, questions scatter across comments and messages, and there’s no simple way to show what has actually been done. The data involved is sensitive too, so the platform had to protect residents by design, not by policy alone.

What I built

One platform that serves many organizations from a single codebase. Each gets a public site for its plans, projects, commitments, events and volunteers, and a private dashboard for its team. The privacy rules are part of how the data is stored, not just a policy page.

  • A public site for each organization, with plans, projects, announcements, events with registration, and volunteer sign-up.
  • A commitments tracker that shows progress on each commitment. Anything marked as delayed needs a public explanation.
  • An Ask page that answers residents’ questions using only what the organization has published.
  • A team dashboard with content editing, an issues inbox that records every change, volunteer lists and analytics that don’t use cookies.
  • Community Pulse, which shows residents’ concerns only as totals. Areas with too few responses are merged so no one can be singled out.
  • No profiling or targeting of residents, strict separation between each client’s data, and sign-up forms that never reveal whether someone has already registered.
  • Custom domains, themes and branding for each organization, all from one codebase.

Outcome

Built and running end to end with demo data: public sites, the team dashboard and the privacy safeguards. It started as a product experiment and isn’t offered to clients. Its foundations (logins and roles, dashboards, inboxes, themes and custom domains) are ready to reuse in client portals and business systems.

The Ask page answering “What is the plan for flooding?” with the matching Flood Management sections of the published platform, each with a link to read it in full.
The Ask page answers with the site’s own published words and links to each section. Nothing is added or reworded. Demo data.
The Community Pulse page: 1,207 responses in the last 13 weeks, roads as the top concern at 31 percent, a chart of responses per week and the share of each issue.
Community Pulse shows what residents are raising as totals only. Areas with too few responses are merged. Demo data.
The team dashboard: totals for responses, open issues, upcoming events, platform items, volunteers and website visitors, with a 30-day visitor chart and issues by status.
The team dashboard. Visitor numbers come from analytics that don’t use cookies. Demo data.
The Issues & feedback inbox: open reports from residents, filterable by category, area and priority, each with a reference number, status and priority.
Residents’ reports arrive in one inbox, where the team sets status and priority. Every change is recorded. Demo data.
Theme settings in the dashboard: four website themes (Classic, Statesman, Cabinet Brief and Mandate), with main and highlight colours, suggested colour combinations and font choices.
Each client picks a theme, then sets their own colours and fonts. Changes go live when they save. Demo data.

Tell me what you’re working on

You don’t need a full brief. Send a few lines about what you want to build or fix, and I’ll reply with clear next steps, usually within a few working days.