Help neighbors plan loud projects around each other's sleep schedules and work-from-home calls
# Block Noise Calendar: Quiet Hours Coordinator
## The Problem
Neighborhood noise conflicts rarely happen because people are inconsiderate — they happen because neighbors don't know each other's schedules. The night shift nurse trying to sleep at 2pm has no way to know her neighbor planned to demo a deck that afternoon. Meanwhile, the family with a newborn can't coordinate with the teenager's garage band three doors down. A simple shared calendar with conflict detection could prevent 80% of these friction points before they become Nextdoor flame wars.
## Who Uses It
**Night Shift Workers** — Nurses, security guards, warehouse staff who sleep during unconventional hours and need daytime quiet windows respected.
**Parents of Newborns/Toddlers** — Desperately protecting nap schedules, willing to trade flexibility on other hours for sacred 1-3pm quiet.
**Remote Workers** — People with recurring video calls (daily standups, client presentations) who need predictable quiet windows.
**DIY Homeowners** — Folks planning loud projects (power tools, demo, roof work) who want to be good neighbors but don't know when "good" times are.
**Event Hosts** — People planning backyard parties, graduation celebrations, or band practice who'd rather coordinate than apologize.
**Block Captains/HOA Contacts** — Community members who currently mediate noise disputes and would love a tool that prevents them.
## Core Features
1. **Quiet Hours Registration** — Any neighbor can register their sensitive time windows (sleep schedule, nap times, recurring calls) with a reason tag (medical, childcare, work, general preference). These persist week-to-week until changed.
2. **Loud Activity Posting** — Anyone can post upcoming noisy activities with date, time range, noise type (construction, music, yard work, party), and estimated decibel level (quiet/moderate/loud). Posts are visible to the block 48 hours before or immediately for same-day courtesy notice.
3. **Conflict Detection Dashboard** — When a loud activity overlaps registered quiet hours, both parties get a gentle notification: "Your deck demo on Saturday 1-4pm overlaps with 2 neighbors' registered quiet windows. Would you like to see alternative times or message them directly?"
4. **Suggested Time Slots** — The app analyzes all registered quiet hours and surfaces "green zones" — times when no neighbors have registered sensitivities. "Saturday 9am-12pm has no conflicts on your block."
5. **City Ordinance Integration** — Pulls noise ordinance hours and construction permit data via civic services search, displaying "City quiet hours: 10pm-7am weekdays, 10pm-9am weekends" and any active permitted construction nearby.
6. **Anonymous Mode for Sensitive Registrations** — Neighbors can register quiet hours without revealing the reason ("Medical - details private") so night shift workers or those with health conditions don't have to explain themselves.
7. **Neighborly Negotiation Thread** — When conflicts are flagged, opens a simple chat between the two parties: "Hi! I'm planning to use my table saw Saturday afternoon. I see you have a quiet window then — any flexibility, or should I shift to Sunday morning?"
## WellSpr.ing Integration Points
### MCP Tools (via POST https://wellspr.ing/mcp — JSON-RPC 2.0)
**`search_civic_services`** — Query for noise ordinance information, quiet hours regulations, and complaint filing procedures for the user's municipality. Surface this in the app's "Local Rules" section so neighbors know the legal baseline.
**`get_city_services`** — Retrieve city services related to noise complaints, code enforcement contacts, and permit offices. Useful for linking to official channels when coordination fails.
**`get_local_news`** — Surface any news about construction projects, street work, or events that might affect block noise levels. Display as "Heads up: City repaving Oak Street next week per local news."
**`get_civic_ideas`** — Check if similar noise coordination or neighbor mediation projects exist in the WellSpr.ing ecosystem that users might want to connect with.
**`ask_ody`** — Power a "Ask about noise rules" feature where users can get plain-language answers about local ordinances, permit requirements, or neighborly etiquette.
**`reach_number`** — Enable coordination across block boundaries when noise sources (construction sites, venues) affect multiple blocks.
### REST Endpoints
**`GET /api/officials`** — Display relevant local officials (city council member, code enforcement contact) for users who need to escalate beyond neighbor coordination.
**`GET /api/geo/portals?area_code=NNN`** — Use geographic data to define block boundaries and determine which users share a coordination zone.
### Future Capabilities (Roadmap: not yet live)
**Construction Permit Calendar Sync** — Direct integration with city permit databases to auto-populate known permitted construction. Currently requires manual entry or news scraping.
**Decibel Monitoring Integration** — IoT device data for objective noise measurement. Not currently available.
## Data Model
### `blocks`
- `id` (uuid)
- `name` (string) — "300 Block of Oak Street"
- `area_code` (string) — for geo/portals integration
- `ordinance_cache` (json) — cached civic services data
- `created_at` (timestamp)
### `neighbors`
- `id` (uuid)
- `block_id` (foreign key)
- `display_name` (string) — can be anonymous like "Neighbor at #312"
- `contact_method` (string) — email or in-app only
- `created_at` (timestamp)
### `quiet_windows`
- `id` (uuid)
- `neighbor_id` (foreign key)
- `day_pattern` (string) — "weekdays", "weekends", "daily", "specific_date"
- `start_time` (time)
- `end_time` (time)
- `reason_tag` (enum) — sleep, childcare, work, medical, general
- `reason_public` (boolean) — whether to show reason to others
- `active` (boolean)
### `loud_activities`
- `id` (uuid)
- `neighbor_id` (foreign key)
- `title` (string) — "Deck demolition"
- `noise_type` (enum) — construction, music, yard_work, party, other
- `intensity` (enum) — quiet, moderate, loud
- `scheduled_date` (date)
- `start_time` (time)
- `end_time` (time)
- `status` (enum) — planned, confirmed, completed, cancelled
- `conflicts_acknowledged` (boolean)
### `negotiations`
- `id` (uuid)
- `loud_activity_id` (foreign key)
- `quiet_window_id` (foreign key)
- `status` (enum) — pending, resolved, escalated
- `messages` (json array)
- `outcome` (string) — notes on resolution
## Vibe Coding Prompt to Get Started
```
Build a "Block Noise Calendar" web app using React + Express on Replit with SQLite.
FIRST MILESTONE: Core calendar view with conflict detection
1. Create a simple Express backend with these routes:
- POST /api/blocks — create a new block (name, area_code)
- POST /api/neighbors — register a neighbor to a block
- POST /api/quiet-windows — register quiet hours (neighbor_id, day_pattern, start_time, end_time, reason_tag, reason_public)
- POST /api/loud-activities — post a planned noisy activity (neighbor_id, title, noise_type, intensity, date, start/end times)
◎
This is your project thread with Ody. Ask questions, share screenshots, talk through the build. Anyone with this link can join the conversation.
Paste screenshots or upload images/PDFs · Shift+Enter for new line