Giter Site home page Giter Site logo

apayrus / ula-react-native Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 2.0 31.63 MB

DEPRICATED. Universal learning app. Template for an app, that you can easily fill with your content and run your own educational app.

License: GNU General Public License v3.0

JavaScript 100.00%
language-learning educational-project native-language react-native-template

ula-react-native's Introduction

DEPRICATED. Please visit https://github.com/apayrus/ula

ULA -- Universal Learning App

ULA is a template for an educational app (android/iOS/web).

You should:

  • prepare text in markdwon, as simple as you write articles for blog
  • put files into specific folders (e.g.chapterId/subchapterId/images)

And you get:

  • interactive app, something between Duolingo and Coursera.

The template is open sourced and has free license.

At the moment, we have four types of materials, combining that you can create a great learning process for the user.

richText richMedia
richText richMedia
fileCard exercise
fileCard exercise

Material types

richText

It is a screen with rich formatted blog like explanations.

You can use standard markdown: headers, bold, italic, blockquotes, images.

In addition to markdown you can add videos and audios from local files, network links and youtube.

You can add into text sounded words (they will play on click on them) and quizzes, with auto check user answer for correctness.

For more info: Material type: richText

richMedia

In richMedia you can join media file and subtitles into phrasal player with parallels texts: original and translation. It works for both: audio and video.

You can watch active phrase while playing, play particular phrases, change speed of playback etc.

Also you can organize your subtitles in a chat like manner, with avatars and speaker names.

In next versions we have planned: quizes with timestamp, that will appear on some point of playback and drill/dictation mode.

For more info: Material type: richMedia

fileCard

With this kind of material you can organize multiple files (images+sounds) into flash cards or phrasebook.

Then you can use them in exercises.

For more info: Material type: fileCard

exercise

Exercises are build on top of richMedia and fileCard material types.

They provide user with activities, like:

  • listen to the audio, and write what you have heard
  • read the text and choose correct translation
  • look at image and order words
  • e.t.c. and all possible combinations of those kind of exercises.

After each exercise app gives to user feedback: was his answer right or wrong.

For more info: Material type: exercise

Conclusion

If you have content like

  • texts
  • translations
  • images
  • audios
  • videos
  • subtitles

and you want to organize them into interactive educational app, something between Duolingo and Coursera, without coding -- you should try ULA.

The app will be avaliable on:

  • android
  • iOS
  • web (site, SPA, PWA)

What's next?

Read about how Navigation works in ULA.

ula-react-native's People

Contributors

apayrus avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

ula-react-native's Issues

Drawer/ToC sign "completed/read"

When you have many materials, it is good to have a sign/checkbox about is it almost read or not.
May be it will appear automatically (after opening? listening to the end?)
or may be you by your hands will do that?

node scripts auto run on build

  • generate js-object content from markdown,
  • #3 generate map of images and audios,
// - [ ] run all scripts automatically, before `expo start`

localization interface

All words, used in the interface, should be placed in the localization module.

on the main page user will see 2 sets of languages:

  • content is available on these languages...
  • interface is available on these languages...

But at first all interface will be in English

SMM

  • Write article about the project and share it on:
    • Medium.com
    • vc.ru
    • habr.com
  • Record Video and share on:
    • youtube

Quiz: put incorrect answer statistics into local storage

When user interacts with quizzes and exercises we should save that process into AsyncStorage, so that teacher can check who was guessing the answers, and who was learning carifully.

  • 1. on incorrect answer, write it into Storage, increasingly
  • 2. when correct answer was given, stop increase error counting

universal file structure

  • design/choose file structure and naming convention for assets: images and audios, connected with markdown text
  • write documentation
  • fill example

node script to make assets map (audios and images)

React-Native cant access to files with dynamic generated names. We should write it before using files like this:

export default {
    '004_01': require('./004_01.jpg'),
    '004_02': require('./004_02.jpg'),
}

For don't do it manually, write a script, that make it from filenames in /assets folder

