🚀 Python Developer Intern Task –
FastAPI Task Manager (With Basic
Frontend)
📌 Objective
Build a simple Task Manager Web Application consisting of:
● A FastAPI backend (REST API)
● A very basic frontend
This assignment evaluates:
● Python fundamentals
● REST API development
● Authentication (JWT)
● Database integration
● Basic frontend integration
● Code structure and clarity
Keep it simple, clean, and functional. We value clarity over complexity.
🧱 Part 1 – Backend (FastAPI)
✅ Core Features
1️⃣ Authentication
● User registration
● User login
● JWT-based authentication
● Password hashing (bcrypt)
2️⃣ Task Management
Authenticated users should be able to:
● Create a task
● View all their tasks
● View a specific task
● Mark a task as completed
● Delete a task
Users must only access their own tasks.
📂 Required Endpoints
Authentication
POST /register
POST /login
Tasks
POST /tasks
GET /tasks
GET /tasks/{id}
PUT /tasks/{id}
DELETE /tasks/{id}
🗄 Technical Requirements (Backend)
● Use FastAPI
● Use SQLite or PostgreSQL
● Use SQLAlchemy or SQLModel
● Use Pydantic models
● Proper HTTP status codes
● Proper error handling
● Clean folder structure (avoid everything in one file)
🎨 Part 2 – Basic Frontend (Simple UI)
Create a minimal frontend to allow easy testing.
You may use:
● Plain HTML + CSS + JavaScript
OR
● Simple React / [Link]
OR
● Jinja templates with FastAPI
Frontend Must Allow:
● User registration
● User login
● Create task
● View tasks
● Mark task completed
● Delete task
⚠️ UI design does NOT matter.
We are evaluating functionality, not design.
A simple page with forms and buttons is enough.
🌐 Deployment Requirement
✅ Mandatory Submission
You must submit:
1. Public GitHub repository link
2. Live deployment link (Render / Railway / Vercel preferred)
Deployment Guidelines:
● Full application must be accessible
● Frontend must connect to backend
● /docs endpoint must be accessible
● Environment variables properly configured
● Do NOT commit .env file
● Include .[Link]
📄 Repository Must Include
● [Link] with:
○ Project overview
○ Setup instructions
○ Environment variables
○ How to run locally
○ Deployment link
● [Link]
● Clean commit history (avoid single large commit)
Rules
● Pagination for tasks
● Filtering (?completed=true)
● Basic test cases (pytest)
● Dockerfile
● Responsive UI
● Proper separation of frontend and backend folders
● You can use AI
🚫 Important Rules
● Do NOT hardcode secrets
● Do NOT commit .env
● Do NOT submit ZIP files
● Do NOT share private repositories
🧪 How We Evaluate
We will evaluate based on:
● Code structure and organization
● Correct API behavior
● Authentication implementation
● Database design
● Frontend-backend integration
● Error handling
● README clarity
● Deployment functionality
We should be able to:
1. Open your hosted link
2. Register
3. Login
4. Create a task
5. Mark it completed
6. Delete it