Logo Lanfrica

olddustysocksunderthecouch/MultiLingualFam-CloudFunctions

Domain:

natural language processingeducation

Record type:

software
Creator:
old
Host:
Open source project to help people learn African languages # What's this about?? A few years back a project called Multi-Lingual Fam was launched with the goal of increasing awareness and promoting the use of African Languages amongst students at the University of Cape Town. This was achieved by putting up a new poster every day which contained a word with phrases demonstrating its use together with an English translation, as well as an interactive component. Click here if you would like to see the posters we made. During the course of the campaign we realised that people where more likely to remember the phrase if they were in a context where they could use the word/phrase shortly after learning it. For example: at a bus stop a word in isiXhosa like "Uyaphi?", meaning "where are you going?", would have a high chance of being used and remembered. Based on this insight, I started thinking... what if there was an app that could recommend words and phrases given a user's current location... The idea remained dormant until now! This project will always be open source and will be a good place to find sample code for building features into your own app. If you feel passionate about preserving African languages and culture or just want to help out please do get in touch. We have a totally open door policy. Anyone who helps will be acknowledge as a team member in the app. ### Sister Repo The accompanying Android app repo can be found here # "Steal-able Code" - Project structure --> best practices were implemented to the best of our abilities - Cloud Function (**CF**) which can be triggered from a device/client (`onCall()`) - **sendNotification** to users (and an **addToken** CF which stores a user's unique device token when called) - Storing data in the Realtime Database from a CF. # Architecture Since a typed languages generally don't mess your sanity as much as others we decided to go with **TypeScript** - `interfaces` are equivalent to Plain Old Java Objects (POJOs) aka data models - Declaring that something is a specific t …