Skip to content
/ condict Public

Dictionary software for constructed languages.

License

Notifications You must be signed in to change notification settings

arimah/condict

Repository files navigation

Condict symbol and logo
dictionary application for conlangers

Condict

Condict is a work-in-progress dictionary application for constructed languages that runs on your desktop. If you've ever found yourself struggling to keep track of a dozen spreadsheets and random documents with conlang words, then Condict may be for you. Some of Condict's guiding principles:

  • Fully offline: Condict runs on your computer and saves your dictionary locally. There is no web service to connect to. Your data is yours, forever. (However, you can deploy a standalone Condict server on your own web server. More to come in the future.)
  • Free and open source: Condict costs nothing and hides nothing. All code is open source and free to use as you see fit. Modify it to your heart's content. No ads, no microtransactions, no DLC.
  • No tracking, no telemetry: Condict will never track your activities or usage. What you do with your dictionary, how often and in what way is entirely up to you.
  • Built for accessibility: Do you prefer to keep your hands on the keyboard? Do you require dark mode and muted colours? Do you use a screen reader? With customisable appearance, keyboard shortcuts and more, Condict aims to accommodate all users. You will even be able to translate the app to your own conlang. (Screen reader compatibility is currently imperfect and will be improved over time.)
  • Performant: Yes, Condict is an Electron app. With a bit of careful programming, it still feels fairly snappy even on slowish devices.

Dictionary feature summary

Here are some of the things you can (or will be able to) do with your dictionary:

  • Multiple languages with interlinking – useful for world building!
  • Inflection rules, in the form of inflection tables, which you can associate with a part of speech, and attach to any word you add to the dictionary.
    • Including the ability to add inflected words to the dictionary, so that birds can be shown as "plural of bird".
  • Word etymology, both free-form – e.g. "Misinterpretation of acorn as egg + corn" – and simple combinations of other words – "snow + man".
    • Including showing derived terms under any dictionary word. Under snow, you'd be able to find snowman.
  • Search and filtering options, naturally.
  • Sample texts, with interlinear glosses, which get automatically linked to and shown under the words used therein.
  • Tags, mainly for thematic grouping, such as food, colours, emotions.
  • And more!

Logo and name

Condict symbol, a deconstructed letter C

The Condict symbol is intended to convey the concept of construction: from many parts, a C is formed – a letter, the foundation of writing and an expression of language. Alternatively, one could conceive of it as the deconstruction of language into its constituent components. Each part of the character might also stand in for the bricks comprising the Tower of Babel, the translation of which myth is a long-standing practice among conlangers. The colour purple was chosen for its associations with creativity and magic.

The wordmark is written in the typeface Noto Sans, a project whose lofty aim is to support every writing system.

The name Condict is a portmanteau of "conlang dictionary", while conlang is itself a portmanteau of "constructed language". It's a metaportmanteau, if you will.

Development status

Development is slow. This is one of several projects I engage in outside my full-time job. As a result, I am unable to devote significant time to Condict most days. This project is also still fairly immature as far as tooling and structure are concerned, and much remains to be improved. Ideas and thoughts are welcome.

Contributing

Condict is still a little bit too early in development for feature contributions. There is no public roadmap to contribute to, and the project structure as a whole is still in a state of flux. In addition, Condict was originally written in JS, then later translated to TypeScript, and is still suffering the effects. Some of the code from the pre-TS days is downright messy, and requires severe rearchitecting.

If you'd like to keep up to date with developments, feel free to watch this repo.

That said, bug reports and bug fix PRs are welcome, even at this stage.

Developing

See instructions in DEVELOPING.md.

Code structure

The eventual goal of Condict is to be distributable as a standalone Electron app, as well as a separate server package for shared dictionary use (e.g. on your own website). Condict is made up of many packages, which are found in packages/.

  • app: The main Condict frontend (the Electron app).
  • graphql-typer: Generates TypeScript type definitions from a GraphQL schema.
  • http-server: A standalone HTTP server that exposes Condict's GraphQL schema, designed for use outside the app.
  • ipa: Utilities for searching and listing IPA characters.
  • platform: Basic platform detection, with support for overrides.
  • rich-text-editor: The rich text editor component for definition descriptions and inflection table captions.
  • server: The storage backend.
  • table-editor: UI components for editing inflection tables. Separate package because of its size and complexity.
  • ui: Mostly-general-purpose reusable UI components.
  • x-sampa: X-SAMPA-to-IPA converter.

TODO: documentation.