Skip to content

Robert Rules of Order Website for Web Programming Fall 2025

Notifications You must be signed in to change notification settings

Grace-a-s/RONR_Project

Repository files navigation

Bob's Rules

A web application designed to facilitate asynchronous committee-based decision-making using Robert's Rules of Order. This platform enables committees to propose, debate, and vote on motions with proper parliamentary procedure, all in an asynchronous digital environment.

Live Website: https://bobsrules.netlify.app/

Demo: https://youtu.be/-n7A_yzEaMk

Table of Contents

Overview

Key Features

  • Committee Management: Create and manage committees with customizable voting thresholds (majority or supermajority) and anonymous voting options
  • Motion Workflow: Complete parliamentary procedure lifecycle from proposal through seconding, debate, and voting
  • Role-Based Permissions: Three-tier role system (Member, Chair, Owner) with appropriate access controls
  • Real-Time Status Updates: Automatic motion status transitions and vote tallying
  • User Authentication: Secure authentication via Auth0 with JWT token-based API access
  • Asynchronous Collaboration: Members can participate in debates and voting on their own schedule

Motion Status Lifecycle

Motions follow Robert's Rules of Order with these status transitions:

PROPOSED → SECONDED → DEBATE → VOTING → PASSED/REJECTED
              ↓
           VETOED
  1. PROPOSED: Motion created, awaiting second
  2. SECONDED: Motion seconded, awaiting chair approval
  3. VETOED: Chair ruled motion out of order (terminal state)
  4. DEBATE: Motion approved for discussion
  5. VOTING: Voting phase opened by chair
  6. PASSED/REJECTED: Determined by vote threshold

Role-Based Permissions

Member

Members are the standard participants in the committee who can fully participate in the deliberative process. This is the default role for most committee participants.

  • Propose new motions
  • Second motions proposed by others
  • Participate in debates and discussions
  • Cast votes on open motions
  • Challenge Chair vetoes
  • View committee information and motion history

Chair

The Chair (or presiding officer) manages the governance and procedural aspects of the committee. This role ensures proper parliamentary procedure and controls the flow of business during meetings. A Chair, notably, is not a voting member: in order to preserve impartiality and avoid the appearance of bias, the Chair's role excludes them from proposing motions, casting votes, or participating in debates.

  • Approve or veto seconded motions
  • Open voting on motions
  • Manage voting threshold settings (majority vs. supermajority)
  • Control anonymous voting settings
  • Second another user's motion

Owner

The Owner has the ability to manage the roles of other users within the committee. This role is automatically assigned to the person who created the committee. Multiple users can share the Owner role.

Permissions

  • Add and remove members
  • Change member roles (assign/remove CHAIR/OWNER status)
  • All MEMBER permissions

Website Walkthrough

When the website is opened for the first time by a user they will be asked to log in/sign up. A real email is not required. Password strength requirements pop up for the user to reference.

Screenshot 2025-12-16 115044 Screenshot 2025-12-16 115208

Once the user has been authenticated they are brought to the landing page

Screenshot 2025-12-16 115304

The username will be the beginning of their email until they change it on their profile (Shown later). The user can begin creating committees. By creating a committee they become the Owner.

Screenshot 2025-12-16 115341 The user can then click in to a committee. If the user has been added as a Member to another committee by others, it will show here as well. Screenshot 2025-12-16 115559 Screenshot 2025-12-16 115626

Once in a committee, the user can click Manage/View Membership. Since this user is the Owner they can then add members by clicking the button and change member roles by double clicking on the role entry in the table.

Screenshot 2025-12-16 115651 Screenshot 2025-12-16 115752

From the top navigation bar you can navigate to user profile and change the user information. Screenshot 2025-12-16 120438 Screenshot 2025-12-16 120514

From the committee page we can create motions and click on "view details" to go to the motion.

Screenshot 2025-12-16 122313 Screenshot 2025-12-16 122334 Screenshot 2025-12-16 122612

Another user will then second the motion and will be prompted to wait for the chair before debate begins. Next, a chair must approve or deny(veto). If approved, debate begins.


Here is the chair's POV Screenshot 2025-12-16 122831

You can now debate, selecting your position and hitting send. Select view debate to see what has been said.

Screenshot 2025-12-16 123507 Screenshot 2025-12-16 123523

Once the chair determines a motion has been sufficiently debated they can then begin the vote

Chair POV: Screenshot 2025-12-16 124356

From the committee page we can search motions by contents or by their status using the pink drop down menu. This allows users to quickly navigate to the motions that require their attention. We will look for motions we need to vote on. Screenshot 2025-12-16 125421 Screenshot 2025-12-16 125433

The voting button is now visible and the user can make their choice. Screenshot 2025-12-16 125715 Screenshot 2025-12-16 125740 The voting panel shows where the vote currently is and tells the user if they have voted and how. If the user returns to this page they will know they have voted. Screenshot 2025-12-16 125800

If the preferred procedures are a 2/3 vote or anonymous voting the Chair can change the committee's voting settings on the manage/view membership page. Screenshot 2025-12-16 130151

After the threshold to pass is reached we can see that it has passed, if it is not passed it is marked as rejected. If enough oppose votes occur to make it impossible to pass it will be rejected. Ties are also rejected. (ex. 4 voting members, 2 support, 2 oppose) Screenshot 2025-12-16 131010 If a motion is rejected there will be an option to repropose for members who voted on the motion. Screenshot 2025-12-16 144144 The reproposed motion will be marked as such Screenshot 2025-12-16 144510

If the chair decides to veto this (or any) motion the users can vote to override the chair with a supermajority. If the vote is successful the motion will move to debate. Screenshot 2025-12-16 133016 Screenshot 2025-12-16 133114

User can also navigate to user roles to read more about what they can and cannot do.

Screenshot 2025-12-16 140413 Screenshot 2025-12-16 140259

Technical Stack

Frontend

  • React 19.2.0 with Vite for fast development and optimized builds
  • Material-UI (MUI) 7.3.5 for modern, responsive UI components
  • React Router DOM 7.9.4 for client-side routing
  • Auth0 React SDK 2.8.0 for authentication integration

Backend

  • Netlify Serverless Functions for scalable, event-driven API endpoints
  • MongoDB Atlas with Mongoose 9.0.0 for document database storage
  • Auth0 Authentication with JWT token validation
  • jose 6.1.2 for JWT verification and security

Deployment

  • Netlify for hosting and continuous deployment

Backend API Endpoints and Database Schema

This project implements a complete RESTful API with MongoDB for persistent storage. The system models users, committees, memberships, motions, debates, and votes with proper relationships and role-based access control.

Detailed Documentation:

Key API Features

  • JWT-based authentication on all endpoints
  • Role-based access control (RBAC)
  • Automatic vote tallying and motion resolution
  • RESTful conventions with proper HTTP status codes

Core Collections

  1. Users - Auth0-synchronized user profiles with usernames and metadata
  2. Committees - Decision-making bodies with configurable voting rules
  3. Memberships - User-committee relationships with roles (Member, Chair, Owner)
  4. Motions - Proposals with status tracking through parliamentary lifecycle
  5. Debates - Discussion entries with positions (Support, Oppose, Neutral)
  6. Votes - User votes with positions (Support, Oppose)

About

Robert Rules of Order Website for Web Programming Fall 2025

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors