FluentEdge is a cross-platform, AI-powered English learning app that helps users improve their typing and speaking skills with real-time evaluations, progress tracking, and personalized AI feedback. Built with Flutter for a fluid, responsive frontend and NestJS for a scalable backend, FluentEdge delivers a seamless learning experience on web, mobile, and desktop.
-
🔑 Authentication: Secure email-password login & Google Sign-In via Firebase.
-
📊 Dashboard: Performance overview – typing speed (WPM), accuracy, speaking scores, test history.
-
⌨️ Typing Practice:
- Timed typing tests with real-time evaluation.
- Results include WPM, CPM, accuracy, mistakes, score, and AI suggestions.
- Charts to track progress over time.
-
🎤 Speaking Practice:
- Timed prompts with voice recording.
- AI evaluation of fluency, grammar, pronunciation, and vocabulary.
- Dashboard with progress charts and detailed transcripts.
-
🤖 AI-Powered Feedback:
- Groq Cloud API for typing evaluations.
- Whisper Large v3 for speech-to-text transcription and pronunciation scoring.
-
🛡️ Secure & Scalable: Built with NestJS, Prisma ORM, and NeonDB for reliability.
- Frontend: Flutter (Dart), Firebase SDK (multi-platform)
- Backend: NestJS (TypeScript)
- Database: PostgreSQL (NeonDB) with Prisma ORM
- Authentication: Firebase (Email & Google Sign-In)
- AI Models: Groq Cloud API (text evaluation), Whisper Large v3 (speech transcription)
- Hosting/Deployment: Flexible for mobile/web/desktop builds
- Git
- Node.js & npm/yarn (for backend)
- Flutter SDK & Dart (for frontend)
- PostgreSQL/NeonDB instance
- Firebase project (for auth & config)
git clone https://github.com/glenjaysondmello/FluentEdge.git
cd FluentEdge
cd nest_backend
npm install
npm run start:dev
Backend will run at: http://localhost:3000
PORT=3000
DATABASE_URL=postgresql://user:password@localhost:5432/fluentedge
MONGO_URI=""
GROQ_API_KEY=""
📌 Place serviceAccountKey.json
in the backend root for Firebase Admin SDK authentication.
Used in firebase.service.ts
:
import * as admin from 'firebase-admin';
import * as path from 'path';
import { readFileSync } from 'fs';
const serviceAccountPath = path.resolve(process.cwd(), 'serviceAccountKey.json');
const serviceAccount = JSON.parse(readFileSync(serviceAccountPath, 'utf8'));
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
});
export default admin;
cd ../flutter_frontend
flutter pub get
flutter run
Firebase integration will generate firebase_options.dart
during setup. This file must be included in the Flutter project for Firebase services to work.
- Start a new timed test.
- View results: WPM, accuracy, mistakes, and AI feedback.
- Track typing progress with history charts.
- Record answers to prompts.
- Receive AI-driven evaluation of fluency, grammar, and pronunciation.
- Track speaking progress over time.
- See overall performance.
- Access recent tests and progress trends.
-
⭐ Phase 1.0 (Current):
- Secure auth (Firebase)
- Typing & speaking practice with AI feedback
- Dashboard & progress tracking
-
🚀 Phase 1.1 (Upcoming):
- Role-based access & advanced user profiles
- Third-party integrations (payments, external APIs)
- Enhanced performance for large datasets
- Comprehensive test coverage
-
💡 Future Vision:
- Desktop builds for Windows, macOS, Linux
- Real-time collaboration & AI tutors
- AI/ML personalization for lessons
- Community-driven plugin ecosystem
-
Fork repo & create a feature branch:
git checkout -b feature/my-feature
-
Follow coding standards:
- Frontend: Dart style guide (
flutter format .
) - Backend: ESLint + Prettier (
npm run format
)
- Frontend: Dart style guide (
-
Use conventional commits (e.g.,
feat: add speaking dashboard
). -
Write unit/integration tests:
- Backend →
npm test
- Frontend →
flutter test
- Backend →
-
Submit PR with clear description & references.
This project is licensed under the MIT License.
Author: Glen Jayson Dmello 📩 Email: glendmello04@gmail.com
🚀 FluentEdge – Empowering learners with AI to improve typing, fluency, and pronunciation in English.