{"id":13760294,"url":"https://github.com/wooorm/dictionary","last_synced_at":"2025-04-19T11:40:15.189Z","repository":{"id":66017098,"uuid":"78787745","full_name":"wooorm/dictionary","owner":"wooorm","description":"Dictionary app that can work without JavaScript or internet","archived":false,"fork":false,"pushed_at":"2020-06-16T07:12:16.000Z","size":166,"stargazers_count":40,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T07:22:35.983Z","etag":null,"topics":["demo","example","pwa"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wooorm.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":"funding.yml","license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"wooorm"}},"created_at":"2017-01-12T21:16:58.000Z","updated_at":"2024-10-14T16:40:20.000Z","dependencies_parsed_at":"2023-08-31T21:02:33.497Z","dependency_job_id":null,"html_url":"https://github.com/wooorm/dictionary","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fdictionary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fdictionary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fdictionary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fdictionary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wooorm","download_url":"https://codeload.github.com/wooorm/dictionary/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249685277,"owners_count":21310576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["demo","example","pwa"],"created_at":"2024-08-03T13:01:07.254Z","updated_at":"2025-04-19T11:40:15.161Z","avatar_url":"https://github.com/wooorm.png","language":"JavaScript","readme":"# dictionary\n\nDictionary app that can work without JavaScript or internet.\n\n*   [x] Works without JavaScript\n*   [x] Works offline: Service worker, [`pouchdb`][pouch]\n*   [x] Server: [`express`][express]\n*   [x] Rendering: [`virtual-dom`][vdom]\n*   [x] 100/100 on [Lighthouse][] when ignoring HTTP/2 support, 88/100 otherwise\n*   [x] Shared rendering across server and app\n*   [x] Data from [Words API][wordsapi]\n*   [x] Caches Words API responses in [`levelup`][level]\n\n![screenshot](screenshot.png)\n\n## Size\n\n*   CSS: **1.49 kb** GZipped (written for modern browsers w/o prefixed though)\n*   JS: **46.6 kb** GZipped (mostly [`pouch`][pouch]) written in ES5\n*   HTML: **2.17 kb** GZipped (small, 1 entry), **4.26 kb** GZipped (large,\n    21 entries)\n\n## Performance\n\nLoading `/dictionary` afresh (first load) transfers 114 kb (app itself, and\ninitialising the service worker cache).\n\n| Connection | DOMContentLoaded |\n| ---------- | ---------------- |\n| GRPS       | 10.22s           |\n| Good 2G    | 1.39s            |\n| Good 3G    | 447ms            |\n| Regular 4G | 221ms            |\n| Wifi       | 145ms            |\n\n## Build\n\n`git clone`, then configure a [`.env`][env] file with a\n[`WORDSAPI_KEY`][wordsapi].  Words API is free up to 2500 request per day,\nwhich is more than enough for trying this out.\n\nFor example, `.env` would looks as follows:\n\n```txt\nWORDSAPI_KEY=1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwer\n```\n\nThen, run `npm install` and `npm build` to build everything.\n\nLastly, run `npm start` to start the server on port `2000`.\n\n## To do\n\n*   [ ] HTTP/2: I was just trying this out locally, so idc.\n*   [ ] Manifest icons: I don’t have an Android, so idc.\n\n## License\n\n[MIT][] © [Titus Wormer][author]\n\n[env]: https://github.com/motdotla/dotenv\n\n[wordsapi]: https://wordsapi.com\n\n[lighthouse]: https://github.com/GoogleChrome/lighthouse\n\n[express]: https://github.com/expressjs/express\n\n[vdom]: https://github.com/Matt-Esch/virtual-dom\n\n[pouch]: https://github.com/pouchdb/pouchdb\n\n[level]: https://github.com/level/levelup\n\n[mit]: license\n\n[author]: https://wooorm.com\n","funding_links":["https://github.com/sponsors/wooorm"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwooorm%2Fdictionary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwooorm%2Fdictionary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwooorm%2Fdictionary/lists"}