Skip to content

Squidly1408/AltComms

Repository files navigation

AltComms

AltComms Logo

Flutter Dart License Platforms Version

Free, open-source, offline-first AAC communication for everyone.


About

Augmentative and Alternative Communication (AAC) refers to methods, tools, and strategies used to supplement or replace spoken or written communication for people who have difficulty with those skills. AAC users include individuals with autism spectrum disorder, cerebral palsy, ALS, aphasia, Angelman syndrome, Down syndrome, and many other conditions.

AltComms is a full-featured AAC application built to be a genuine free alternative to commercial tools like Proloquo2Go, TD Snap, TouchChat, Grid 3, and Avaz — which often cost hundreds of dollars per year. AltComms stores all data locally on the device with no account, no subscription, and no internet connection required.

Who is AltComms for?

  • AAC users who need a reliable, always-available communication tool
  • Families and caregivers seeking an accessible, no-cost solution
  • Speech-Language Pathologists (SLPs) looking for a customisable platform for clients
  • Schools and clinics with limited budgets
  • Developers and researchers who want an open, extensible AAC foundation

Features

Core Communication

  • Symbol board — grid-based AAC boards with ARASAAC symbol library integration, board navigation, and custom board creation
  • Keyboard mode — type-to-speak with a full keyboard, accessible inline via the bottom navigation bar
  • Word prediction — offline bigram engine that learns from usage patterns without sending data anywhere
  • Message bar — build sentences symbol-by-symbol before speaking
  • Board editor — create, rearrange, and customise boards and symbols

Profiles

  • Multiple profiles per device — each user gets their own communication setup
  • Custom avatars for easy profile identification
  • Per-profile settings: button shape, label position, TTS voice, and accent colour

Quick Communication

  • Quick phrases — save frequently used phrases for one-tap access
  • Emergency flag — mark critical phrases for prominent display
  • Emergency page — full-screen, high-contrast, one-tap emergency communication with direct tel: dialling

Emotional & Sensory Communication

  • Feelings / Emotions — 16-emotion grid for expressing how you feel
  • Pain scale — visual pain rating tool
  • Sensory meter — communicate sensory overload levels

Neurodiversity Support (My State)

  • Energy tracker — show current energy levels
  • Social battery — indicate how much social interaction you can handle
  • Crisis mode — simplified interface for high-stress moments

Healthcare

  • Dedicated boards for symptoms, doctor visits, hospital stays, and emergencies
  • Structured vocabulary for medical appointments

Planning & Learning

  • Visual schedules — daily routines with emoji support
  • Social stories — prepare for new situations with a page-by-page story viewer
  • Education — flashcard system, core word reference, and progress tracking

Analytics & Caregiver Tools

  • Usage analytics — charts of communication patterns and vocabulary use (powered by fl_chart)
  • Caregiver dashboard — goal tracking, vocabulary growth reports, and SLP guidance
  • Goal tracking — set and monitor communication goals

Accessibility & Customisation

  • 5 themes — System, Light, Dark, High Contrast, and Calm
  • Dyslexia-friendly font — OpenDyslexic support (see Configuration)
  • Switch scanning — auto-advance symbol scanning with configurable interval
  • Font scaling — independent from system font size
  • Reduce motion — disable animations for sensory sensitivity

Data & Security

  • Backup / Restore — ZIP-based export and import of all data
  • PIN lock — protect profiles with a PIN
  • Biometric unlock — fingerprint / Face ID unlock
  • Offline-first — all data lives on-device in SQLite; no cloud required

Screenshots

Screenshots will be added here once the UI stabilises. To contribute screenshots, see Contributing.


Getting Started

Prerequisites

Requirement Minimum version
Flutter 3.41.4
Dart 3.11.1
Android SDK API 21 (Android 5.0)
Xcode 15+ (for iOS / macOS builds)

Install Flutter by following the official Flutter installation guide.

Verify your setup:

flutter doctor

Clone the repository

git clone https://github.com/your-org/altcomms.git
cd altcomms

Install dependencies

flutter pub get

Run the app

# Run on a connected device or emulator
flutter run

# Run on a specific platform
flutter run -d chrome        # Web
flutter run -d windows       # Windows desktop
flutter run -d macos         # macOS desktop
flutter run -d linux         # Linux desktop

Architecture

AltComms uses a feature-first clean architecture with clear separation between domain logic, data access, and presentation.

lib/
├── main.dart               # Entry point
├── app.dart                # Root widget, theme, router
├── bootstrap.dart          # Async app initialisation
│
├── core/                   # App-wide infrastructure
│   ├── database/           # SQLite schema, DAOs (profiles, boards,
│   │   └── daos/           #   symbols, events, goals, quick_phrases)
│   ├── router/             # GoRouter route definitions
│   ├── theme/              # Colour tokens, text styles, spacing, themes
│   ├── constants/          # Route names, app-wide constants
│   ├── errors/             # Failure types
│   ├── storage/            # SharedPreferences wrapper
│   └── utils/              # Logger, haptics helpers
│
├── features/               # One folder per product feature
│   ├── boards/             # Symbol board, grid, board editor
│   ├── communication/      # Message bar, communication page
│   ├── profiles/           # Profile selection, editor, settings
│   ├── tts/                # Text-to-speech service & voice settings
│   ├── prediction/         # Offline bigram word prediction
│   ├── quick_phrases/      # Saved phrases with emergency flag
│   ├── emergency/          # Emergency communication page
│   ├── feelings/           # Emotions grid, pain scale, sensory meter
│   ├── neurodiversity/     # Energy / social battery / crisis mode
│   ├── healthcare/         # Medical communication boards
│   ├── keyboard_mode/      # Type-to-speak keyboard
│   ├── schedules/          # Visual daily schedules
│   ├── social_stories/     # Social story viewer
│   ├── education/          # Flashcards, core words, progress
│   ├── analytics/          # Usage charts (fl_chart)
│   ├── caregiver/          # Dashboard, goals, SLP guidance
│   ├── symbols/            # ARASAAC symbol service
│   ├── settings/           # App settings, backup/restore, security
│   └── onboarding/         # First-run onboarding flow
│
└── shared/                 # Cross-feature widgets
    └── presentation/
        └── widgets/        # LoadingIndicator, ErrorView, EmptyState

