Empowering Communities with Real-Time Voting

We The People: Empowering Communities with Real-Time Voting

By Jasmin Ibrišimbegović

Introduction

Project Intro

As civic engagement declines and trust in traditional institutions weakens, new tools are needed to empower individuals and revitalize collective decision-making. We The People is my answer: a modern platform serving the common good through Liquid Democracy and civic altruism.

What is Liquid Democracy?

Liquid Democracy blends direct and representative models: participants vote on issues or delegate their vote to a trusted proxy—transitively and revocably. This approach allows for participatory, flexible, and accountable governance, adapting to the expertise of each issue.

Project Vision

We The People aims to become a digital town square, empowering citizens to:

  • Propose and debate issues
  • Participate in transparent, meaningful voting
  • Delegate votes to trusted members or domain experts
  • Join communities at multiple levels: university, town, local, or global (“World community”)

The goal is an accessible platform where civic altruism can flourish and every voice is heard.

Technology Stack

  • Frontend: Ionic 7 (Angular) Progressive Web App (mobile-first approach)
  • Platforms: Web, Android, iOS (PWA installable everywhere)
  • Backend: Firebase Realtime Database

Key Features

Try the App: We The People

Screenshots:

  • Voting Page Screenshot User List Screenshot
  • Multilingual: The app supports multiple languages for broad participation.

  • Voice-Driven Features: In “listen mode,” the app can use voice recognition to detect real-world conversations (e.g., via Alexa or Google Home). If people discuss wanting a new pool, the app matches the topic to a local vote and can vote automatically—bridging civic tech with daily life.

  • Voting Page: The heart of the app—vote directly, delegate, or skip. Voting is anonymous, but only verified users can participate.

  • Community: Multi-tenant support allows communities (university, town, world) to operate independently.

  • People: List of verified users within a community; voting remains anonymous.

  • Profile: Personalization and reputation-building.

  • Settings: User preferences and notifications.

Real-Time Voting and Observability

A core feature is real-time, reactive voting. Using RxJS observables and Firebase listeners, every user instantly sees updated results as votes come in—no manual refresh.

import { BehaviorSubject } from 'rxjs';
import { onSnapshot, doc, getFirestore } from "firebase/firestore";

private topicSubject = new BehaviorSubject<Topic | null>(null);
topic$ = this.topicSubject.asObservable();

constructor() {
  // Subscribe to a topic for real-time updates
  const db = getFirestore();
  const topicId = 'topic123';
  const topicRef = doc(db, 'topics', topicId);

  onSnapshot(topicRef, (snapshot) => {
    if (snapshot.exists()) {
      this.topicSubject.next(snapshot.data() as Topic);
    }
  });
}

This keeps all UI components bound to topic$ up-to-date as votes are cast.

Data Architecture: Firebase Structure

A clear database structure is at the heart of We The People. Here’s an example Firebase structure:

{
  "communities": {
    "communityId1": {
      "Id": "communityId1",
      "Name": "Sarajevo",
      "topics": {
        "topicId1": {
          "id": "topicId1",
          "title": "Should we build a new public pool?",
          "choices": [
            {"label": "Yes", "value": "yes"},
            {"label": "No", "value": "no"}
          ],
          "votes": {
            "user456": {"uid": "user456", "choice": "yes"},
            "user789": {"uid": "user789", "delegateUid": "user456"}
          }
        }
      }
    }
  }
}

Key Points:

  • Communities: Top-level tenants (local, university, world, etc)
  • Topics: Scoped to each community
  • Choices: Possible answers per topic
  • Votes: Direct and delegated
  • Users: Stored per community, with verification and profile info

Why It Matters

We The People is not just a technical project—it’s an altruistic effort to use technology for the common good. By lowering barriers and enabling flexible delegation, it aims to restore engagement and trust in democracy.

GitHub Repository

Coming soon

Closing Thoughts

This is a prototype—real-world use would require a blockchain or tamper-proof backend, plus advanced security and privacy. Building We The People has been both a technical and personal mission. If you share my belief in civic tech and open democracy, let’s connect!


Contact Developer

Comments

Popular posts from this blog

Building NodeJS REST service and consuming it from within Android application

Building ASP.NET Core app strengthened with AngularJS 2

Thing Translator