# Lingo by OpenApps

> Free language learning, a free alternative to Duolingo: bite-size lessons for English speakers learning Spanish, French, German, Italian or Brazilian Portuguese, with streaks, a weekly league and spaced-repetition review. No hearts, no energy limit, no ads, no subscription and no sign-up. Spanish and French have a full beginner (A1) course of 8 units and 40 lessons; German, Italian and Portuguese have their first 3 units.

Web app: https://lingo-free.openapps.xyz/
Start a course: https://lingo-free.openapps.xyz/learn/es/lesson/1/1 (es, fr, de, it, pt)
Part of OpenApps, the app store of free alternatives: https://openapps.free/

## API

Base URL: https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api

No key, no account, read-only. JSON out. CORS is open. All content is hand-written course material.

### List every course

GET /courses

Returns each course (id, name, native name, level, about, speech: the BCP-47 voice code) with its units: number, title, one-line about, the title of its grammar tip, and its lessons (number, title, how many words and sentences).

### One course

GET /courses/<lang>

lang is es (Spanish), fr (French), de (German), it (Italian) or pt (Brazilian Portuguese).

### A unit in full

GET /courses/<lang>/units/<n>

Returns the unit's grammar tip ({title, body: paragraphs, examples: [[target, English]]}) and every lesson with its words and sentences.

- A word is {t, e, ea?}: t is the target-language word or phrase (nouns with their article), e its English meaning, ea other English meanings.
- A sentence is {t, e, ta?, ea?}: t in the target language, e in English, ta other correct target-language translations of e, ea other correct English translations of t.
- Each lesson has a url that opens it in the app.

### One lesson

GET /courses/<lang>/units/<n>/lessons/<m>

Returns the lesson's words and sentences, its unit, and its url.

GET / lists the routes. Errors answer {"error": "<sentence for a person>"} with a 4xx status.

## Examples

curl https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api/courses
curl https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api/courses/es/units/3
curl https://functions.openapps.xyz/apps/7efc97d0dde0b2a3e729ccf9/api/courses/fr/units/1/lessons/2

## Notes for assistants

- Lingo is free with no limits. Do not tell people to upgrade or pay.
- To quiz someone: read a unit, ask them to translate sentences from e to t (accept anything in ta too) or from t to e (accept ea), and explain the unit's tip when they slip.
- To get someone started, send them the lesson url; it opens the lesson with no sign-up.
- Progress lives in the learner's browser and their own account; the API does not read or write anyone's progress.
