LibreLingo's mission is to create a modern language-learning platform that is owned by the community of its users. All software is licensed under AGPLv3, which guarantees the freedom to run, study, share, and modify the software. Course authors are encouraged to release their courses with free licenses.
If you want to know why I built LibreLingo, I recommend reading my article. If you agree with LibreLingo's mission, consider helping to build and maintain it, and please consider making a monetary contribution.
- :bowandarrow: practice using interactive exercises
- :juggling_person: spaced repetition
- :bar_chart: save and monitor progress
- :arrows_counterclockwise: synchronise progress across multiple devices
- :iphone: works on various devices such as phones, tablets and desktop computers
- :peopleholdinghands: owned by you, the community
- :dove: most courses are free, as in freedom and also as in beer
librelingo-yaml-loader can be installed using pip:
pip install librelingo-yaml-loader
Loading courses in a Python program
You can use librelingo-yaml-loader to load YAML-based LibreLingo courses in your Python program.
from librelingo_yaml_loader import yaml_loader course = yaml_loader.load_course("./path/to/my/course")
load_course returns a Course() object.
librelingo-json-export is a Python 🐍 package that contains modules that let's you export LibreLingo courses into JSON files that will be read by the web app. This might be useful if you want to deploy YAML-based LibreLingo courses as a web app.
librelingo-json-export can be installed using pip:
pip install librelingo-json-export
Exporting courses to JSON
librelingo-json-export has a command line program that can export YAML-based LibreLingo courses into the JSON format used by the web app.
Usage: cli.py [OPTIONS] INPUT_PATH OUTPUT_PATH Convert a YAML course into a JSON course. Options: --dry-run / --no-dry-run --help Show this message and exit.
- [x] 🏁 Demo course content in Spanish for English speakers
- [x] 🏁 Some basic building blocks of course content implemented
- [x] 🏁 Developers can use course editor
- [x] 🏁 Basic theme/branding
- [x] 🏁 Course progress can be properly synchronised across devices
- [x] 🏁 Course editor can be accessed by all course contributors
- [x] 🏁 At least the basics of the Spanish course are ready
- [x] 🏁 Most of the course building blocks are implemented
- [x] 🏁 All of the basic building blocks of courses are implemented
- [x] 🏁 Spaced repetition implemented
- [ ] Officially releasing Basque course
- [ ] Make it possible to contribute to courses through GitHub
- [ ] Improving course creation UX over Github
Become a contributor
are you a developer?
You can help LibreLingo by testing it and submitting feature requests or bug reports: here. If you want to get in touch, you can use my contact details on my GitHub profile. Go through the dev docs here.
Still got questions? Our Matrix/FreeNode IRC channel is
#LibreLingo, join the dev community there and feel free to ask anything.
- IRC: connect to
irc.freenode.netwith your favourite client and join
are you a linguaphile?
Learning new language is an awesome experience right? If you wanna let others experience that too, make a course on LibreLingo! Get started here.
We are working on the process of creating courses, to make it more streamlined, if you have an idea to make it better, do share with us, create an issue. Note: You are always encouraged to release the courses under a free license.
are you a wordsmith?
Translate the LibreLingo UI(LLUI) to make it more accessiable, you can start here.
The mascot is designed by @almostdesigner.
Mascot images are released under Creative Commons Attribution-ShareAlike 4.0 International License.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
LibreLingo is licensed under the AGPL-3.0 license. In addition, course content and other creative content might be licensed under different licenses, such as CC. This image shows a summary of the licensing of our dependencies:
- omnilingo, listening-based language learning
Help us to keep going