Skip to content

Latest commit

Β 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Parent Team Commons

A calm, private space where parents of kids on the same team coordinate logistics, help each other, and build communityβ€”without the chaos of group chats or social media.

Status: βœ… MVP Complete (95%) Live At: https://benchd.spuzzed.com Version: 1.0.0 Last Updated: January 13, 2026


What Is This?

Parent Team Commons is a parent-led coordination and social web application for parents whose children participate on the same team. It replaces chaotic WhatsApp groups and Facebook threads with a focused, calm platform designed specifically for parent coordination.

Core Philosophy

  • Parents First: Every feature designed around parent needs
  • Coordination Over Control: Enable coordination, don't enforce rules
  • Trust Through Shared Reality: Trust established through shared children and teams
  • Lightweight & Calm: No complexity, enforcement, or gamification

Key Features

βœ… Implemented

Authentication & Access

  • Devise-based signup/login
  • Child-anchored trust model
  • Co-parenting support (multiple parents per child)
  • No child accounts (safety first)

Team Management

  • Create teams with auto-generated invite codes
  • Add/claim children to gain access
  • View team roster (parents and children)
  • Display claimed/unclaimed children

Team Commons

  • Post plain-text messages to team feed
  • Chronological message display
  • Author attribution
  • Team-scoped visibility

Events & Coordination

  • Create events (practices, games, tournaments, gatherings)
  • Full event details (date, time, location, notes)
  • List upcoming and past events
  • Event creator attribution

RSVP System

  • Three-state RSVP: Going / Maybe / Can't Go
  • Visual color-coded buttons
  • Live RSVP counts per event
  • Update anytime

Event Discussions

  • Event-specific message threads
  • Coordinate carpools, snacks, logistics
  • Isolated from Team Commons
  • Same clean interface

🚧 Planned (Post-MVP)

  • Signup lists for snacks, supplies, BBQs
  • Invite code lookup/join flow
  • Edit/delete messages and events
  • Mute/leave team functionality
  • Email notifications
  • Mobile PWA setup
  • Equipment exchange tags

The Trust Model

Core Rule (Non-Negotiable)

A parent may only access a team through a child associated with that team.

This means:

  • Parents do NOT join teams directly
  • Parents must add or claim a child to gain access
  • No child β†’ no team access
  • Children do NOT have accounts

How It Works

User (Parent) ──[Guardianship]──► Child ──► Team

This trust chain:

  • Prevents random access without heavy admin controls
  • Supports co-parenting naturally
  • Maintains safety around minors
  • Keeps teams private and focused

Tech Stack

  • Framework: Ruby on Rails 8.1.2
  • Database: PostgreSQL 16 (Docker)
  • Authentication: Devise 4.9.4
  • Frontend: Server-rendered HTML + Turbo + Stimulus
  • Styling: Inline styles (prototyping phase)
  • Deployment: Development server on port 3005

Data Model

9 core tables:

  1. users - Parent accounts
  2. teams - Team context with invite codes
  3. children - Trust anchors (no accounts)
  4. guardianships - Parent-child join table
  5. events - Coordination anchors
  6. messages - Team Commons + Event threads
  7. rsvps - Event responses
  8. signup_lists - Event coordination lists
  9. signup_items - Claimable items

Getting Started

Prerequisites

  • Ruby 3.4.7
  • Rails 8.1.2
  • PostgreSQL 16
  • Docker (for PostgreSQL)

Installation

# Clone the repository
cd TeamParent

# Install dependencies
bundle install

# Start PostgreSQL
docker run -d \
  --name teamparent-postgres \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -p 5432:5432 \
  postgres:16-alpine

# Setup database
rails db:create db:migrate

# Start server
rails server -p 3005 -b 0.0.0.0

Visit http://localhost:3005

First User Flow

  1. Sign up as a parent
  2. Create a team
  3. Add your child's first name
  4. Get your invite code
  5. Post to Team Commons
  6. Create an event
  7. RSVP and discuss

Project Structure

