{"id":15772327,"url":"https://github.com/c-ehrlich/vocab-learn-order-t3","last_synced_at":"2025-10-14T04:22:40.283Z","repository":{"id":47954218,"uuid":"516421898","full_name":"c-ehrlich/vocab-learn-order-t3","owner":"c-ehrlich","description":"Determine the optimal order to learn vocabulary and find sample sentences (rebuilt with tRPC)","archived":false,"fork":false,"pushed_at":"2023-04-23T08:04:17.000Z","size":374,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-11T15:46:47.880Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://vocab.c-ehrlich.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/c-ehrlich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-21T15:17:35.000Z","updated_at":"2022-12-06T09:01:37.000Z","dependencies_parsed_at":"2024-10-04T15:22:48.981Z","dependency_job_id":"1b2c8294-648f-47d6-bdd2-33f4ff057923","html_url":"https://github.com/c-ehrlich/vocab-learn-order-t3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/c-ehrlich/vocab-learn-order-t3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-ehrlich%2Fvocab-learn-order-t3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-ehrlich%2Fvocab-learn-order-t3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-ehrlich%2Fvocab-learn-order-t3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-ehrlich%2Fvocab-learn-order-t3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/c-ehrlich","download_url":"https://codeload.github.com/c-ehrlich/vocab-learn-order-t3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c-ehrlich%2Fvocab-learn-order-t3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017949,"owners_count":26086213,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-10-04T15:21:55.764Z","updated_at":"2025-10-14T04:22:40.264Z","avatar_url":"https://github.com/c-ehrlich.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vocab Learn Order (v2)\n\n[Live Demo](https://vocab.c-ehrlich.dev)\n\n![Vocab Learn Order Screenshot](https://user-images.githubusercontent.com/8353666/155544745-745b1201-b071-426d-aac8-60875831d57e.png)\n\n## Table of Contents\n\n- [What is this?](#what-is-this)\n- [Technologies](#technologies)\n- [Installation and Setup](#installation-and-setup)\n  - [Development](#development)\n  - [Deployment](#deployment)\n- [Reflection](#reflection)\n- [Acknowledgements](#acknowledgements)\n\n## What is this?\n\nThis is a rebuild of [an older app of mine](https://github.com/c-ehrlich/vocab-learn-order), recreated in the [T3 Stack](https://init.tips/) including tRPC v10 alpha. It's missing the functionality to seed an initial database, you will need to use the script in the old app for that if you want to deploy your own instance.\n\n---\n\nVocab Learn Order is a web app for Japanese learners. Many immersion learners know the experience of listening to podcasts or other audio material in their target language, looking up unknown words, and then saving those words in a Notes file with the intent to learn them later with a tool such as Anki. But suddenly the file is several hundred words long and it's difficult to know which words to learn first to get the greatest benefit.\n\nFrequency lists help with this somewhat, but as each frequency list is computed from a type of media, no single frequency list can give a realistic representation of how useful a given word is. Additionally, different learners have different goals - for some the highest priority is reading, for some it's business conversation, for some it's casual conversation, and so on.\n\nBy letting users decide how highly to weigh each frequency list, this app is able to create a much more accurate learn order than other methods. Additionally it makes Anki card creation much easier by giving access to sample sentences for each word through YouGlish and ImmersionKit. It's suitable for learners of all skill levels as the database is built on a dataset created specifically for this app, which contains frequency information for about 200,000 words, significantly more than most individual frequency lists.\n\n## Technologies\n\n- **Backend**: tRPC, Prisma, MongoDB, Zod\n- **Frontend**: Next.js, React Query, Jotai, Material UI\n- **Sample Deployment**: MongoDB Atlas (Database), Vercel (App)\n\n## Installation and Setup\n\n### Development\n\n1. Use [the old project](https://github.com/c-ehrlich/vocab-learn-order) to populate a MongoDB database (local or online)\n2. `pnpm i`\n3. Create a .env based on .env-example\n4. `pnpm dev`\n\n### Deployment\n\n1. Make sure you have an online MongoDB database that has been seeded with the dictionary data\n2. Push to a git repo\n3. Import the repo in Vercel\n4. Add the `DATABASE_URL` variable in Vercel\n\nIf you would like to deploy separate backend and frontend services or use containers, you can use [the old project](https://github.com/c-ehrlich/vocab-learn-order).\n\n## Reflection\n\n- tRPC is great, and v10 is even better!\n- Prisma's introspection is incredible - the schema were created by typing one line in the console\n- This was very easy and fast to develop\n- There are a few hacky things regarding state management. It's better than the old version, which was just a single Zustand store (the new version uses React Query and Jotai), but I took some shortcuts to get it up and running without too much refactoring.\n\n## Acknowledgements\n\n- JLPT Vocab List from [stephenmk/yomichan-jkpt-vocab](https://github.com/stephenmk/yomichan-jlpt-vocab)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc-ehrlich%2Fvocab-learn-order-t3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fc-ehrlich%2Fvocab-learn-order-t3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc-ehrlich%2Fvocab-learn-order-t3/lists"}