Technologies Used
Problem Statement & Business Logic
I enjoy the variety of different projects. If it is going to take months to build something I would rather have three or four different projects on the go than focus on just that one project for months.
The only issue with working on multiple projects is when I leave one project to work on another I can't always remember where I left off. So I needed a tracker that tells me what I have worked on and what needs to be worked on.
Technical Stack
Django
Django REST Framework
Tailwind CSS
MySQL - MariaDB
Architecture & Design Patterns
DRF (Django REST Framework) is used in this project to create a REST API for the project tracker application.
How DRF is Used in the Project
API Serializers: In projects/serializers.py, DRF serializers convert complex data types like Django model instances into JSON format for the API:
ProjectSerializer, TaskSerializer, and WorkSessionSerializer handle the conversion of model data
ViewSets: In projects/views.py, DRF ViewSets provide a simplified way to create CRUD operations:
ProjectViewSet, TaskViewSet, and WorkSessionViewSet handle API requests with minimal code
URL Routing: In projects/urls.py, DRF's router system automatically generates URLs for the API endpoints.
Key Features
- Track projects with status (active, paused, completed) and priority
- Manage tasks for each project
- Log work sessions to monitor time spent on projects
- Customizable site configuration including branding and social media
- REST API for integration with other systems
- Responsive UI using Tailwind CSS
Projects App
- Models for Projects, Tasks, and Work Sessions
- List and detail views for projects
- Status filtering and sorting
- REST API endpoints
Development Process
This project was quick to put together. I literally used cut and paste with the code provided by Claude. I did a vibe coding session with this project. There were things that had to be corrected but I managed to get everything done without having to start a new conversation.
It helped that I stuck to my Django project structure. I have a pdf version that I upload to the project knowledge area. Still, Claude didn't follow it 100% but I was there to remind it to stick to the structure when it went off course.
The application follows a clean Django project structure:
- `config/`: Main Django configuration (settings, urls, wsgi, asgi)
- `core/`: Shared functionality, homepage, and site-wide utilities
- `projects/`: Project management app with models and views
- `templates/`: Project-wide templates
- `static/`: Static files (CSS, JS, images)
- `media/`: User-uploaded content (project images, site branding)