Celebrate and preserve the fleeting chalk masterpieces that brighten neighborhood sidewalks before the rain washes them away.
# Sidewalk Chalk Gallery: Map Temporary Street Art
## The Problem
Every neighborhood has moments of beautiful, spontaneous creativity—kids drawing rainbows after a summer storm, an artist leaving an intricate mandala on a corner sidewalk, hopscotch grids that become unofficial gathering spots. But these chalk masterpieces vanish with the next rain, leaving no record they ever existed. We lose not just the art itself, but the stories of who made it, where the creative hotspots are, and the simple joy of celebrating our neighbors' fleeting gifts to the streetscape.
## Who Uses It
**The Proud Parent** — Wants to preserve their child's sidewalk dinosaur before tonight's thunderstorm, share it with grandparents, and maybe discover that other kids on the next block are into dinosaurs too.
**The Neighborhood Walker** — Strolls daily and notices chalk art, wants to document it as a form of community appreciation, might leave a kind comment for the unknown artist.
**The Young Artist (8-14)** — Excited to see their work "published" on a map, motivated to create more knowing people will see it, builds confidence through positive community feedback.
**The Community Connector** — Block captain, neighborhood association member, or local reporter who wants to highlight neighborhood creativity in newsletters or at community meetings.
**The Nostalgic Archivist** — Loves the idea of a time-capsule view: "Here's what our sidewalks looked like in summer 2024."
## Core Features
1. **Snap & Pin** — Anyone can photograph chalk art, which auto-captures GPS coordinates and timestamps. The submission form asks only for an optional caption and optional artist first name (with a clear note about parent permission for minors).
2. **Neighborhood Map View** — An interactive map shows chalk art pins clustered by block. Pins fade from bright to muted over 7 days, then archive (still viewable, but visually "weathered" to reflect impermanence).
3. **Rolling Gallery Feed** — A chronological, Instagram-style feed of recent submissions shows thumbnails with captions. Users can heart submissions (no accounts required—just a simple localStorage like count to prevent spam).
4. **"Chalk Walk" Discovery Routes** — Automatically generates suggested walking routes connecting 3-5 recent pieces within a quarter-mile, encouraging neighbors to go appreciate art before it rains.
5. **Pattern Tagging** — Submitters can tag art with simple categories: hopscotch, rainbow, animal, message/quote, abstract, portrait, other. The app surfaces fun stats like "Most hopscotch grids: Maple Street" or "Rainbow dragon sightings this week: 4."
6. **Weather Countdown** — Integrates with a free weather API to show "Hours until next rain" on each pin, creating gentle urgency to go see the art. After rain, pins get a "Washed Away 🌧️" badge and move to the archive.
7. **Community Highlights Board** — A curated weekly digest (auto-generated) showing: most-loved piece, most prolific block, newest young artist, and a random "throwback" from the archive.
## WellSpr.ing Integration Points
### MCP Tools (via POST https://wellspr.ing/mcp, JSON-RPC 2.0)
- **`get_civic_ideas`** — Surface related community creativity initiatives; display on an "Inspired By" sidebar to connect chalk gallery visitors with other neighborhood art or beautification projects.
- **`get_local_news`** — Pull recent local news to contextualize chalk art (e.g., if a neighborhood festival happened, chalk art might spike—show the connection).
- **`ask_ody`** — Power a "What should I draw?" feature where aspiring chalk artists can ask Ody for creative prompts based on their neighborhood, season, or current events. Example: "What's a fun chalk drawing idea for a 7-year-old in spring?"
- **`get_adjacent_nodes`** — If a user is near the edge of their neighborhood, show chalk art from adjacent areas to encourage cross-neighborhood appreciation.
- **`submit_business`** — **Roadmap: not yet live for this use case.** Future possibility: local art supply stores could register to appear as "Chalk Supply Sponsors" on the map. For now, do not implement.
### REST Endpoints
- **`GET https://wellspr.ing/api/geo/portals?area_code=NNN`** — Fetch neighborhood boundary data to properly cluster pins by recognized neighborhood areas and enable "Chalk Walk" route generation within community zones.
### External APIs (Non-WellSpr.ing)
- **Weather**: Open-Meteo (free, no key required) for rain forecasts.
- **Maps**: Leaflet.js with OpenStreetMap tiles (free, open source).
- **Image Storage**: Cloudinary free tier or local Replit storage for MVP.
### Future Capabilities (Not Yet Live)
- **Covenant Commerce**: Eventually, local art supply shops could offer chalk discounts to active gallery contributors. Label as "future: covenant commerce" in UI mockups.
- **Verified Young Artist Profiles**: Future WellSpr.ing identity layer could enable parent-verified child artist portfolios. Not available today.
## Data Model
### `chalk_art`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| image_url | string | Cloudinary URL or local path |
| latitude | float | Auto-captured from photo EXIF or manual pin |
| longitude | float | |
| caption | string (280 char) | Optional |
| artist_name | string (50 char) | Optional, first name only |
| tags | array | e.g., ["rainbow", "hopscotch"] |
| hearts | integer | Simple counter |
| created_at | timestamp | |
| washed_away_at | timestamp | Null until rain detected |
| area_code | string | From geo/portals lookup |
### `hearts_log`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | |
| chalk_art_id | uuid | Foreign key |
| device_hash | string | SHA256 of localStorage token (spam prevention) |
| created_at | timestamp | |
### `weekly_digest`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | |
| week_start | date | |
| most_loved_id | uuid | FK to chalk_art |
| top_block | string | Computed |
| total_submissions | integer | |
| generated_at | timestamp | |
### `ody_prompts_cache`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | |
| prompt_text | string | "What should a 7yo draw in spring?" |
| response_text | string | Ody's suggestion |
| created_at | timestamp | Cache for 24h |
## Vibe Coding Prompt to Get Started
Paste this into Claude or Replit Agent:
---
**Build a "Sidewalk Chalk Gallery" web app with these specs:**
**Tech Stack:** React + Vite frontend, Express.js backend, SQLite database (Replit-friendly), Leaflet.js for maps.
**First Milestone (2-3 hours):** Get the core submission and map display working.
1. Create a React app with two routes: `/` (map view) and `/submit` (upload form).
2. The submit page should:
- Accept an image upload (use a simple file input)
- Attempt to extract GPS coordinates from EXIF data (use exif-js library)
- Fall back
◎
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