A Django REST Framework (DRF) based backend for tracking user activities with statuses and metadata.
- Token or Basic authentication support (default: BasicAuth)
- Filterable logs by status, user, or action
- Separate endpoint for status-only updates
- Django admin and browsable API
- Swagger UI for documentation
- Test coverage for models and views
-
git clone https://github.com/jisan09/activity-tracker.git cd activity-tracker -
python3 -m venv .venv source .venv/bin/activate -
pip install -r requirements.txt
-
python manage.py migrate
-
python manage.py createsuperuser
-
python manage.py runserver
-
python manage.py seed_activity
python manage.py test --keepdb
-
Swagger UI: http://127.0.0.1:8000/swagger/
-
Django Admin: http://127.0.0.1:8000/admin/
-
# Sample credenatials for the DB (shared on mail) data - userID= mdjisan - password= Jisan123
activity_tracker/
โโโ apps
โ โโโ __init__.py
โ โโโ activity
โ โโโ __init__.py
โ โโโ admin.py
โ โโโ apps.py
โ โโโ filters.py
โ โโโ management
โ โ โโโ commands
โ โ โโโ seed_activity.py
โ โโโ migrations
โ โ โโโ 0001_initial.py
โ โ โโโ __init__.py
โ โโโ models.py
โ โโโ serializers.py
โ โโโ tests
โ โ โโโ __init__.py
โ โ โโโ test_model.py
โ โ โโโ test_view.py
โ โโโ tests.py
โ โโโ urls.py
โ โโโ views.py
โโโ core
โ โโโ __init__.py
โ โโโ settings.py
โ โโโ urls.py
โ โโโ wsgi.py
โโโ README.md
โโโ manage.py
โโโ requirements.txt
๐น Create a Log Entry
curl -su mdjisan:Jisan123 -X POST "http://127.0.0.1:8000/api/logs/" \
-H "Content-Type: application/json" \
-d '{
"action": "UPLOAD_FILE",
"status": "PENDING",
"metadata": {
"filename": "sample.txt"
}
}' | python3 -m json.tool๐น List All Logs
curl -su mdjisan:Jisan123 "http://127.0.0.1:8000/api/logs/" | python3 -m json.tool๐น Filter Logs by Status
curl -su mdjisan:Jisan123 "http://127.0.0.1:8000/api/logs/?status=PENDING" | python3 -m json.tool๐น Filter Logs by User
curl -su mdjisan:Jisan123 "http://127.0.0.1:8000/api/logs/?user_id=2" | python3 -m json.tool๐น Retrieve Log by ID
curl -su mdjisan:Jisan123 "http://127.0.0.1:8000/api/logs/20/" | python3 -m json.tool๐น Update Log (PUT)
curl -su mdjisan:Jisan123 -X PUT "http://127.0.0.1:8000/api/logs/20/" \
-H "Content-Type: application/json" \
-d '{
"action": "UPLOAD_FILE",
"status": "DONE",
"metadata": {
"filename": "updated.txt"
}
}' | python3 -m json.tool๐น Update Status Only (PATCH)
curl -su mdjisan:Jisan123 -X PATCH "http://127.0.0.1:8000/api/logs/20/update-status/" \
-H "Content-Type: application/json" \
-d '{
"status": "IN_PROGRESS"
}' | python3 -m json.tool๐น Delete Log
curl -su mdjisan:Jisan123 -X DELETE "http://127.0.0.1:8000/api/logs/33/" | python3 -m json.tool