A mobile app that teaches people about African cultures, heritage and languages
AfroLingo
AfroLingo is a cross-platform (iOS/Android/Web) African language-learning app designed for micro-learning.
It combines structured lessons and progress tracking with real-time experiences (chat, presence, in-app notifications)
using Socket.IO, Postgres (Prisma), Redis, and Firebase Auth.
## Table of Contents
1. Introduction
2. About
3. Tech Stack
4. Features
5. Architecture
6. Screenshots
7. Quick Start
8. Snippets
9. Links
## Introduction
This repository contains both:
- **Client**: Expo + React Native app in the `Client/` directory.
- **Server**: Node.js (Express) API + Socket.IO realtime server in the `Server/` directory.
The client talks to the server over HTTP (REST endpoints under `/api`) and subscribes to realtime updates via Socket.IO.
## About
AfroLingo’s goal is to help learners reconnect with African languages and cultural context through:
- Bite-sized lessons and practice activities
- Progress + XP tracking
- Tutor discovery and 1:1 messaging (real-time)
- Community experiences (UI prototype demonstrating scalable feature structure)
This README is written to be useful in understanding how the project works.
## Tech Stack
- **Client**: React Native (Expo), Expo Router, TypeScript, Firebase (Auth), Socket.IO client
- **Server**: Node.js, Express, TypeScript, Socket.IO, Zod
- **Database**: PostgreSQL
- **ORM**: Prisma
- **Realtime infra**: Redis (presence, rate limiting, Socket.IO adapter)
## Features
### Learning + progress
1. Lessons / units / stories / grammar tips / practice activities
2. Progress tracking and XP/streak mechanics
### Onboarding + personalization
3. Onboarding flow and preference storage (theme + notification preferences)
### Tutors + 1:1 realtime chat
4. Tutor discovery served by the backend
5. 1:1 chat with persisted threads/messages in Postgres (Prisma)
6. Realtime delivery over Socket.IO with read/unread tracking
### Community (prototype UI)
7. A prototype-only Community tab implemented with * …