moooon
Motir
Vibe the project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.
- Vibe Project
- Open Source
- AI Agent
- AI Loop
- 6
- requests
- 4
- upvotes
- 517
- planned
- 4,915
- shipped
- Polish catalogue, part 1 — messages/pl.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the Polish glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Dutch catalogue, part 1 — messages/nl.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the Dutch glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Italian catalogue, part 1 — messages/it.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the Italian glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Spanish catalogue, part 1 — messages/es.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the Spanish glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- French catalogue, part 1 — messages/fr.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the French glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- German catalogue, part 1 — messages/de.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the German glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Korean catalogue, part 1 — messages/ko.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the Korean glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Japanese catalogue, part 1 — messages/ja.json created and filled for the namespaces from acceptance to aiUsage, reviewed against the Japanese glossaryMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Save the language on the account: a choice in Settings writes it, sign-in brings the browser's choice in line with it, and both sign-up paths seed it from the request's resolved language without ever overwriting an existing accountMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- A catalogue translation script that fills a locale's missing keys from en.json under that language's glossary, records the English source each translation was made from and flags (and re-fills) keys whose English source has since changed, plus a gate that every translated message keeps its ICU placeholders and tagsMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- A per-language glossary for the nine new languages, recorded in the repository (the term for "work item", untranslated product names, Latin "Sprint")Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Store a language on the account and resolve every request's language in order: saved account language, NEXT_LOCALE choice, best Accept-Language match, EnglishMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Translate the "Fonts by language" axis strings (heading, Automatic label, couldn't-sync line, single-member note) from messages/en.json into the ten other app.motir.co catalogues (motir-core)Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- E2E with acceptance video (motir-core): the eight-step Verification — a ja pick applies with no reload, a second browser paints it first, ko independent, Editorial keeps Latin faces, Automatic clears, font requests limited to the picked faces, the export lists the pick, signed-out unchangedMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Story integration gate (motir-core): ≥90% coverage over the changed surface, the PATCH → row → getApplied → <html> attribute seam against real Postgres, cross-locale refusal, stale-member fallback, export and deletionMotir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Build the "Fonts by language" axis in AppearanceCard — eleven languages in their own scripts, Automatic first, each member previewed in its own face (its face loaded only in the pane), plain text for a single-member set, picks through setFontPick (motir-core)Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- List the per-language font picks in the personal data export's user_appearance_preference section (lib/export/personalDataSections.ts) and prove account deletion removes them (motir-core)Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Add setFontPick(locale, member | null) to useTheme() in lib/contexts/theme-context.tsx — optimistic apply to <html> only when the locale is the page's, debounced seq-guarded PATCH, the couldn't-sync state on failure (motir-core)Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Apply the stored pick on the first byte: the service resolves each locale's pick to data-font-set-<role> attributes, app/layout.tsx stamps the page locale's on <html>, app/global-error.tsx re-applies them from this device's cache, and a stale member falls back to the set default (motir-core)Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation
- Store a font-set member pick per locale on UserAppearancePreference — migration, repository, mapper, DTO, service validation against that locale's set (InvalidAppearanceValueError on a foreign or unknown id, Latin accepts only absence), PATCH /api/appearance-preference, readable by user id (motir-core)Motir in eleven languages — app.motir.co and motir.co in en·zh·ja·ko·de·fr·es·it·nl·pl·pt, per-language font sets, and work content in an org content language with per-user translation