GitHub - samarthsinh2660/Fluentify-Backend: deploy

Fluentify Backend

AI-powered language learning platform backend built with Node.js, Express, and PostgreSQL.

๐Ÿš€ Quick Start with Docker

Prerequisites

Setup

  1. Clone the repository

    git clone <repository-url>
    cd Backend
  2. Start the application

    docker-compose up --build
  3. Access the application

That's it! The database will be automatically initialized with all tables.

๐Ÿ“ Environment Variables

All configuration is in the .env file:

DATABASE_URL=postgresql://postgres:postgres@postgres:5432/fluentify
PORT=5000
NODE_ENV=development
JWT_SECRET=<your-secret>
GEMINI_API_KEY=<your-api-key>

๐Ÿ› ๏ธ Development

Hot Reload

Code changes in the src/ directory are automatically detected and the server restarts.

View Logs

Stop Services

Reset Database

docker-compose down -v
docker-compose up --build

๐Ÿ“Š Database

PostgreSQL 16 is used with the following tables:

  • learners - User accounts
  • admins - Administrator accounts
  • learner_preferences - User language preferences
  • courses - Generated language courses (with JSONB data)
  • unit_progress - Progress tracking for units
  • lesson_progress - Progress tracking for lessons
  • exercise_attempts - Exercise completion tracking
  • user_stats - User XP and statistics

Tables are automatically created on first startup from src/database/01-tables.sql.

๐Ÿ”Œ API Endpoints

Authentication

  • POST /api/auth/signup/learner - Learner signup
  • POST /api/auth/signup/admin - Admin signup
  • POST /api/auth/login/learner - Learner login
  • POST /api/auth/login/admin - Admin login
  • GET /api/auth/profile - Get user profile

Preferences

  • POST /api/preferences/learner - Save preferences
  • GET /api/preferences/learner - Get preferences
  • PUT /api/preferences/learner - Update preferences
  • DELETE /api/preferences/learner - Delete preferences

Courses

  • POST /api/courses/generate - Generate new course
  • GET /api/courses - Get learner's courses
  • GET /api/courses/:courseId - Get course details
  • GET /api/courses/:courseId/lessons/:lessonId - Get lesson details
  • POST /api/courses/:courseId/lessons/:lessonId/complete - Complete lesson

Progress

  • GET /api/progress/courses - Get all courses
  • GET /api/progress/courses/:courseId - Get course progress
  • POST /api/progress/courses/:courseId/units/:unitId/lessons/:lessonId/complete - Mark lesson complete

User Management (Admin Only)

  • GET /api/admin/users/learners - Get all learners (with pagination & search)
  • GET /api/admin/users/learners/:learnerId - Get learner details with stats
  • PUT /api/admin/users/learners/:learnerId - Update learner (name, email)
  • PUT /api/admin/users/learners/:learnerId/password - Reset learner password
  • DELETE /api/admin/users/learners/:learnerId - Delete learner account
  • GET /api/admin/users/learners/:learnerId/courses - Get learner's courses

๐Ÿงช Testing

Test Gemini AI Integration

docker exec -it fluentify-backend npm run test-gemini

Access Backend Shell

docker exec -it fluentify-backend sh

Access Database Shell

docker exec -it fluentify-postgres psql -U postgres -d fluentify

# Once inside PostgreSQL shell:
\l              # List all databases
\dt             # List all tables
\d table_name   # Describe a table
SELECT * FROM learners;  # Query data
\q              # Exit

๐Ÿ—๏ธ Project Structure

Backend/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ config/           # Database configuration
โ”‚   โ”œโ”€โ”€ controllers/      # Request handlers (auth, courses, progress, userManagement)
โ”‚   โ”œโ”€โ”€ database/         # SQL schema files
โ”‚   โ”œโ”€โ”€ middlewares/      # Express middlewares (auth, error handling)
โ”‚   โ”œโ”€โ”€ repositories/     # Data access layer (data queries)
โ”‚   โ”œโ”€โ”€ routes/           # API routes (auth, courses, admin)
โ”‚   โ”œโ”€โ”€ services/         # Business logic (Gemini AI)
โ”‚   โ”œโ”€โ”€ utils/            # Utilities (JWT, errors, responses)
โ”‚   โ””โ”€โ”€ server.js         # Main application file
โ”œโ”€โ”€ docker-compose.yml    # Docker orchestration
โ”œโ”€โ”€ Dockerfile           # Docker image definition
โ”œโ”€โ”€ .env                 # Environment variables
โ””โ”€โ”€ package.json         # Dependencies

๐Ÿ”ง Tech Stack

  • Runtime: Node.js 22
  • Framework: Express.js
  • Database: PostgreSQL 16
  • AI: Google Gemini API
  • Authentication: JWT
  • Container: Docker & Docker Compose

๐Ÿ“š Features

  • ๐Ÿค– AI-powered course generation using Google Gemini
  • ๐Ÿ” JWT-based authentication
  • ๐Ÿ“Š Progress tracking with XP and streaks
  • ๐ŸŽฏ Unit and lesson management
  • ๐Ÿ“ˆ User statistics and achievements
  • ๐Ÿ‘ฅ Admin user management with CRUD operations
  • ๐Ÿ”” Toast notification system for better UX
  • ๐Ÿ”„ Hot-reload development environment

๐Ÿ› Troubleshooting

Services won't start?

docker-compose logs
docker-compose down
docker-compose build --no-cache
docker-compose up

Port already in use?

Change ports in docker-compose.yml:

ports:
  - "3000:5000"  # Change left side to different port

Database issues?

# Check database logs
docker-compose logs postgres

# Reset database
docker-compose down -v
docker-compose up --build

๐Ÿ“„ License

MIT

๐Ÿค Contributing

Pull requests are welcome!