{"id":20722104,"url":"https://github.com/simjanos-dev/LinguaCafe","last_synced_at":"2025-05-10T23:32:28.899Z","repository":{"id":215979786,"uuid":"538936986","full_name":"simjanos-dev/LinguaCafe","owner":"simjanos-dev","description":"LinguaCafe is a self-hosted software that helps language learners read foreign languages.","archived":false,"fork":false,"pushed_at":"2025-04-13T16:37:55.000Z","size":93995,"stargazers_count":1074,"open_issues_count":142,"forks_count":44,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-04-21T03:56:00.809Z","etag":null,"topics":["anki","dictionary","japanese","jellyfin","jmdict","language","language-learning","self-hosting","translation"],"latest_commit_sha":null,"homepage":"https://simjanos-dev.github.io/LinguaCafeHome/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simjanos-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-09-20T10:44:29.000Z","updated_at":"2025-04-20T06:46:10.000Z","dependencies_parsed_at":"2024-03-25T15:24:49.338Z","dependency_job_id":"72775b45-d29f-46dd-9e67-d4102c48bac1","html_url":"https://github.com/simjanos-dev/LinguaCafe","commit_stats":{"total_commits":790,"total_committers":15,"mean_commits":"52.666666666666664","dds":"0.13797468354430376","last_synced_commit":"4c7c820ef74be4b06d6095a9b2c8eefab54ab088"},"previous_names":["simjanos-dev/linguacafe"],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simjanos-dev%2FLinguaCafe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simjanos-dev%2FLinguaCafe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simjanos-dev%2FLinguaCafe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simjanos-dev%2FLinguaCafe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simjanos-dev","download_url":"https://codeload.github.com/simjanos-dev/LinguaCafe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253497320,"owners_count":21917683,"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":["anki","dictionary","japanese","jellyfin","jmdict","language","language-learning","self-hosting","translation"],"created_at":"2024-11-17T03:34:04.048Z","updated_at":"2025-05-10T23:32:23.866Z","avatar_url":"https://github.com/simjanos-dev.png","language":"Vue","funding_links":[],"categories":["Vue","[💸 post-capitalism](https://github.com/stars/ketsapiwiq/lists/post-capitalism)","language"],"sub_categories":[],"readme":"## LinguaCafe\n\n![GitHub Release](https://img.shields.io/github/v/release/simjanos-dev/LinguaCafe?label=Release\u0026logo=buymeacoffee\u0026logoColor=white\u0026color=%23b58873) ![Static Badge](https://img.shields.io/badge/Languages-27-b58873?logo=readme\u0026logoColor=white) [![Discord](https://img.shields.io/discord/1193631644662386788?logo=discord\u0026logoColor=white\u0026label=Discord\u0026color=%235460ce\u0026link=https%3A%2F%2Fdiscord.gg%2FwZYZYrdaeP)](https://discord.gg/wZYZYrdaeP) ![Static Badge](https://img.shields.io/badge/Jellyfin-API-%23983883?logo=jellyfin\u0026logoColor=white) ![Static Badge](https://img.shields.io/badge/DeepL-API-%23983883?logo=deepl\u0026logoColor=white) ![Static Badge](https://img.shields.io/badge/Anki-API-%23983883?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjQ4cHQiIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9IjQ4cHQiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCg0OS4wNzcgMCAwIDQ5LjY1MSAtMS4wMTcgLS45MDkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAiIHgyPSIuOTA3NDg4IiB5MT0iLjUiIHkyPSIuOTIwMDc4IiBmaWxsPSIjZmZmZmZmIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmZmZmYiIGZpbGw9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9Ii44Mzg4ODM5NzkzOCIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgZmlsbD0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0ibTIwLjUwOSAxMi42OTdjLS4yNzggMS4yNTktMS41MjggMi4wNjEtMi43OSAxLjc5LTEuMjYzLS4yNzEtMi4wNjItMS41MTktMS43ODUtMi43ODRsMS40ODQtNi44OTNjLjY3OS0zLjE1NiAzLjA4NS0zLjg2NiA1LjM2OS0xLjU4NGw4LjE2OSA4LjE2MSAxMS4yNzMtLjkxYzMuMjE4LS4yNiA0LjY1NSAxLjg3MiAzLjIwNyA0Ljc1N2wtNC45MzQgOS44MjkgMy44MjYgOS45MTVjMS4xNjIgMy4wMTItLjQ4MSA1LjAzOC0zLjY2OCA0LjUyMWwtMTEuMzE4LTEuODM2LTguOTM5IDcuMzZjLTIuNDkyIDIuMDUzLTQuODI5IDEuMTE3LTUuMjE2LTIuMDg4bC0xLjMtMTAuNzcxLTkuOTctNi4zNDZjLTIuNzIzLTEuNzM0LTIuNTIxLTQuMTYzLjQ1Mi01LjQyMmw4LjE4NC0zLjQ2NGMxLjE4OS0uNTAzIDIuNTYyLjA1MiAzLjA2NiAxLjI0LjUwMyAxLjE4OC0uMDUyIDIuNTYyLTEuMjQxIDMuMDY2bC01LjM2OSAyLjI4MSA5LjI1NCA1Ljg4NCAxLjI0IDEwLjI5NiA4LjUwNS02Ljk5NiAxMS4xMjYgMS44MDEtMy43NDQtOS42OTggNC43NjEtOS40NjUtMTAuOTczLjg4OS03Ljc2OC03Ljc1NnoiIGZpbGw9IiNmZmZmZmYiLz48L3N2Zz4=)\n\nLinguaCafe is a free self-hosted software that helps language learners acquire vocabulary by reading. It provides a set of tools to read, look up unknown words and review them later as effortlessly as possible.\n\nYou can read about all the features of LinguaCafe on the [overview](https://simjanos-dev.github.io/LinguaCafeHome/) GitHub Page, and on the [user manual](https://github.com/simjanos-dev/LinguaCafe/wiki/1.-Home) GitHub Wiki page.\n\n\u0026nbsp;\n\u0026nbsp;\n\n![Library](/GithubImages/LibraryCover.jpg)\n\n![Reader](/GithubImages/TextReader.jpg)\n\n![Review](/GithubImages/ReviewBackCard.jpg)\n\n![Vocabulary](/GithubImages/VocabularySearch.jpg)\n\n## Language support\n\n**Supported languages:** Chinese, Croatian, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Italian, Japanese, Korean, Latin, Macedonian, Norwegian, Polish, Portuguese, Romanian, Russian, Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian, Welsh.\n\nYou can find a detailed list about what level of support different languages have on the [GitHub Wiki](https://github.com/simjanos-dev/LinguaCafe/wiki) page.\n\n## Supported platforms:\n- x64, which includes most desktop computers made in the last decade.\n- Mac users with Apple silicon must perform an additional step, see the 'Installation' section for details\n\nOther Armv8 devices such as Raspberry Pis 3 and newer do not work at the moment.\n\n## Memory usage\nLinguaCafe uses RAM based on how many and which languages do you use. If you use every language, the RAM usage can be over 2GB.\n\n## Installation\n\n#### Step 1: Install docker desktop.\n\n\u003e[!IMPORTANT]\n\u003e\n\u003e On MacOS you might need actual Docker Desktop instead of just basic Docker, because it allows you to use Rosetta to run images without support for Arm64 like our Python image, which uses Spacy models that only work in Amd64.\n\n#### Step 2: Create linguacafe folder and download the docker-compose.yml file.\n\nCreate a folder for linguacafe, and a storage subfolder. Then download the [docker-compose.yml](https://github.com/simjanos-dev/LinguaCafe/blob/main/docker-compose.yml) file, and place in inside your linguacafe folder. Your folder structure should look like this:\n```\n.\n├── linguacafe\n│   ├── storage\n│   ├── docker-compose.yml\n```\n\nIf you want to change the default MySQL database and user, you can create a `.env` file inside your linguacafe folder and add these lines to it before starting your servers for the first time:\n```\nDB_DATABASE=\"linguacafe\"\nDB_USERNAME=\"linguacafe\"\nDB_PASSWORD=\"linguacafe\"\n```\n\nYou can also use a remote MySql server. In this case, you must create the database itself before starting the server.\n```\nDB_HOST=\"linguacafe-database-host\"\nDB_PORT=3306\n```\n\nMacOs users with Apple silicon must also create a `.env` file, and add the following line:\n```\nPLATFORM=\"linux/amd64\"\n```\n\n#### Step 3: Run this command to download the docker images and start your server:\n```\ndocker compose up -d\n```\n\n**Windows:**\n\nFor Windows, you can download [this installation script](/install_linguacafe.bat) and run it instead of running any of the commands yourself. Since this is a .bat file, Windows defender will warn you about it being potentially a malware.\n\n#### Step 4: Admin settings\nYour server now should be running and accessible on http://localhost:9191. \n\nAlthough your server is set up and functional, please read the [user manual](https://github.com/simjanos-dev/LinguaCafe/wiki/2.-Setup), because there are a few additional steps before you can use linguacafe, like installing languages and importing dictionaries.\n\n#### Install error troubleshooting\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMysql error while running the `docker compose up -d` command.\u003c/b\u003e\u003c/summary\u003e\n\nSome Apple silicon users have encountered error messages like these: \n```\n[+] Pulling 1/3 on\n✘ mysql Error context canceled 1.0s\n⠏ webserver [⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling 1.0s\n⠏ python Pulling 1.0s\nno matching manifest for linux/arm64/v8 in the manifest list entries\n```\n\nWe do not know why, but pulling the images individually fixes this error.\n\nRun these commands, then run `docker compose up -d` again:\n```\ndocker pull --platform linux/arm64 ghcr.io/simjanos-dev/linguacafe-webserver:latest\ndocker pull --platform linux/amd64 ghcr.io/simjanos-dev/linguacafe-python-service:latest\n```\n\u003c/details\u003e\n\n## Updating to the latest version \n\nPlease **backup** linguacafe before updating, otherwise you can lose your data if anything goes wrong. You can read more about backups in the [user manual](https://github.com/simjanos-dev/LinguaCafe/wiki/2.-Setup#backup).\n\nIf you are below v0.9, please use the migration guide provided [here](/migration.md) instead of this command.\n\nIf you are below v0.12 and using Linux or MacOS, please run this command from your linguacafe directory (this won't be neccessary anymore in the future):\n```\nsudo chmod -R 777 ./storage\n```\n\nRun these commands to update and start your server:\n```\ndocker compose pull\ndocker compose up -d\n```\n\nIf you are below v0.12 and using Windows please delete these folders **after updating**, then restart your server. You will have to install your languages again if you had any installed.\n```\nlinguacafe/storage/logs\nlinguacafe/storage/framework\nlinguacafe/storage/app/model\n```\n\nIf you run into any problem updating, please contact me on discord, I will try to help.\n\n##### Windows\nOn Windows, you can run again [the installation script](/install_linguacafe.bat) to update to the latest version, or run the commands separately.\n\n## Active development disclaimer\n\n\u003e[!NOTE]\n\u003e LinguaCafe is still in active development, you might encounter some bugs while using the software. Please test it before you start actively using it, and make sure it is up to your expectations.\n\u003e At this time only one user/server is supported.\n\n## Contact information\n[Discord invite](https://discord.gg/wZYZYrdaeP)\n\nDiscord user: linguacafe_47757\n\nSubreddit: /r/linguacafe\n\nE-mail: simjanos.dev@gmail.com\n\n## Attributions\nLinguaCafe uses many public resources. I am very thankful for these projects and for all the people who were working on them. They helped me greatly to create LinguaCafe.\n\n**Spacy tokenizer**\n\nLicense: MIT license\n\n[Spacy website](https://spacy.io/)\n\n[Spacy github](https://github.com/explosion/spaCy/)\n\n[Spacy license](https://github.com/explosion/spaCy/blob/master/LICENSE)\n\n**Pykakasi**\n\nLicense: License: GNU General Public License 3\n\n[Pykakasi website](https://codeberg.org/miurahr/pykakasi)\n\n[Pykakasi license](https://www.gnu.org/licenses/gpl-3.0.html)\n\n**Pinyin**\n\nLicense: MIT license\n\n[Pinyin website](https://pinyin.lxyu.net/)\n\n[Pinyin github](https://github.com/lxyu/pinyin)\n\n[Pinyin license](https://github.com/lxyu/pinyin?tab=MIT-1-ov-file#readme)\n\n**Newspaper3k**\n\nLicense: MIT, Apache-2.0\n\n[Newspaper3k github](https://github.com/codelucas/newspaper)\n\n[Newspaper3k license](https://github.com/codelucas/newspaper/blob/master/LICENSE)\n\n**EbookLib**\n\nLicense: GNU Affero General Public License v3.0\n\n[EbookLib github](https://github.com/aerkalov/ebooklib)\n\n[EbookLib license](https://github.com/aerkalov/ebooklib/blob/master/LICENSE.txt)\n\n**JMDict dictionary file**\n\nLicense: Creative Commons Attribution-ShareAlike 4.0 International\n\n[JMDict Project website](https://www.edrdg.org/jmdict/j_jmdict.html)\n\n[JMDict license information](https://www.edrdg.org/edrdg/licence.html)\n\n[JMDict license](https://creativecommons.org/licenses/by-sa/4.0/)\n\n**KANJIDIC2 kanji file**\n\nLicense: Creative Commons Attribution-ShareAlike 4.0 International\n\n[JMDict Project website](https://www.edrdg.org/jmdict/j_jmdict.html)\n\n[KANJIDIC2 license information](https://www.edrdg.org/edrdg/licence.html)\n\n[KANJIDIC2 license](https://creativecommons.org/licenses/by-sa/4.0/)\n\u0026nbsp;\n\n**CC-CEDICT dictionary file**  \nLicense: Creative Commons Attribution-Share Alike 3.0 License\n\n[CC-CEDICT website](https://cc-cedict.org/wiki/)\n[CC-CEDICT license](https://creativecommons.org/licenses/by-sa/3.0/)\n\u0026nbsp;\n\n**HanDeDict dictionary file**  \nLicense: Creative Commons Attribution-ShareAlike 2.0 Germany License\n\n[HanDeDict website](http://www.handedict.de/)\n[HanDeDict license](https://creativecommons.org/licenses/by-sa/2.0/de/)\n\u0026nbsp;\n\n**Kengdic dictionary file**  \nLicense: GNU Library General Public License, version 2.0\n\n[Kengdic github](https://github.com/garfieldnate/kengdic)\n[Kengdic license](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.en.html)\n\u0026nbsp;\n\n**Eurfa dictionary file**  \nLicense: The GNU General Public License 3\n\n[Eurfa download website](https://www.kaggle.com/datasets/rtatman/eurfa-welsh-dictionary?resource=download)\n[Eurfa bitbucket](https://bitbucket.org/donnek/eurfa/src/master/)\n[Eurfa creator's website](http://kevindonnelly.org.uk/)\n[Eurfa license](https://bitbucket.org/donnek/eurfa/src/master/gpl.txt)\n\u0026nbsp;\n\n**Wiktionary**\n\nLicense: Creative Commons Attribution-ShareAlike 3.0 Unported License\n\n[Wiktionary website](https://en.wiktionary.org/wiki/Wiktionary:Main_Page)\n\n[Wiktionary license](https://en.wiktionary.org/wiki/Wiktionary:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License)\n\nThe specific wiktionary files that LinguaCafe uses have been downloaded from [this](https://github.com/Vuizur/Wiktionary-Dictionaries) GitHub repository.\n\n**\u003cspan\u003eDict\u003c/span\u003e.cc**\n\nLinguaCafe has no \u003cspan\u003edict\u003c/span\u003e.cc dictionaries packaged in the software. It only provides a link to the \u003cspan\u003edict\u003c/span\u003e.cc website.\n\n[Dict.cc license](https://www1.dict.cc/translation_file_request.php?l=e)\n\n**RADKFILE/KRADFILE**\n\nLicense: Creative Commons Attribution-ShareAlike 4.0 International\n\n[JMDict Project website](https://www.edrdg.org/jmdict/j_jmdict.html)\n\n[KRADKFILE license information](https://www.edrdg.org/edrdg/licence.html)\n\n[KRADKFILE license](https://creativecommons.org/licenses/by-sa/4.0/)\n\n**DMAK kanji drawing library**\n\nLicense: MIT license\n\n[DMAK github project](https://github.com/mbilbille/dmak/)\n\n[DMAK license](https://github.com/mbilbille/dmak/blob/master/LICENSE)\n\n**KanjiVG**\nLicense: Creative Commons Attribution-ShareAlike 3.0 Unported\n\n[KanjiVG website](https://kanjivg.tagaini.net/)\n\n[KanjiVG github](https://github.com/KanjiVG/kanjivg)\n\n[KanjiVG license](https://creativecommons.org/licenses/by-sa/3.0/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimjanos-dev%2FLinguaCafe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimjanos-dev%2FLinguaCafe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimjanos-dev%2FLinguaCafe/lists"}