SPEAK AAC
Project log · Started Feb 26, 2026 · Last updated Apr 21, 2026
Lines of Code
19,147
across 30 source files
Est. Hours Worked
~80
across ~40 sessions
Total Spent
~$103
Claude Pro + Netlify + Domain + LLC
Days Active
54
Feb 26 → Apr 21, 2026
Progress by Day
First Spark
~30 min
- Conceived the AAC app idea — nonverbal children, safety channel concept
- First conversation: "AAC App Business Idea"
Early Research
~30 min
- Website creation inquiry — exploring what building this would take
- Market research on existing AAC tools, gap analysis
Business Planning + Decision to Build
~2 hrs
- Full market analysis — confirmed no AAC app has a private safety channel
- Defined brand: Speak, with Speak Guides / Shield / Friends ecosystem
- Identified NIDILRR grant track ($100k–$500k)
- Decided to build an MVP immediately, not just plan
Core App Build — Session 1 & 2
~6 hrs total
- Password gate (access code: speak2026)
- 10-step onboarding wizard with 17 diagnosis profiles (autism, Down syndrome, CP, apraxia, etc.)
- Profile config engine — auto-configures interface based on diagnosis, age, motor ability, sensory profile
- Symbol grid with Mulberry Symbols pictograms (CC BY-SA 4.0 — real AAC symbols)
- 93 pre-generated audio files (gTTS)
- Category tabs (Needs, Feelings, Food, Actions, People, Places, More)
Safety Channel + Provider Features
~5 hrs
- Private safety channel — hidden symbol sequence + Help button → silent EmailJS alert to trusted contact (tested + working)
- Crisis resources embedded (911, Childhelp 1-800-422-4453, Crisis Text Line, 988)
- Provider dashboard — communication log, event history
- Kiosk mode — fullscreen lock, exit requires PIN
- AI sentence builder — Claude API, button, turns symbol taps into full sentences
- Privacy/Security FAQ modal (10-question accordion)
Landing Page + Netlify Deploy + Domain
~4 hrs
- Landing page (index.html) — hero, features, pricing, FAQ, About
- Deployed to Netlify → speakaac.org live
- PWA manifest + service worker (installable on iPad/Android)
- Welcome screen with feature cards, stronger headline
- "← Home" navigation links throughout
- Scholarship essays written and organized (all 5 scholarships)
Session Lock + Institution Tier + Supabase + Logo
~5 hrs
- Session lock screen — PIN pad, auto-locks after 10 min, re-locks on tab hide
- Institution pricing tier — $49/mo, up to 10 profiles, teacher accounts, admin dashboard
- Auth-before-onboarding — new users sign in/create account before setup
- Supabase backend — live project, auth (sign up/in/out), profile sync, event logging
- Logo designed (Ideogram AI) — speech bubble icon, PNG converted and deployed
- Logo live on all tabs, nav, footer, session lock, PWA install icon
- Social media color variants generated (Instagram, TikTok, email accounts)
- @speakaac accounts created on Instagram and TikTok
Teacher Dashboard + Outreach + Social
~4 hrs
- Teacher dashboard (teacher.html) — separate Supabase login, read-only communication log per child, safety alert badges, event timeline
- logEvent() defined — event logging now actually working (symbols, sentences, AI, safety alerts)
- Teacher email field added to Provider Settings
- KU email sent — Dr. Nancy Brady, nbrady@ku.edu, research collaboration proposal
- Research concept document saved (~/aac-app/research_concept.md)
- Netlify upgraded to Personal ($9/mo) — site back online after credit limit
- Profile pics uploaded to @speakaac Instagram and TikTok
- Pony Express scholarship hand-delivered to Lyle Ladner in Frankfort, KS (Mar 17)
- 4 awareness video scripts written with full production direction
Messaging Overhaul + Stripe Live + New Pages + Security
~4 hrs
- Messaging corrected everywhere — removed "free app" language from landing page, GoFundMe, social bios, and all 4 video scripts
- Stripe account live — 3 payment links generated (Family $9.99/mo, Clinic $29.99/mo, Institution $49.99/mo), wired into all pricing buttons; account under review 2–3 days
- onboarding_demo.html — full interactive 10-step setup demo, no login required
- install_guide.html — iPad + desktop PWA install guide with screenshots
- privacy.html — COPPA-compliant privacy policy
- _headers — Netlify CSP + security headers (X-Frame-Options, X-Content-Type, CSP)
- Teacher dashboard demo (teacher_demo.html) — mock data version, no login required
- Mission page (mission.html) — story, equity angle, school access program
- GoFundMe live: gofundme.com/f/giving-nonverbal-children-a-voice-and-a-way-to-stay-safe
- Supabase RLS confirmed ON for both tables (events + profiles)
- Project log (this file) created
Core Vocab Bar + Teacher Rebuild + Custom Symbols + Offline
~4 hrs
- Core vocabulary bar — always-visible strip of 14 high-frequency words above grid; clinical AAC standard
- Category color coding — clinical-standard color accents per category
- Quick Phrases category () — 18 full phrases added as a grid category
- Session history drawer — Log button slides up timestamped log of everything communicated
- Teacher dashboard complete rebuild — summary stats, per-child charts, CSV export
- Custom symbol upload ("Mine" category ) — parent uploads photo, becomes tappable symbol; localStorage; deletable
- Offline indicator badge — pulsing badge appears/disappears on network change
- Service worker bumped to v2; styles.css +367 lines; app.js +314 lines
Full Deployment Sprint — App Goes Live End-to-End
~6 hrs
- Supabase ai_usage table created — tracks AI sentence usage per user per day; RLS on; ai_usage_summary view for cost monitoring
- Secure AI proxy deployed — netlify/functions/ai-sentence.js: Anthropic API key never in browser; free tier 5/day server-enforced; paid tiers unlimited; anon 3 lifetime
- Netlify env vars set — ANTHROPIC_API_KEY, SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY live
- speakaac.org confirmed as custom domain — green dot in Netlify; all code references updated from boisterous-eclair subdomain
- Global email fix — all support@speakaac.app references replaced with support@speakaac.org; Zoho Mail confirmed working
- speak-store deployed — ~/speak-store/ live as a separate Netlify site (coming-soon merch/cause page)
- Stripe redirect URLs set — all 3 payment links now redirect to payment-success.html?tier= after purchase
- Supabase redirect URLs configured — speakaac.org added to allowed redirect list
- Forgot password feature built — reset-password.html, "Forgot password?" link in auth modal, Sync.resetPassword() in sync.js
- Service worker bumped to v5 — forces full cache refresh; Typekit + Google Fonts added to NETWORK_ONLY bypass list
- CSP updated — Google Analytics, Typekit, Google Fonts all allowed in headers
- Console errors fixed — null addEventListener guard on index.html; stale SW cache resolved
- milestones.html created — public build log showing journey from idea to launch with pending milestone slots
- Cookie consent bar — on all 5 marketing pages; localStorage-based; shows once per browser
- Google Analytics snippet — added to all marketing pages with G-SMWRXK6MXT placeholder; consent-gated; CSP updated
- AI sentence builder CONFIRMED WORKING ✓ live — tapped NO + EAT → Claude returned "I don't want to eat." — end-to-end verified
Major Polish Sprint — 10+ Features Shipped
~3 hrs
- Mobile hamburger nav on all pages — responsive menu for phones
- Loading screen with progress bar on app launch
- Toast notifications — non-blocking feedback for all user actions
- Modal entrance animations — smooth open/close transitions
- Scroll-triggered fade-in animations on index.html sections
- 404 page (404.html) + netlify.toml redirect rule
- Social footer links — Instagram + TikTok @speakaac on all pages
- "A message from the creator" section on mission.html
- User review prompt — fires on 5th session via EmailJS (EmailJS service: service_v5znqrd)
- clinic_guide.html — full clinical guide for SLPs; guide.html — user guide for families
- Mobile responsive layout — sidebar, topbar, corebar scale down at ≤480px breakpoint
- iOS long-press fix — -webkit-touch-callout, -webkit-user-select on all buttons
- color-scheme: light dark declared — prevents browser Smart Invert forcing black/white
- Session lock greeting fixed — shows "Welcome back, [name]" or "Welcome back to Speak"
- Supabase ai_usage table SQL applied; ai_usage row logging confirmed working end-to-end
First Real-World Clinical Demo
~1 hr
- Hospital social worker demo — showed speakaac.org on phone; she liked it
- Walked away with: local school contact number + care home contact number
- Issues noted for follow-up: grey globe favicon on hospital computer, browser "risky site" warning on new domain
- research_concept.md drafted — NIDILRR Field-Initiated Projects one-pager
- Dr. Brady email (hello@speakaac.org → nbrady@ku.edu) finalized for morning send
GitHub Launch · Pricing Locked · Research Page · Dr. Brady
~3 hrs
- GitHub repo live ✓ — full history pushed to github.com/logansnell-a11y/speakaac; auto-deploy to Netlify connected
- Pricing finalized — Institution corrected to $49.99/mo; Lifetime plan added at $79.99 (buy.stripe.com/dRm4gscXy5Ec5yZ0qidwc04); all Stripe links confirmed live
- research.html built — speakaac.org/research.html: full public research concept page with citations, live app links, CTA for university partners
- Citations added: Sullivan & Knutson (2000), Beukelman & Light (2020), Light & McNaughton (2014)
- Dr. Brady email sent ✓ sent — hello@speakaac.org → nbrady@ku.edu @ 10:00 AM; research collaboration introduction; access code line removed
- ARASAAC email sent — support@speakaac.org → arasaac@aragon.es; formal commercial use permission request
- milestones.html updated — Mar 20 entries added: GitHub, pricing, research page, Dr. Brady, ARASAAC
- Old exposed Anthropic API key deleted at console.anthropic.com
- Research link added to nav on press.html, milestones.html
Security Sweep + Google Presence + LLC Filed
~5 hrs
- 2FA enabled on all accounts — Zoho, Supabase, GitHub, Netlify, Stripe
- Stripe Radar rules — 5/6 fraud rules enabled; fraud notifications on
- CORS restriction on Netlify AI function — requests locked to speakaac.org only
- Tier self-upgrade bypass patched — plan enforcement moved server-side
- Supabase RLS audit — profiles + events tables both confirmed locked down
- Google Search Console verified + sitemap.xml submitted
- API key audit — clean history; old exposed key deleted, new key rotated
- LLC filed — Speak AAC LLC registered; Chase business account application submitted (7–14 day processing)
- press.html — media kit page with mission stats, founder story, contact info
ARASAAC → Mulberry Symbol Migration
~3 hrs
- Symbol library replaced — arasaac.js deleted; mulberry.js added (Mulberry Symbols, CC BY-SA 4.0, Garry Pye)
- Symbols served via jsDelivr CDN — no hosting cost, cacheable for offline use
- All 9 HTML files updated — CSP headers updated to allow jsdelivr.net
- ARASAAC formally notified of migration — support@speakaac.org
- Service worker bumped to v7 — forces full symbol cache refresh
- pitch.html added — investor/grant pitch deck page
Stripe Webhook + KansasVoices Concept + Clinic Research
~4 hrs
- stripe-webhook.js built — Netlify function handles checkout.session.completed; writes tier to Supabase profiles on payment (env vars + Stripe registration still pending)
- KansasVoices.org concept — statewide AAC advocacy site mapped out; 66k+ Kansas IDEA students identified as target audience
- Clinic outreach strategy — SLP procurement timeline (April/May budget cycle), HCPCS E2510 code identified, Proloquo2Go gap analysis complete
- HIPAA BAA template (baa_template.md) — ready to fill in and PDF for clinic deals
- NIDILRR grant research — Phase I SBIR application path mapped; $300k–$750k potential
- All scholarships submitted ✓ — First Heritage Bank, Pro-Life, United Bank & Trust
Spanish Localization + Agent Auth Fix + Offline Planning
~5 hrs
- Full Spanish translation system — EN/ES pill on landing page translates all content live; page-lang.js shared module handles nav/footer/cookie bar on every sub-page
- mission.html, guide.html, clinic_guide.html, install_guide.html — all fully translated to Spanish via inline SPEAK_ES_PAGE objects
- FOUC fix — DOMContentLoaded timing bug fixed; returning from sub-page to index now correctly preserves ES preference without flash of English
- Core vocab bar overlap fixed — search bar + core bar no longer collide at top of app
- Agent system re-authenticated — Claude Code Pro login restored; 3 pending overnight research tasks unblocked
- Market gap research queued — 10-niche analysis task in inbox.md; fires tonight at 10 PM
- computer_use.py built — autonomous task agent with human-in-the-loop checkpoints; screenshot → Claude plans → user approves each step → executes
- Service worker bumped to v29
Codebase Breakdown
Money Spent
| Service | What For | Cost | Recurring |
| Claude Pro |
All development sessions (Claude Code) |
$20.00 |
Monthly |
| Netlify Personal |
Hosting speakaac.org (upgraded Mar 16) |
$9.00 |
Monthly |
| speakaac.org domain |
Custom domain for the app |
~$12.00 |
Yearly |
| Anthropic API |
Claude Haiku — AI sentence builder (pay-as-you-go, ~$0.00025/call) |
~$0.00 |
Usage-based |
| Stripe |
Payment processing — Family, Clinic, Institution plans |
Free |
2.9% + 30¢ per transaction |
| Supabase |
Auth + database backend + ai_usage logging |
Free |
Free tier |
| Zoho Mail |
support@speakaac.org business email |
Free |
Free tier |
| EmailJS |
Silent safety channel alerts |
Free |
Free tier |
| Mulberry Symbols |
AAC symbol pictograms |
Free |
CC BY-SA 4.0 (commercial OK) |
| Ideogram |
Logo generation |
Free |
— |
| GoFundMe |
Fundraising page |
Free |
% of donations |
| LLC Filing |
Speak AAC LLC — Kansas SOS |
~$160.00 |
~$50/yr renewal |
| Claude Pro (×2 mo) |
All development sessions (Claude Code) |
$40.00 |
$20/mo |
| TOTAL |
|
~$233.00 |
~$29/mo ongoing |
Last updated April 21, 2026 · speakaac.org · github.com/logansnell-a11y/speakaac · AI sentence builder confirmed working ✓ · EN/ES bilingual ✓ · LLC filed ✓