GermanCro is a browser-based German trainer with Croatian and English support. The learner sees two prompt languages, types the German answer, and gets live character-by-character feedback.
The vocabulary deck now uses a structured card schema:
{
"de": "das Auto",
"hr": "auto",
"en": "car",
"topic": "vehicles",
"subcategory": "Nomen",
"scope": "all"
}Field meanings:
de: German answer the learner typeshr: Croatian prompten: English support glosstopic: top-level content group used for session filteringsubcategory: grammar or content type shown on the card badgescope: card availability mode
Current built-in topics:
basicsvehiclesnaturefoodtravelworkhealthpeopleshoppingdevelopertechitnetwork
Current subcategories:
NomenVerbAdjektivAdverbPräpositionKonjunktionAusdruckSatz
Current scopes:
all: shared card for all three learning modesde: DE-mode specifichr: HR-mode specificgb: GB-mode specific
The shipped starter deck currently contains 659 cards across eleven built-in topics, mostly shared and a few DE-mode-specific.
Serve the app over HTTP from the repo root:
npx serve .Open the local URL shown by the server.
If you want direct writes from the add-card panel, run the local Node server:
npm startThat enables POST /api/cards and writes to cards.user.json.
index.html App structure and form controls
style.css Visual design and responsive layout
app.js Session flow, filters, authoring UI, and card validation
cards.json Main vocabulary dataset
cards.user.json Optional local extension dataset
locales.json UI labels for topics, subcategories, and scopes
server.js Local editable server and save API
MAINTAINING.md Maintainer workflow and change checklist
USER_GUIDE.md End-user guide for the interface
Use the Neue Karte hinzufügen panel in the app and fill in:
Topic: top-level filter group such asbasics,developertech, oritnetworkSubcategory:Nomen,Verb,Adjektiv, and so onMode:all,de,hr, orgbDeutsch: exact German answerKroatisch: Croatian promptEnglisch: English support gloss
Save modes:
npx serve .: session-only, with optionalcards.user.jsonexportnpm start: persistent save intocards.user.json
Validation rules:
- all six fields are required
- topic must be a supported topic key
- subcategory must be a supported subcategory key
- scope must be
all,de,hr, orgb - duplicates are blocked by
de + hr + topic + subcategory + scope
If you want to extend the taxonomy itself, update these files together:
app.jsAdd the new topic toTOPIC_CONFIG, or add the new subcategory toSUBCATEGORY_OPTIONS.server.jsAdd the same key toVALID_TOPICSorVALID_SUBCATEGORIES.locales.jsonAdd labels for the new topic undertopics, or for the new subcategory undercategories, inde,hr, anden.cards.jsonAdd cards that use the new keys.
If the new taxonomy value does not exist in all four places, cards using it will be rejected or shown with broken labels.
scope is future-facing metadata for language-mode-specific content.
- Use
allfor shared vocabulary. - Use
de,hr, orgbonly when a card should belong to one learning mode. - The session pool automatically includes only cards compatible with the current learning mode.
- Use MAINTAINING.md for maintainer workflow and smoke testing.
- Use USER_GUIDE.md for the clickable UI overview.
- Static hosting stays read-only.
- There is no automated test suite or CI yet.
- Keep JSON files UTF-8 encoded so German and Croatian diacritics stay intact.
