Skip to content

Repository files navigation

ARCWorks Simple Dictionary

A clean, offline word-lookup dictionary desktop app, styled like a leather-and-gold storybook (matches the wireframe: word box, refresh/clear button, meaning box, sample sentence box). Built with Electron so it's just HTML/CSS/JS under the hood — nothing exotic to maintain.

  • 111,569 words, fully offline, no internet required to look words up
  • Instant search + autocomplete as you type
  • "Random word" button for quick discovery
  • Sample sentence for every word (see note below on how these are generated)

Where the data came from

data/OPTED-Dictionary.csv is the OPTED dictionary (a public-domain export based on the 1913 Webster's dictionary). It's word/definition data only — it does not include example sentences for most words. So the app:

  1. Uses a real usage phrase from the dictionary when one genuinely exists in the definition text (a small number of entries have this).
  2. Otherwise, generates a simple example sentence from the word's part of speech (noun/verb/adjective/adverb), clearly just to demonstrate usage.

If you'd rather plug in a dataset that already has real example sentences, drop a new CSV with the same Word,Count,POS,Definition columns into data/OPTED-Dictionary.csv and run npm run rebuild-data.

Project structure

ARCWorks Simple Dictionary/
├── main.js              Electron main process (creates the window)
├── preload.js            Safe bridge that lets the UI read the dictionary file
├── package.json
├── data/
│   ├── OPTED-Dictionary.csv   raw source data
│   └── dictionary.json        pre-built, app-ready lookup file (already built for you)
├── scripts/
│   └── build-dictionary.js    regenerates dictionary.json from the CSV
├── renderer/
│   ├── index.html
│   ├── style.css
│   └── app.js             all the search / UI logic
├── assets/
│   ├── icon.ico            app + installer icon (placeholder — swap with your own)
│   ├── icon.png
│   └── installer_wizard.bmp / installer_small.bmp   Inno Setup wizard art
└── installer/
    └── setup.iss           Inno Setup script

1. Run it while you're developing

You'll need Node.js (LTS) installed. Then, in the project folder:

npm install
npm start

That opens the app in a normal window, same as it'll look when installed.

If you ever edit data/OPTED-Dictionary.csv (or swap it for a different word list), rebuild the lookup file with:

npm run rebuild-data

2. Package it into a Windows app folder

npm run dist

This uses electron-builder to produce an unpacked Windows build at:

dist/win-unpacked/ARCWorks Simple Dictionary.exe

You can run that .exe directly to sanity-check the packaged build before making an installer.

3. Build the installer with Inno Setup

  1. Open installer/setup.iss in Inno Setup.
  2. Make sure step 2 above has already been run, so dist/win-unpacked exists (the script points at it directly).
  3. Build → Compile (or press F9 / Ctrl+F9).
  4. The finished installer lands in installer/Output/ARCWorks-Simple-Dictionary-Setup.exe.

The script is already set up with:

  • Program group + desktop icon option
  • Your app icon for the installer and uninstaller
  • Install path defaulting to Program Files\ARCWorks\Simple Dictionary

Using your own icon/artwork

You mentioned having your own icon and image — I generated placeholder ones (a little book-and-magnifying-glass mark) so everything works out of the box. To swap in yours:

  • Replace assets/icon.ico (multi-size .ico, used for the app + taskbar + installer)
  • Replace assets/installer_wizard.bmp (164×314) and assets/installer_small.bmp (55×58) if you want custom Inno Setup wizard banners
  • main.js and installer/setup.iss already reference these exact filenames, so as long as the new files keep the same names, nothing else needs to change

Customizing the look

Everything visual lives in renderer/style.css at the top, in the :root block — colors, radii, and shadow "depth" are all named variables (--cover, --gold, --page, etc.) so you can retheme it without hunting through the file.

Notes

  • Search is case-insensitive and instant (binary search over a sorted word list).
  • A handful of words appear twice in the source data with different capitalization (e.g. "Form"/"form"); the app merges those automatically so you only ever see one entry per word.
  • This was built and smoke-tested inside a Linux sandbox using Electron + Xvfb (no visible errors, screens verified), but final packaging/testing on your actual Windows machine is still worth doing before shipping.

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages