AI1220 Software, Web & Mobile Engineering — Assignment 2
A collaborative rich-text editor with JWT auth, role-based sharing, real-time editing (Yjs over WebSockets), and a streaming AI assistant (FastAPI + SSE, React + Vite).
All graded source, tests, and project documentation live under submission 2/.
| Path | Contents |
|---|---|
| submission 2/collabwrite/ | Application: backend/ (FastAPI), frontend/ (React), run.sh, Makefile, .env.example, pytest and Vitest tests |
| submission 2/diagrams/ | Architecture diagrams (Mermaid sources and rendered PDFs) |
| submission 2/README.md | Rubric mapping and submission notes |
| submission 2/collabwrite/scripts/make-team-zips.sh | Optional: per-member PR bundles into collabwrite/dist/ |
Inside collabwrite/, the canonical technical guide is README.md (setup, architecture, testing, deviations). Shorter entry points: ABSTRACT.md, SCOPE.md, DESIGN.md, DEVIATIONS.md, TEAM.md.
Prerequisites: Python 3.11+ (3.13 tested), Node.js for the frontend (see frontend/package.json engines if present).
cd "submission 2/collabwrite"
cp .env.example .env
# Edit .env locally; leave secrets out of git.
./run.sh- API and OpenAPI UI:
http://127.0.0.1:8000andhttp://127.0.0.1:8000/docs - Web app:
http://127.0.0.1:5173
From the same directory, make test runs backend (pytest) and frontend (Vitest) tests. make e2e runs Playwright (requires app running; see Makefile).
Publish the submission 2/collabwrite/ tree on a public Git repository and record the URL in submission 2/github_url.txt (and in the LMS if required). If the course asks for a zip, archive collabwrite/ and diagrams/ yourself and omit node_modules/, .venv/, and backend/.data/.
Course-specific cover sheets or declarations are outside this repo; follow the LMS instructions.
Produced for coursework at MBZUAI (AI1220). Reuse for learning is fine; cite the course if you fork publicly.