Cboard is an augmentative and alternative communication (AAC) web application, allowing users with speech and language impairments (autism, cerebral palsy) to communicate by symbols and text-to-speech.
The app uses the browser's Speech Synthesis API to generate speech when a symbol is clicked, there are 3400 symbols to choose from when creating a board. Cboard is available in 33 languages (support varies by platform - Android, iOS, Windows).
We're using Discord to collaborate, join us at: https://discord.gg/TEH8uxh
This video from Real Look Autism will help you understand how communication boards are being used.
Disclaimer: the app in the video is not Cboard.
The app supports 33 languages. Languages were machine translated and require proofreading, if you want to help proofread click here: https://cboard-org.github.io/cboard-translate/ - you do not need to be a programmer!
In order to pull the latest translations from CrowdIn into the codebase, you can run yarn translations:pull
. This will update all language files such as en.json
as well as the central cboard.json
file. Please note that this requires the CrowdIn API key to be available in the .private
config file. Refer to Secrets Management. After the script completes, changes to the translation files will need to be committed to the repo by the usual process.
Runs the app in development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will see the build errors and lint warnings in the console.
Runs the test watcher in an interactive mode.
By default, runs tests related to files changed since the last commit.
Builds the app for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
By default, it also includes a service worker so that Cboard loads from local cache on future visits.
Cboard is ready to be deployed.
Creates a Docker image with cboard built for production. The image is tagged as cboard:latest.
Runs the cboard:latest Docker image on port 5000.
Some external services have APIs we want to access, and these require API keys. To prevent open disclosure of these keys in the public repository, while still tracking them with the code, we encrypt some secrets into a GPG file. These files are env/local-private.gpg
and env/prod-private.gpg
.
In order to access the secrets, you must request the ENCRYPTION_KEY
from @shaycojo and then run the decrypt script: ENCRYPTION_KEY={key-goes-here} yarn decrypt:local
(or prod
), which will create the file .private/local.js
with the secrets in plain text where the scripts can access them. The files in .private
should never be committed to the repository.
If you need to add or change a secret, make the change to the .private/local.js
file, and then run the encryption script: ENCRYPTION_KEY={key-goes-here} yarn encrypt:local
(or prod
).
Note: These keys/secrets are not required to run or develop Cboard. They are used with scripts by some team members.
Mulberry Symbols - for providing the symbols.
Crowdin - for providing the localization management platform.
Browserstack - for providing the automation infrastructure for testing.
CSS Tricks - for providing feedback and support from the early stage.
This project exists thanks to all the people who contribute. [Contribute].
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]