{"id":21377761,"url":"https://github.com/thomassimmer/neotexto","last_synced_at":"2025-07-13T10:31:48.181Z","repository":{"id":222972623,"uuid":"758691748","full_name":"thomassimmer/NeoTexto","owner":"thomassimmer","description":"A new way to learn languages.","archived":false,"fork":false,"pushed_at":"2024-12-18T03:49:40.000Z","size":3750,"stargazers_count":3,"open_issues_count":15,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T09:14:07.740Z","etag":null,"topics":["django","django-rest-framework","language-learning","learning-languages","llm","nextjs","translation"],"latest_commit_sha":null,"homepage":"https://medium.com/@thomas.simmer/my-first-business-idea-failed-reasons-and-lessons-9de04e89552d","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/thomassimmer.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":"2024-02-16T21:21:34.000Z","updated_at":"2024-06-16T15:29:22.000Z","dependencies_parsed_at":"2024-04-16T21:54:43.521Z","dependency_job_id":"03d04287-b846-4ad2-a006-a47a8b3ccfab","html_url":"https://github.com/thomassimmer/NeoTexto","commit_stats":null,"previous_names":["thomassimmer/neotexto"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thomassimmer/NeoTexto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FNeoTexto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FNeoTexto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FNeoTexto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FNeoTexto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomassimmer","download_url":"https://codeload.github.com/thomassimmer/NeoTexto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FNeoTexto/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265128294,"owners_count":23715621,"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":["django","django-rest-framework","language-learning","learning-languages","llm","nextjs","translation"],"created_at":"2024-11-22T09:23:35.999Z","updated_at":"2025-07-13T10:31:47.513Z","avatar_url":"https://github.com/thomassimmer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ccenter\u003e\n\u003cimg height=\"240\" src=\"./docs/images/logo.webp\"\u003e\n\u003c/center\u003e\n\n# Introduction\n\nNeoTexto is a platform to improve yourself in languages. You can use it to read texts and easily access translations for words you don't know. Import your texts using copy-paste, or using text detection from an image, or simply by asking ChatGPT to generate a text about a subject you are interested in. Save the words you don't know and practice them in games.\n\nYou can see an article I wrote on medium about this [here](https://medium.com/@thomas.simmer/my-first-business-idea-failed-reasons-and-lessons-9de04e89552d).\n\n\u003ccenter\u003e\n\u003cimg clear=\"left\" height=\"300\" src=\"./docs/images/mobile_home.webp\"\u003e\n\u003cimg clear=\"right\" height=\"300\" src=\"./docs/images/trad_example.webp\"\u003e\n\u003c/center\u003e\n\n# Installation\n\nMake sure you have docker and docker-compose.\n\n- Create .env files in backend/ and frontend/ folders and fill them using the respective .env.template files.\n- Uncomment languages you want to work with in backend/Dockerfile (English and French will be used by default).\n\n### In development mode\n\n```\ndocker-compose up --build -d\n```\n\n### In production\n\n```\ndocker-compose -f docker-compose.prod.yml up --build -d\n```\n\nIn case Docker has permission troubles:\n\n```\nsudo chown -R $(id -u):$(id -g) $HOME/.docker\n```\n\n# Google\n\n## Authentication\n\nIf you wish to connect using Google, you will need to create a new project on Google Cloud Console. Set your app name and user support email in the OAuth Consent Screen. Once you have you credentials and set the right urls, you will need to add a socialaccountprovider in Django's admin:\n\n- Connect to backend container:\n\n```\ndocker exec -it backend bash\n```\n\n- Create a django superuser account:\n\n```\npython manage.py createsuperuser\n```\n\n- Add a Social Application in Django's admin (use the superuser credentials you just created to authenticate) at http://localhost:8000/back/admin/socialaccount/socialapp/add/ using the secrets and urls you have in your Google Cloud Console.\n\n## Image-To-Text\n\n- To be able to detect text from images, you will need to activate the Google Cloud Vision API.\n- Add your service-account-file.json in backend/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomassimmer%2Fneotexto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomassimmer%2Fneotexto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomassimmer%2Fneotexto/lists"}