SayIt! is an AI-powered augmentative and alternative communication (AAC) web application that helps users express thoughts, feelings, needs, and wants more effectively.
Landing site: sayitaac.com
App: app.sayitaac.com
- Phrase boards for reusable communication
- AI-assisted text expansion and reply suggestions
- Text-to-speech with browser fallback and optional premium providers
- Caregiver and communicator workflows
- Real-time sync through Convex
- Progressive Web App support with offline text communication
- Next.js 16, React 19, and TypeScript
- Tailwind CSS and Framer Motion
- Clerk for authentication and billing
- Convex for realtime data and storage
- OpenRouter-backed AI features
- ElevenLabs, Azure, Gemini, and browser text-to-speech support
This repository is prepared for public source availability and external contributions. It is contributor-oriented rather than fully self-hosting-oriented: contributors can install dependencies, run tests, and work on focused changes, while production deployment remains maintained by Enabo Apps.
The source code is licensed under the GNU Affero General Public License v3.0 only. See LICENSE and NOTICE.
The SayIt! name, logos, icons, domain names, and other brand assets are reserved by Enabo Apps and are not licensed for reuse except with prior written permission. Forks that are publicly deployed or redistributed must rename the app and replace the SayIt! icons, logos, domain references, and other brand identifiers.
pnpm install
cp .env.example apps/web/.env.local
pnpm dev:web
pnpm dev:landingThe development server runs at http://localhost:3000.
A cloud-backed local environment requires project-specific accounts and keys for:
- Clerk for authentication
- Convex for realtime data and storage
- OpenRouter or the configured AI provider for AI-assisted features
- ElevenLabs, Azure, or Gemini when testing premium TTS providers
- Vercel only for maintainers deploying production
Many UI and unit-test changes can be developed without every provider key. Authenticated, realtime, AI, and premium TTS flows require configured services.
pnpm dev
pnpm dev:web
pnpm dev:landing
pnpm build
pnpm build:web
pnpm build:landing
pnpm start
pnpm lint
pnpm lint:web
pnpm lint:landing
pnpm test
pnpm test:watch
pnpm test:coverageBefore opening a pull request, run:
pnpm lint
pnpm test
pnpm buildDo not open public issues for exploitable security vulnerabilities. Follow SECURITY.md for private reporting guidance.
Contributions should start with a GitHub issue and use a feature branch from main. See CONTRIBUTING.md for the full workflow.