Welcome! This is a small full-stack application used in our engineering interview process. It simulates a simplified care coordination tool — a platform where care coordinators manage tasks on behalf of patients and their families.
- Displays a list of patients
- Each patient has a set of care tasks (medical appointments, insurance claims, legal documents, etc.)
- Each patient has a small care team (family members, coordinators, nurses)
- Tasks can be created, updated, and filtered by status
The backend is Django + Django REST Framework serving a JSON API. The frontend is React (Create React App). Data is stored in SQLite.
Prerequisites: Python 3.10–3.13, Node.js 18+, npm
Version pins are in .tool-versions (asdf/mise), .python-version (pyenv), and .nvmrc (nvm). make setup will abort early with a clear message if your Python is outside the supported range.
# 1. Set up everything (backend venv, frontend deps, DB, seed data)
make setup
# 2. Start the backend (in one terminal)
make backend
# API runs at http://localhost:8000/api/
# 3. Start the frontend (in a second terminal)
make frontend
# App runs at http://localhost:3000If the default python3 on your PATH is outside the supported range, override it: make setup PYTHON=/opt/homebrew/bin/python3.12.
Other commands:
make test # Run backend tests
make reset # Drop DB, re-migrate, re-seed
make clean # Remove venv, node_modules, DB| Method | Endpoint | Description |
|---|---|---|
| GET | /api/patients/ |
List all patients |
| GET | /api/patients/:id/ |
Patient detail + tasks |
| GET | /api/tasks/ |
List tasks (filterable) |
| POST | /api/tasks/ |
Create a task |
| PATCH | /api/tasks/:id/ |
Update a task |
| DELETE | /api/tasks/:id/ |
Delete a task |
Task filters: ?patient=1, ?status=pending
backend/
coordinator/ # Django project (settings, urls)
tasks/ # Django app (models, views, serializers, tests)
seed_data.py # Sample data loader
frontend/
src/
api.js # API client functions
App.js # Routes and layout
components/
PatientList.js # Patient list page
PatientDetail.js # Patient detail with tasks + care team
TaskCard.js # Individual task display
TaskForm.js # New task form
StatusBadge.js # Status pill component
Your interviewer will share the exercise prompt with you at the start of the session. Take a few minutes to read through the codebase before starting — it's small enough to understand quickly.
You are welcome to use any tools you normally use when coding, including AI assistants, documentation, etc.
- Auth is deliberately omitted to keep things simple. Pretend you're a logged-in coordinator.
- The database is SQLite — no database server needed.
- The seed data creates 3 patients with realistic tasks. Run
make resetto restore it. - The codebase is intentionally "real-world imperfect" — not everything is pristine, and that's on purpose.