Key technology decisions

Concern Choice Reason
State management Riverpod 2.6.1 (manual, no codegen) Compile-safe providers, testable, no build_runner overhead
Navigation GoRouter 14.x Declarative deep-link-ready routing
Local storage sqflite Mature SQLite wrapper, works on all platforms except web
TTS flutter_tts Wraps native TTS on every platform
Charts fl_chart Lightweight, no network dependency
Secure storage flutter_secure_storage Keychain / Keystore backed PIN storage
Biometrics local_auth Fingerprint / Face ID via platform APIs

Platform Support

Platform Status
Android Supported
iOS Supported
Web Supported
Windows Supported
macOS Supported
Linux Supported
ChromeOS Runs as Android app

Note: switch scanning and biometric unlock depend on platform hardware availability.


Development

Run tests

flutter test

Static analysis

flutter analyze lib/

Build for release

# Android APK
flutter build apk --release

# Android App Bundle (Play Store)
flutter build appbundle --release

# iOS (requires macOS + Xcode)
flutter build ios --release

# Web
flutter build web --release

# Windows
flutter build windows --release

# macOS (requires macOS + Xcode)
flutter build macos --release

# Linux
flutter build linux --release

Project conventions

  • Feature folders follow the pattern lib/features/<name>/{data,domain,presentation}/
  • Providers live in presentation/providers/ inside their feature
  • Pages live in presentation/pages/
  • Widgets live in presentation/widgets/
  • Database access goes through DAOs in lib/core/database/daos/
  • No code generation — all Riverpod providers are written manually

Configuration

ARASAAC symbol library

ARASAAC provides a free REST API for searching and downloading pictograms. The service is used in lib/features/symbols/data/arasaac_service.dart.

The ARASAAC API does not require an API key for basic access. No configuration is needed for the default symbol search to work. If you self-host the pictogram set or integrate a private API, set your base URL in lib/core/constants/app_constants.dart.

OpenDyslexic font

AltComms supports the OpenDyslexic font for users who find it easier to read. The font is not bundled by default (licence requires redistribution care). To enable it:

  1. Download the OpenDyslexic font files from opendyslexic.org or your preferred source:

    • OpenDyslexic-Regular.otf
    • OpenDyslexic-Bold.otf
    • OpenDyslexic-Italic.otf
  2. Place the files in assets/fonts/.

  3. Open pubspec.yaml and uncomment the font block near the bottom:

fonts:
  - family: OpenDyslexic
    fonts:
      - asset: assets/fonts/OpenDyslexic-Regular.otf
      - asset: assets/fonts/OpenDyslexic-Bold.otf
        weight: 700
      - asset: assets/fonts/OpenDyslexic-Italic.otf
        style: italic
  1. Run flutter pub get and rebuild the app.

Users can then select "OpenDyslexic" in Settings → Accessibility → Font.


Contributing

Contributions are welcome. This project follows standard GitHub flow:

  1. Fork the repository and create a feature branch from main.
  2. Make your changes, keeping commits focused and descriptive.
  3. Run flutter analyze lib/ and flutter test — both must pass cleanly.
  4. Open a pull request describing what changed and why.

Areas where help is especially valued:

  • Additional symbol sets — integration with other free/open symbol libraries
  • Translations — the app uses flutter_localizations; adding locale files is self-contained
  • Platform testing — particularly Linux, ChromeOS, and older Android devices
  • Accessibility audits — feedback from actual AAC users and SLPs is invaluable
  • Test coverage — unit and widget tests for features that currently lack them

Please open an issue before starting large changes so the approach can be discussed first.


License

This project is licensed under the MIT License. See LICENSE for the full text.


Acknowledgements

  • ARASAAC — The Aragonese Centre for Augmentative and Alternative Communication provides the pictogram library used in this app. ARASAAC symbols are available under a Creative Commons BY-NC-SA licence. AltComms is a non-commercial open-source project.
  • Flutter — Google's open-source UI framework that makes true cross-platform development possible from a single codebase.
  • Riverpod — Remi Rousselet's state management library.
  • GoRouter — Declarative routing for Flutter.
  • OpenDyslexic — The open-source font designed to improve readability for readers with dyslexia.
  • Every AAC user, caregiver, and SLP whose feedback shapes what communication tools should actually look like.

About

Free, open-source, offline-first AAC communication app built with Flutter. Symbol boards, keyboard & switch-scanning modes, feelings/healthcare/schedules, caregiver dashboard — fully on-device, no subscription.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors