mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻譯準備中
Generate 3D-printable braille embossing cylinders. Type text, translate to braille, download STL files for your 3D printer. Companion OpenSCAD version: braille-cylinder-stl-generator-openscad
翻譯準備中
設計JavaScript · PythonGitHub @BrennenJohnston上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
正在載入完整 README。 以下為已儲存的摘錄。
A web app for generating 3D-printable braille. Type your text, pick a braille translation table, and download an STL file you can send straight to your 3D printer.
The goal is to make embossed braille business cards accessible to anyone with a 3D printer, without needing to know braille yourself. The app handles translation (via liblouis) and turns it into a ready-to-print 3D model.檢視完整 README ↗A web app for generating 3D-printable braille. Type your text, pick a braille translation table, and download an STL file you can send straight to your 3D printer.
The goal is to make embossed braille business cards accessible to anyone with a 3D printer, without needing to know braille yourself. The app handles translation (via liblouis) and turns it into a ready-to-print 3D model.
Flat business card plates are parked, not in development here — the code is still in the repo but disabled in the UI. See KNOWN_ISSUES.md for why. Directly readable braille cards already ship as their own tool: braille-wedge-card-openscad.
Every cylinder carries a shallow groove (1 mm wide, 0.5 mm deep) the full height of its outside: beside the row markers in Visual mode, down the alignment-arrow column in Tactile mode, where it steps around the raised arrows so they stay whole. A slicer's default "Aligned" seam mode hides each layer's seam in that groove instead of in a braille dot, so no seam painting is needed; leave the seam mode on Aligned. It can be turned off under Expert Mode → Surface Dimensions. Details in SURFACE_DIMENSIONS_SPECIFICATIONS.md.
The first item on the page, Embosser setup, holds three either/or choices that pick which of the four released embosser projects your cylinders are made for: the embosser version (Version 1 prints the most accurate dots; Version 2 adds tactile row markers and a simpler assembly for blind users), the gears (Standard: printed separately, or Simplified: fixed to the cylinders, which saves parts but prints longer and fails dots more often), and the card sides. A "Which setup should I choose?" link opens the help guide.
Choosing Double-sided under Embosser setup makes both cylinders emboss: each carries the raised dots for one face and the recesses for the other. Run a card between them and it comes out with braille on both faces in a single pass.
Choosing it enables the Back of Card section for the back text, and locks the Row Indicator Style to the tactile seam arrow, which both cylinders of a pair need. The back text wraps across the rows for you, the braille preview then shows both sides, and the two sides sit on grids offset diagonally by 1.25 mm so a dot on one face never lands where a dot on the other face already is.
It has been printed and used: in August 2026 two rounds of pairs were printed on a Bambu Lab X1C with a 0.4 mm nozzle and embossed real card stock, legible on both faces.
Step-by-step instructions are in Double-Sided Cards.
The cylinders this app generates are the interchangeable plates for the Custom Braille Embosser — a hand-operated braille embosser built from ten snap-fit 3D-printed parts, with no fasteners, springs, glue, or electronics, for about $3–6 of filament. Generate an embossing plate and its matching counter plate at the same card-stock thickness, print both, and snap them into the holders.
Build files, print profiles, and documentation for the device are on Printables, MakerWorld, and Thingiverse.
Embosser Version 2. The version choice under Embosser setup switches the generator to Version 2, whose cylinders are keyed at both ends so a drive gear cannot be seated in the wrong place, and which carries tactile row markers a blind user can feel. Its gears must be cut to the R14 peg spec — earlier pegs do not fit. Version 1 stays the default and is fully supported; see KNOWN_ISSUES.md.
Open https://braille-cylinder-stl-generator.vercel.app — nothing to install.
pip install -r requirements.txt
python backend.py
Open http://localhost:5001 in your browser.
That's it. No Redis, no blob storage, no API keys to manage. The server just serves static files and a lightweight JSON endpoint — all the heavy geometry work happens in your browser.
You can optionally set PRODUCTION_DOMAIN as an environment variable, but it's not required. See Environment Variables if you're curious.
Want just one cylinder? Open Expert Mode and choose it under Cylinders to Generate, the first submenu; Download STL then saves that cylinder on its own. For a double-sided card, choose Double-sided under Embosser setup in step 1 and type the back text into the Back of Card box — the back has its own Auto / Manual placement and per-line translation choices, exactly like the front. Nothing ever downloads on its own — one press of Download STL saves one file.
There's a Help button inside the app that walks you through choosing what to include, formatting your text, and choosing your embosser setup. For more depth, check the guides below.
Prefer working offline or want full parametric control? The OpenSCAD version is
maintained in its own repository —
braille-cylinder-stl-generator-openscad
— and a copy of its latest release is vendored into OpenSCAD/
here so you can download it without leaving the site.
OpenSCAD/Braille_Cylinder_STL_Generator.scad — one self-contained script (open in OpenSCAD and use the Customizer panel; it also uploads straight to MakerWorld's Parametric Model Maker)OpenSCAD/README.md — quick start, parameters, troubleshootingOpenSCAD/VENDORED.json — which upstream tag this copy came fromOpenSCAD/PARAMETER_MAPPING.md — how OpenSCAD parameters correspond to the web UI controlsOpenSCAD/docs/ — MakerWorld quick start, coordinate system reference, porting guide, testing notesIssues and pull requests for the OpenSCAD program belong upstream. Nothing in
OpenSCAD/ should be edited here — tests/test_vendored_openscad.py fails if it is.
The web app translates automatically; the OpenSCAD version needs you to translate manually (using Branah.com), but it works without an internet connection and integrates with existing CAD workflows.
As of v2.6.0 the OpenSCAD companion includes double-sided (interpoint) cards as well, with the same paired Cylinder A / Cylinder B workflow. Back-of-card text there is pre-translated braille only, like the front — automatic translation stays a web-app feature.
app/ Flask backend, geometry specs, validation
public/ Production HTML (served on Vercel)
static/ Frontend JS, CSS, Web Workers, liblouis tables
tests/ Smoke tests and golden file regression tests
docs/ Guides, technical specs, deployment notes
See PROJECT_STRUCTURE.md for the full breakdown.
Requires Python 3.12+.
pip install -r requirements-dev.txt
# Run tests
pytest
# Lint and format
ruff check .
ruff format .
Pre-commit hooks are included — run pre-commit install to set them up.
Using the app:
Working on the code:
Contributions are welcome. See CONTRIBUTING.md for setup instructions and guidelines.
This project started from tobiwg/braile-card-generator by Tobi Weinberg. Thanks to Tobi for getting it off the ground.
See CHANGELOG.md for release history.
PolyForm Noncommercial License 1.0.0
Free for personal, educational, and non-commercial use. Modification and remixing allowed. No commercial use.