Code Monkey home page Code Monkey logo

psittacus's Introduction

Psittacus

Psittacus iratus linguas docet ๐Ÿฆœ

The angry parrot teaches languages ๐Ÿฆœ

What is it?

Psittacus is a lightweight, open-source tool, meant to facilitate language-learning and teaching, and with a vision to empower teachers and learners of any written+spoken language around the world.

Psittacus is based on the gamification of the sentence-mining approach, having an interface vaguely inspired by that of Duolingo and other competing interactive language learning-tools.

Psittacus aims at democratizing the process of language-learning and teaching, making it easy for teachers to prepare and collaborate on their own lessons, and share them in a standardized and easily accessible format.

Whom does it appeal to?

  • Language lovers in general. ๐ŸŒ
  • Teachers of any language that need to share quick homeworks/lessons with their students. ๐Ÿ“š
  • Speakers of endangered languages that wish to preserve and spread their native tongue. ๐ŸŒฑ ๐Ÿ“ผ
  • Conlangers that want the world to learn their constructed language. ๐Ÿค“
  • And many more...

What are some of its main features?

  • Simple interface for lang-teachers to prepare lessons.
  • Possibility to edit and extend existing lessons.
  • Lessons are stored in an easily shareable format.
  • Lessons can be taken fully offline, once downloaded/sideloaded.
  • Support for audio playback of sentences.
  • Support for hover-over-the-word definitions.
  • Support for spaced repetition strategies and automatic lesson scheduling.

Link to Web-App

https://psittacus.eu.pythonanywhere.com/

Demo

https://youtu.be/estAGLc3uoE

Take Test Lesson

Download this test lesson-file and try it out on Psittacus (open it with "Take Lesson" on the main-menu of the web-app). Watch the Demo for more help.

Details

Lesson File Format

Lesson File Format

A 'lesson' comprises: sentence-pairs, word-definitions and audio-data. Each single lesson is made up of multiple 'propositions'. Each proposition expresses an idea in two different languages. The information of a lesson is stored in the widely-known json format, and can be shared as a simple text file.

The structure of a lesson-json is the following:

Lesson

Metadata looks like this:

Metadata

Each proposition has the following structure:

Proposition

Testing

To build this web-app:

(You have to have yarn or npm installed).

1. Clone this repo:

... and open up its directory.

2. Install the dependencies:

yarn:

yarn install

npm:

npm ci

Use ci (clean install) instead of npm i, to make sure you're building the project with the exact tested dependencies from package-lock.json, and not overwriting them.

3. Build:

yarn run build

4. Run:

Copy and paste the full path of:

/psittacus/dist/index.html

... to your browser's navigation bar.

Debugging:

  • Use:
yarn run dev-build

to generate an un-minified developer build (easier to debug).

Contributing

Adding a Language

To propose your change feel free to post a pull request.

Experimental

Automatic Lesson Generator

For more info:

./palg/README.md

Credits

Images/Sounds

psittacus's People

Contributors

aiman-al-masoud avatar pakzer0 avatar rickyycheng avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

psittacus's Issues

Cannot build on wsl.

  1. git clone
  2. cd psittacus
  3. yarn install
  4. yarn run build
    (dir: .../source/repos/psittacus/psittacus)
    Err msg:
yarn run v1.22.19
$ ./scripts/build.sh
: not founduild.sh: 2: 
: not founduild.sh: 3: webpack
cat: ''$'\r': No such file or directory
: No such file or directory
rm: cannot remove './dist/main.js'$'\r': No such file or directory
rm: cannot remove './dist/main.js.LICENSE.txt': No such file or directory
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

So it is a linux problem. I run it on WSL.
There are to things to do:

  1. allow linux to run the code.
  2. Let users to cd psittacus before yarn install in readme.md.

Suggestion: scheduling based on spaced repetition

I stumbled upon this project by chance, and being a fan of Anki, my first instinct was to suggest adding spaced repetition to the app. Support for importing Anki packages will also be great for adoption, as Anki is popular and has numerous card decks created in its format.

Migration to TS & overall refactoring

So I just started working on the add-typescript/ branch. I will simultaneously make some major changes to the overall architecture of the program, to better handle state-management.

The aim is to remove the various singletons & static stuff (Language, Settings, UserProgress, etc...), replacing them with a single Context facade to be passed down to all children from the app's root, as a centralized "source of truth" for the state throughout the app.

It may take me a while to migrate all of the codebase to TS, but I will probably merge to main as soon as I get most of the architecture stuff sorted out, even if there be still some marginal parts in JS.

Another thing I'd like to do is adding some automated tests, eventually, but probably not very soon.

Thanks!

Non-Latin letters / characters support?

I am from Duome.eu.
Since duolingo canceled its tree, i am positive to join an open source language project.
There are some good repos: Librelingo, ANKI.
Librelingo DOES NOT suport the language without latin (or similiar) letters such as Japanese or Mandarin (Chinese). Does this repo support it?

And btw, how do you guys think about the anki template? I've create a (some kind bad) pure front-end repo to simulate the anki card template to help to make course templates.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.