Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

184 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slingo logo

Slingo

Learn a language in the time you'd spend scrolling.

Expo 56 React Native TypeScript Supabase MIT License

Slingo is a mobile-first language-learning app that turns short-form videos into interactive lessons. Learners scroll through authentic content, follow subtitles synchronized to the audio, and tap unfamiliar words for contextual definitions, translations, and pronunciation, all without leaving the video.

Slingo lesson feed with interactive subtitles   Contextual word insight in a Slingo lesson   Saved vocabulary in Slingo   Friends and social connections in Slingo

Why Slingo?

Traditional language-learning tools often require dedicated study time and can begin to feel like homework. Authentic media is more engaging, but it is frequently too fast, difficult, or time-consuming for learners to use effectively.

Slingo bridges that gap by placing lightweight learning tools inside a familiar vertical-video experience. It makes native content understandable in the short moments people already spend scrolling.

Features

  • Interactive video lessons with a familiar, gesture-driven vertical feed.
  • Synchronized subtitles split into tappable words and timed sentence-by-sentence.
  • Contextual vocabulary insights including definitions, grammatical roles, translations, and pronunciation.
  • Vocabulary bookmarks with search, source sentences, and a direct link back to the relevant moment in a lesson.
  • Personal learning controls for language, CEFR level, topic, and subtitle size.
  • Social learning through profiles, friends, notifications, lesson sharing, and deep links.

How it works

  1. Watch: Slingo loads lessons suited to the learner's selected language, level, and topics.
  2. Explore: Tapping a subtitle pauses the lesson and reveals the word's meaning, role, pronunciation, and optional sentence translation.
  3. Keep learning: Words can be bookmarked for later, while lessons can be searched, revisited, or shared with friends.

Architecture

Slingo system architecture

The Expo application communicates directly with Supabase for authentication, lesson data, profiles, bookmarks, friendships, shares, and notifications. PostgreSQL row-level security keeps user-owned data isolated, while Supabase Storage hosts application media. Pronunciation audio is provided through Google Text-to-Speech.

A separate FastAPI service handles protected administrator uploads and prepares each video before it reaches the learning feed.

AI content pipeline

Slingo AI content-processing pipeline

The ingestion pipeline extracts audio with FFmpeg, generates timestamped transcription and translation with Whisper, and analyzes each word using spaCy. Qwen produces or matches contextual definitions and vocabulary senses before the resulting videos, sentences, tokens, and language metadata are stored in Supabase.

Technology

Area Technologies
Mobile React Native, Expo 56, Expo Router
Language and UI TypeScript, NativeWind, Reanimated, Zustand
Backend FastAPI, Python 3.11+
Data platform Supabase Auth, PostgreSQL, Storage, Realtime, RLS
Schema Drizzle ORM
AI and language Whisper, spaCy, Qwen 2.5, Google TTS

Getting started

Mobile app

Expo SDK 56 requires Node.js 20.19 or newer. You will also need access to a configured Supabase project.

git clone https://github.com/slingo-drp/slingo.git
cd slingo
npm install
cp .env.example .env

Configure the values in .env:

EXPO_PUBLIC_SUPABASE_URL=
EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY=
DATABASE_URL=
EXPO_PUBLIC_WEB_SERVER_HOST=
EXPO_PUBLIC_WEB_SERVER_URL=

Apply the Drizzle schema when provisioning the database, then start Expo:

npx drizzle-kit push
npm start

From the Expo terminal, open the project in a development build, Android emulator, or iOS simulator. See the Expo SDK 56 documentation for platform requirements.

Video-ingestion service

The content pipeline requires Python 3.11+, FFmpeg, and sufficient local resources to run the Whisper and Qwen models.

cd backend
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
fastapi dev app/main.py

Backend secrets belong only in backend/.env; never expose the Supabase service-role key or administrator key to the mobile application.

Project structure

src/app/          Expo Router screens
src/components/   Video, subtitle, social, and shared UI
src/lib/          Supabase queries and application services
src/providers/    Authentication and shared application state
db/               Drizzle schema and row-level security policies
backend/          FastAPI API and AI ingestion pipeline
docs/images/      README visuals and architecture diagrams

Team

Ahmed Elsayed · Harvey Kong · Rodrigo Watanabe · Andy Chung

License

Slingo is available under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages