AfriSoro is an African-focused Soroban learning and mental arithmetic platform designed to make mathematics more engaging, practical, and culturally relevant for African learners.
# AfriSoro — African Soroban Learning Platform
AfriSoro combines the traditional Japanese Soroban abacus with African market contexts to teach mental mathematics through culturally relevant scenarios.
## Features
- 🧮 **Interactive Soroban Engine** — Digital abacus with bead manipulation
- 🌍 **African Scenarios** — Market, agriculture, transport, household contexts
- 🎮 **Gamification** — XP, levels, badges, streaks
- 📊 **Adaptive Learning** — Difficulty adjusts based on performance
- 🏆 **Progress Tracking** — Analytics for students and teachers
- 💱 **Multi-Currency** — Nigeria (₦), Ghana (₵), Kenya (KSh), and more
## Tech Stack
- **Frontend:** Next.js 14, React, TypeScript, Tailwind CSS, Framer Motion
- **Backend:** Express.js, Node.js, TypeScript
- **Database:** PostgreSQL with Prisma ORM
- **Authentication:** JWT tokens
## Getting Started
### Prerequisites
- Node.js 18+ and npm
- PostgreSQL database
### Installation
```bash
# Install Node.js from
nodejs.org (if not already installed)
# Navigate to project
cd afrisoro
# Install all dependencies (root + frontend + backend)
npm run install:all
# Set up backend environment
cd backend
cp .env.example .env
# Edit .env with your DATABASE_URL and JWT_SECRET
# Initialize database
npm run db:push
npm run db:generate
npm run db:seed
# Set up frontend environment
cd ../frontend
cp .env.example .env
# Edit .env with NEXT_PUBLIC_API_URL (default:
localhost)
# Run both frontend and backend
cd ..
npm run dev
```
**Frontend:**
localhost
**Backend API:**
localhost
## Project Structure
```
afrisoro/
├── backend/ # Express.js API server
│ ├── prisma/
│ │ ├── schema.prisma # Database schema
│ │ └── seed.ts # Seed data
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Auth middleware
│ │ ├── lib/ # Utilities (prisma, jwt, scenarios, adaptive, gamification)
│ │ └── server.ts # Expres …