Dysmaths screenshot:
Dysmaths is a web app for writing and organizing math and geometry work in a simpler, more visual way, to be used in school or for homework.
It is designed for children who need extra support with writing, especially children with specific learning differences such as:
- dyspraxia
- dysgraphia
- and other needs that make handwriting or structured notation harder
Dysmaths helps users:
- write math directly in the browser
- work with geometry as well as algebra and other math content
- work with a cleaner, more guided layout
- use a school-style long division tool
- edit math blocks without relying on handwriting
- optionally use a dyslexia-friendly font
- import an image or a PDF page as the sheet background
- create multi-page documents
- import and export documents as
.dysmathsfiles - preview math clearly before exporting or printing
- use the app like a lightweight installable web app
The goal is to make math work less frustrating and more accessible, while keeping it close to the way mathematics is written on paper.
Official website: Official website · Created by Guillaume Champeau
The repository currently includes documentation for the long-division block in docs/division-written.md.
- browser-based math workspace
- structured visual math editor
- long division support
- multilingual interface
- export-friendly document generation
- PWA support
- Next.js 15
- React 19
- TypeScript
- next-intl
- Lexical
- MathLive
- KaTeX
- Node.js 20 or newer
- npm
npm installnpm run devnpm run buildnpm run startUmami analytics is optional and only loads in production when both public environment variables are set.
Copy .env.example to .env.local and configure:
NEXT_PUBLIC_UMAMI_SRC=https://umami.your-website.com/script.js
NEXT_PUBLIC_UMAMI_WEBSITE_ID=your-website-idIf these variables are missing, the Umami script is not injected.
npm run lintapp/- Next.js app routes, layouts, manifest, and service worker endpointcomponents/- reusable UI and math editing componentsdocs/- feature documentationi18n/- locale routing and request configurationmessages/- translation contentpublic/- static assets, including MathLive fontsscripts/- project-specific runtime helperstypes/- custom TypeScript declarations
Contributions are welcome. Please read CONTRIBS.md before opening a pull request.
This project is licensed under the GNU Affero General Public License v3.0. See LICENSE for the full text.
