ASU Todo App is a full‑stack task management application that lets users register, sign in, and manage their personal task lists with priorities, deadlines, and labels. The app is built with a FastAPI backend (MongoDB persistence) and a Next.js + Tailwind CSS frontend.
- Backend: FastAPI, Beanie (ODM), MongoDB, Pydantic, Python 3.13
- Auth: OAuth2 (password), JWT via
python-jose, Passlib (bcrypt) - Frontend: Next.js (React), Tailwind CSS, Axios
- Runtime/Dev: Uvicorn, Node.js/npm
asu-todo-app/
back-end/ # FastAPI service
front-end/ # Next.js app
README.md # This file
- Python 3.13
- Node.js 18+ and npm
- A running MongoDB instance (local or remote)
Copy example env files and adjust as needed:
Backend (back-end/example.env → back-end/.env):
MONGODB_URI=mongodb://localhost:27017/SECRET_KEY=your-secret-keyACCESS_TOKEN_EXPIRE_MINUTES=30
Frontend (front-end/example.env → front-end/.env):
NEXT_PUBLIC_API_URL=http://localhost:8000
- Open a terminal in
back-end/ - (Optional) Create/activate a venv
- Install dependencies:
pip install -r requirements.txt
- Set environment variables (copy example.env → .env)
- Start FastAPI with Uvicorn:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
- API should be available at
http://localhost:8000and docs athttp://localhost:8000/docs.
- Open another terminal in
front-end/ - Install dependencies:
npm install
- Copy example.env → .env and ensure
NEXT_PUBLIC_API_URLpoints to the backend (defaulthttp://localhost:8000). - Start the dev server:
npm run dev
- Open
http://localhost:3000in the browser.
- User Management
- User registration with validation
- Login with JWT and protected routes
- Secure logout
- Task Management
- Create, view, update, delete tasks
- Required fields: title, optional description, priority (High/Medium/Low), deadline
- Toggle completion status
- Only the owner sees and mutates their tasks
- Labels
- Create/manage user labels (name, color)
- Assign multiple labels to tasks
- Filter tasks by selected labels
- Persistence
- Users, tasks, labels stored in MongoDB via Beanie ODM
- Additional task filters (status, priority) and sorting
- Task search by title/description
- Pagination and infinite scrolling
- Label statistics and task analytics
- Role-based admin operations and audit logs
npm run dev– start Next.js dev servernpm run build– build production bundlenpm run start– run production buildnpm run lint– lint the project
- If you see a white screen during development, try clearing
.next/and restartingnpm run dev. - Ensure the frontend
.envhasNEXT_PUBLIC_API_URLset and the backend is running.