/LibreLingo

an experiment to create a community driven language-learning platform

Primary LanguageHTMLGNU Affero General Public License v3.0AGPL-3.0

LibreLingo

an experiment to create a community-driven language-learning platform

Click here for live demo

Project goal

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.

Screenshots

Milestones

Here's a rough sketch of how I imagine the milestones of this project:

First demo

  • ☑️ Demo course content in Spanish for English speakers
  • ☑️ Some basic building blocks of course content implemented
  • ☑️ Developers can use course editor
  • ☑️ Basic theme/branding

Alpha release

  • ☐ 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

Beta release

  • ☐ 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

Stable release(s)

  • ☐ 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

Become a contributor

Contribute to course material

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.

Contribute to software development

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!

Other forms of contribution

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.

Tech stack

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.

License

FOSSA Status

Development

Running the project in development mode

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

Deploying to production

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

Using the course editor

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

Contributors ✨

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!