IS 436 - Structured Systems Analysis and Design Team: Pahal Dave, Noor Qureshi, Coco Ni, Christian Gloria, Rithik Kavanakudy
FLUENT (Functional Language User Evaluation & Navigation Tool) is a web-based language learning platform built around real-world scenario-based practice. Users can browse scenarios in 9 languages, track lesson completions, and self-report confidence ratings.
Languages supported: Gujarati, Nepali, English, Chinese, Italian, Tagalog, Urdu, Spanish, Hindi
fluent/
├── docker-compose.yml ← spins up postgres + backend together
├── docker/
│ └── init.sql ← creates all tables + seeds data
├── backend/
│ ├── Dockerfile
│ ├── package.json
│ ├── server.js ← main express app
│ ├── db/
│ │ └── index.js ← postgres connection pool
│ └── routes/
│ ├── auth.js ← register / login
│ ├── languages.js ← get all languages
│ ├── scenarios.js ← get scenarios + vocab
│ ├── progress.js ← completions + confidence feedback
│ └── admin.js ← stats + content management
└── frontend/
├── index.html ← homepage
├── css/
│ └── style.css
├── js/
│ └── app.js ← shared JS (API calls, session, etc.)
└── pages/
├── login.html
├── register.html
├── languages.html ← browse scenarios by language
├── scenario.html ← individual scenario + vocab + feedback
├── progress.html ← user progress tracker
└── admin.html ← admin dashboard
Make sure Docker Desktop is open first!
# from the fluent/ root folder
docker-compose up --build
Then open your browser to: http://localhost:3000
# start just postgres
docker-compose up db
# in another terminal, go into the backend folder
cd backend
npm install
node server.js
Then open the frontend files directly in your browser (or use VS Code Live Server).
If your my_project_db container already exists with the schema from the screenshots, you can just run the backend locally:
# make sure your docker container is running
docker start my_project_db
# go into backend
cd backend
npm install
# set env variables (or just edit db/index.js directly)
DB_HOST=localhost DB_USER=student DB_PASSWORD=password DB_NAME=projectdb node server.js
| Method | Endpoint | What it does |
|---|---|---|
| POST | /api/auth/register |
Create new user account |
| POST | /api/auth/login |
Log in |
| GET | /api/languages |
Get all languages |
| GET | /api/scenarios |
Get all scenarios (optional: ?language_id=1) |
| GET | /api/scenarios/:id |
Get one scenario + its vocabulary |
| POST | /api/progress/complete |
Mark a scenario as complete |
| POST | /api/progress/feedback |
Submit confidence rating (1-5) |
| GET | /api/progress/:user_id |
Get user’s completed scenarios |
| GET | /api/admin/stats |
Usage stats for admin dashboard |
| POST | /api/admin/scenarios |
Add a new scenario |
| POST | /api/admin/vocabulary |
Add vocabulary to a scenario |