an experiment to create a community-driven language-learning platform
My goal is to start a community-driven language-learning platform that gives it's users and contributors a way to influence it's future and adapt it to special requirements.
To achieve that, I release all source code under the GPLv3 free software license, which guarantees end users the freedom to run, study, share, and modify the software.
In addition to licensing the software under a free software license, the course content will be decoupled from the software itself, and the development of GPLv3 or public domain course content will be encouraged. This should allow course developers to retain the freedom to choose how they use their work.
Once course content is properly decoupled from the software, it should be possible to experiment with alternative ways of using course content: for example, the creation of audiobooks or print material.
Here's a rough sketch of how I imagine the milestones of this project:
- ☑️ Demo course content in Spanish for English speakers
- ☑️ Some basic building blocks of course content implemented
- ☑️ Developers can use course editor
- ☑️ Basic theme/branding
- ☐ Course progress can be properly syncronised across devices
- ☐ Course editor can be accessed by all course contributors
- ☐ Statistics about course controbutors are collected and published
- ☐ At least the basics of the Spanish course are ready
- ☐ Most of the course building blocks are implemented
- ☐ All of the basic building blocks of courses are implemented
- ☐ More advanced learning features (reading exercises)
- ☐ Spaced repetition implemented
- ☐ Spanish course is stable and useful
- ☐ Any user can build their own course
- ☐ Users can suggest changes to course content
- ☐ There's a marketplace for "unofficial" courses
- ☐ Multiple stable courses available
- ☐ Mobile apps available
- ☐ Wiki features
- ☐ Dictionary
- ☐ Speaking exercises
If you are interested in contributing to course development, please fill the following form: https://danielkantor196881.typeform.com/to/V00Paz. The project is in a very early stage right now, so you might not be able to contribute right away. Your work will be released in this GitHub repository and you will show up as a contributor here.
If you are interested in writing code for LibreLingo, you can simply start submitting pull requests. You can also use this form to get in touch: https://danielkantor196881.typeform.com/to/jTe9jX. You don't need to fill this form. You can just start submitting issues and pull requests if your wish!
You can help LibreLingo by testing it and submitting feature requests or bug reports: https://github.com/kantord/LibreLingo/issues/new. If you want to get in touch, you can simply the contacts on my GitHub profile.
| Web app/PWA | Course editor |
---|---|---|
Frontend | Svelte | Django Admin* |
Backend | CouchDB |
* Djando Admin might be replaced in the future
Testing is done using Jest and Cypress. Other technology in use include: bulma, webpack, etc.
If you have cloned the repo and have yarn
installed on your computer, you can install dependencies and run the development server using:
yarn
yarn dev
LibreLingo's frontend is a static site, therefore you can simply deploy it using the static HTTP server of your choice!
To generate the static files (assuming that you have set up a working development mode), you just have to export them using:
yarn export
This will create a __sapper__/export
folder with a production-ready build of your site.
See Sapper's documentation for more detail: https://sapper.svelte.dev/docs#Exporting
The course editor is in a very early stage, and is only usable by developers. Since it's not publicly hosted yet, you can only use it for testing purposes.
The course editor is implemented as a django project in the course_editor
folder.
If you want to set up your course editor with real data, you can find a database dump here: src/courses/spanish-from-english/courseData.json
Check out Django's documentation about database dumps: https://docs.djangoproject.com/en/3.0/ref/django-admin/#loaddata
Thanks goes to these wonderful people (emoji key):
Daniel Kantor 💻 |
Klemen Skerbiš 🤔 |
Mirek Mazel 🤔 |
Chris Babcock 🤔 |
Liaizon Wakest 🤔 |
Trolli Schmittlauch 🤔 |
Jérôme Deuchnord 🤔 |
Felix Ableitner 🐛 |
Navan Chauhan 🚇 |
Roshan Jossy 🤔 |
ledgelight 🤔 |
Francis Tyers 🤔 |
titanix 🤔 |
This project follows the all-contributors specification. Contributions of any kind welcome!