Exercises: after complete all, open page with progress statistic

After user have completed all exercises:

  • open page with results, as in games: how many words did have you read, translated, listened etc...
  • highlight all errors, like work on errors, so you can improve your knowledge for next time.
  • add images (in addition to text, translation and audio). Look at image and choose right answer from texts etc...
  • add ability to combine multiple things together, like image+text, or image+audio, etc... (we should design markup for it)
  • make hidden materials, if you want user exercise with them, and didn't see answers before. Hidden material eg oneLineOneFile, just makes connection originalText-translationText-Image-Audio --> so then you can generate from them exercises. And you don't want to show this material in non exercise format...
  • user input tolerance -- design and implement separate module. First: case insensitivity, punctuation and spaces ignoring. Some rules are general for any language, and some -- specific for the particular language, like ignore stress in Russian, or diacritics in Arabic.

Drawer/TOC add filter/order/search for episodes/titles

When you have content, related to dates, or without straight ordering as in book, you want to have the ability to sort items in different ways.
May be today you want to see new materials first and tomorrow -- the oldest ones.

SoundedWord (inText) -- add animation on click

TouchableOpacity makes proper animation, but it turns all text inside to view (with some margins or paddings and no wrap words).
Animation is looking good but position inside other text -- not good.
When I added onPress to Text -- position is ok, but there is no animation on click.

localization content

  • file structure (/content/content.en_US.md)
  • markdown example - the same as content.md (clone it before and rename)
  • manage languages - list existing ones on the main page, and choose one of them
  • appearance in the app - switcher translation on/off on ChapterScreen and Drawer
  • show translation in drawer (heading)

About page

  • component screen
  • course info
  • ulla info
  • link in drawer

interactivity [inText]: Put soundedWords into formatted text (markdown)

Design parser for put sounded words inside paragraph of text. For example, with #nameOfSoudFile before it:

You can click on this word #001-001 soundedWord and it will be played
  • #001-001 - not shown for user (only in code for author)
  • #001-001 - is a file name from a specific folder, like inTextWords. Instead of number in file name can be text of word.
  • soundedWord - styled not as other words around.
  • When user click on soundedWord, it sounds.

release 1.0.0

  • #1 custom beautifull drawer
  • #2 parse markdown to js object
  • #3 node script to make assets map (audios and images)
  • #5 global styles related to language
  • #7 universal file structure

hyphen causes unexpected <ul>

hyphen sign (-) causes <ul> and this rows doesn't appear in lessons (pages) - should replace it to short tire, at the beginning of row

parse markdown to js object

  • write script that parses makdown to js object
  • refactore code to understand this js object

We shoud get:

  • content of each lesson
  • heading of whole book

Avatars/Voices section in Media contentType

In Media contentType there is ##timing or ##phrases section, where you can put subtitles. Actually it is contentSubType.
Also in subtitles you can specify <Voice /> -- who is talking particular phrase, in webvtt way, like: <v Rob>.

Add in that way another subType: avatars/voices where in yaml like format you can specify avatars of speakers.

## voices
Rob: https://facebook.com/rob3913/images/photo.jpg
Neil: images/avatars/Neil.png 

ideas inspired by 6 min english

Extra params (add to each chapter):

  • date
  • description
  • image
  • pdf
  • href, etc

Extra navigation.
When there is lots of random materials, we need more abilities to search, sort, navigate, check as completed:

  • main page -- table of content with toolbar: sort by, search
  • isCompleted - input inside chapter
  • isCompleted - show in Table of Content (ToC)
  • order by completed
  • order by date
  • search (only title / full text)
  • tags (for each chapter)

Distribute all content via API
When materials updates regularly, it is good to deliver them through API endpoints, not by updating local text...

  • API endpoint for the list of materials
  • API endpoin for the single episode
  • push notification for new episode

Other:

  • thesaurus - is a text pair as: word - description (with contentType inText)
  • exercise with thesaurus (parse inText in extra way, to make pairs word-description, and then play with them (randomize)

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.