TeamParent/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ teams_controller.rb
β”‚   β”‚   β”œβ”€β”€ children_controller.rb
β”‚   β”‚   β”œβ”€β”€ events_controller.rb
β”‚   β”‚   β”œβ”€β”€ messages_controller.rb
β”‚   β”‚   └── rsvps_controller.rb
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ user.rb
β”‚   β”‚   β”œβ”€β”€ team.rb
β”‚   β”‚   β”œβ”€β”€ child.rb
β”‚   β”‚   β”œβ”€β”€ guardianship.rb
β”‚   β”‚   β”œβ”€β”€ event.rb
β”‚   β”‚   β”œβ”€β”€ message.rb
β”‚   β”‚   β”œβ”€β”€ rsvp.rb
β”‚   β”‚   β”œβ”€β”€ signup_list.rb
β”‚   β”‚   └── signup_item.rb
β”‚   └── views/
β”‚       β”œβ”€β”€ teams/
β”‚       β”œβ”€β”€ children/
β”‚       β”œβ”€β”€ events/
β”‚       └── home/
β”œβ”€β”€ db/
β”‚   β”œβ”€β”€ migrate/ (9 migrations)
β”‚   └── schema.rb
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ data-model.md
β”‚   β”œβ”€β”€ authorization.md
β”‚   β”œβ”€β”€ migrations.md
β”‚   └── models.md
β”œβ”€β”€ CLAUDE.md (project instructions)
β”œβ”€β”€ spec.md (product specification)
β”œβ”€β”€ BUILD_STATUS.md (current status)
└── README.md (this file)

Documentation

For Developers

  • CLAUDE.md - Project instructions and constraints
  • spec.md - Complete product specification
  • docs/data-model.md - ERD and model documentation
  • docs/authorization.md - Trust model and authorization queries
  • docs/migrations.md - All migration SQL
  • docs/models.md - Complete model code reference

For Product

  • spec.md - Product requirements and philosophy
  • BUILD_STATUS.md - Current implementation status

Key Routes

Authentication

  • GET /users/sign_up - Registration
  • GET /users/sign_in - Login
  • DELETE /users/sign_out - Logout

Teams

  • GET /teams - List accessible teams
  • GET /teams/new - Create team form
  • POST /teams - Create team
  • GET /teams/:id - Team detail + Team Commons

Children

  • GET /teams/:team_id/children/new - Add/claim child
  • POST /teams/:team_id/children - Create/claim child

Messages

  • POST /teams/:team_id/messages - Post to Team Commons
  • POST /teams/:team_id/events/:event_id/messages - Post to event thread

Events

  • GET /teams/:team_id/events - Event list
  • GET /teams/:team_id/events/new - Create event form
  • POST /teams/:team_id/events - Create event
  • GET /teams/:team_id/events/:id - Event detail

RSVPs

  • POST /teams/:team_id/events/:event_id/rsvps - Create/update RSVP

Design Principles

What This Is

  • A private parent commons
  • Built for coordination and logistics
  • Focused on trust and safety
  • Unofficial and non-authoritative

What This Is NOT

  • A team management system
  • A coach or league tool
  • A stats or standings tracker
  • A marketplace
  • A general social network

Technical Principles

  • Fat models, thin controllers
  • No service objects unless unavoidable
  • Explicit associations
  • Database constraints matter
  • Boring, readable Rails code
  • Server-rendered HTML preferred

Safety & Privacy

Non-Negotiables

  • No child accounts
  • Minimize PII (first names only)
  • No dates of birth
  • No addresses
  • No medical information
  • Private, invite-only teams

Controls Available

  • Parents can mute threads (planned)
  • Parents can block others (planned)
  • Parents can leave teams (planned)
  • Access strictly child-anchored

Contributing

This is a focused product with a locked specification. Before contributing:

  1. Read CLAUDE.md for project constraints
  2. Read spec.md for product philosophy
  3. Understand the trust model in docs/authorization.md
  4. Follow Rails conventions strictly
  5. No features outside the spec without discussion

Code Style

  • Use rubocop for linting
  • Write clear, explicit code
  • Avoid premature abstraction
  • Test critical paths
  • Document complex authorization logic

License

[To be determined]


Contact & Support

Live URL: https://benchd.spuzzed.com Status: Development MVP Feedback: [To be determined]


Changelog

v1.0.0 (2026-01-13) - MVP Complete

  • βœ… Authentication with Devise
  • βœ… Team creation with invite codes
  • βœ… Child management (add/claim)
  • βœ… Team Commons message feed
  • βœ… Event creation and listing
  • βœ… RSVP functionality
  • βœ… Event-scoped discussions
  • βœ… Child-anchored authorization
  • βœ… PostgreSQL data model
  • βœ… Docker deployment setup

Built with ❀️ for parents who just want to coordinate without chaos.

About

Benchd project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages