Learn French by doing what matters.
Volingi connects volunteers learning French with nonprofits that need skilled help — turning real conversations into real progress.
Volingi is a Progressive Web Application (PWA) that addresses a critical gap in language learning: the lack of authentic, practical application opportunities.
With 1.5 billion people actively learning languages and 80% abandoning within the first year, Volingi creates a dual-sided marketplace connecting volunteers seeking French immersion with French nonprofits that need skilled help.
Unlike traditional language apps that rely on artificial scenarios, Volingi enables conversational fluency faster by embedding language learning into meaningful volunteer work where communication is immediately necessary and rewarding.
| Feature | Description |
|---|---|
| 🎯 Smart Matching | Personalized project recommendations based on skills, CEFR level & location |
| 📊 Progress Tracking | Visualize French improvement with CEFR level progression (A1 → C2) |
| 🌐 Real-world Immersion | Translate phrases on the fly and log vocabulary from actual conversations |
| 👥 Community Feed | Connect with other volunteers and celebrate achievements |
| Feature | Description |
|---|---|
| 📋 Project Management | Create and manage volunteer opportunities with specific skill & language requirements |
| 🤝 Auto Matching | Receive qualified volunteer recommendations automatically |
| 📅 Scheduling | Manage volunteer assignments and track project progress |
| 📈 Impact Metrics | Measure volunteer engagement and project outcomes |
Frontend Next.js 16 · React 19 · TypeScript 5 · Tailwind CSS
Backend Supabase (PostgreSQL · Auth · Realtime · Storage)
Infrastructure AWS (EC2/ECS · S3 · CloudFront) · Docker
APIs Google Maps · Google Cloud Translation / DeepL
Payments Stripe
Testing Jest · fast-check · Playwright
┌─────────────────────────────────────────┐
│ PWA Client (Next.js) │
│ - Server Components & App Router │
│ - Tailwind CSS + Responsive Design │
└──────────────────┬──────────────────────┘
│
┌──────────────────▼──────────────────────┐
│ API Layer │
│ (Next.js API Routes) │
└──┬──────────┬──────────┬───────────┬───┘
│ │ │ │
┌──▼──┐ ┌───▼───┐ ┌───▼───┐ ┌───▼────┐
│Supa │ │Match │ │Trans- │ │Progress│
│base │ │Engine │ │lation │ │Tracker │
│Auth │ │ │ │API │ │ │
└─────┘ └───────┘ └───────┘ └────────┘
Volunteer Profile
- Name, Age, Location (with coordinates)
- French language level (CEFR: A1–C2)
- Other languages spoken
- Professional skills and experience
- Availability and preferences
Nonprofit Profile
- Business name, website, contact
- Location & organization type
- Verification status
Project
- Title, description, scope
- Required skills and language level
- Duration, schedule, location
- Preparation materials
Assignment
- Volunteer–project pairing
- Status:
pending → active → completed - Match score & reasons, feedback & ratings
Progress Record
- CEFR level progression
- Vocabulary mastery
- Session hours, quality & assessment scores
| Metric | Target |
|---|---|
| Volunteer engagement | 70% complete ≥1 assignment in first 3 months |
| Language progression | +1.5 CEFR sub-levels in 6 months |
| Monthly active retention | 10% |
| Net Promoter Score | > 50 |
- Node.js 20 LTS or higher
- npm or yarn
- Supabase account
# Clone the repository
git clone https://github.com/ArthSogh/Volingi.git
cd Volingi
# Install dependencies
npm install
# Set up environment variables
cp .env.local.example .env.local
# Edit .env.local with your API keys
# Run database migrations
npm run db:migrate
# Start development server
npm run devVisit http://localhost:3000 🚀
# Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# Maps API
NEXT_PUBLIC_MAPS_API_KEY=your_maps_api_key
# Translation API
TRANSLATION_API_KEY=your_translation_api_key
# Stripe
STRIPE_SECRET_KEY=your_stripe_secret_key
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_keynpm test # Unit tests
npm run test:property # Property-based tests
npm run test:integration # Integration tests
npm run test:e2e # End-to-end tests (Playwright)
npm run test:coverage # Coverage report# Build for production
npm run build
# Docker
docker-compose up --build
# Deploy to AWS
npm run deploy:production- User registration and authentication
- Profile creation for volunteers and nonprofits
- Basic matching algorithm
- Project listing and assignment
- Real-time translation during sessions
- CEFR progress tracking & level calculation
- Community feed and social features
- Mobile app optimization
- Advanced matching with ML
- Multi-language support
- Enterprise tier features
- Third-party API integrations
- Expand to Belgium, Switzerland, Canada
- Additional language learning paths
- Gamification and achievements
- Corporate volunteer programs
| Tier | Target | Price |
|---|---|---|
| Volunteer Premium | Individual learners | €12/month |
| Nonprofit | Organizations | €99/month |
| Enterprise | Corporate volunteer programs | €15–50K/year |
Market Opportunity: TAM €45B+ · SAM €3.2B · SOM €180M
- JWT authentication with secure token management
- Row-level security (RLS) policies via Supabase
- TLS 1.3 encryption for all data in transit
- Database encryption at rest
- GDPR compliant data handling
Contributions are welcome!
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.
Made with ❤️ for volunteers and nonprofits building a better world together