We aim to extend an existing Django project that catalogs rock music. The project currently includes models for Artist, Album, and Track, along with Django Admin and a read-only REST API.
Your task is to implement a Playlist feature with backend functionality and a minimal frontend (Django templates/views).
Playlists should support CRUD operations, track ordering.
- Backend expertise in Django (models, business logic, admin, REST API using DRF)
- Frontend integration (Django templates, form views for playlist management)
Implement Create, Read, Update, and Delete functionality for playlists.
Each playlist must have:
uuid(unique identifier)name0 or more orderable tracks
- Allow users to change the order of tracks in a playlist.
- Prevent duplicate tracks in a playlist.
- Limit playlists to a maximum of 100 tracks.
- Validate that a track belongs to the album’s artist.
- Extend admin to support browsing and managing playlists.
- Implement CRUD endpoints for playlists and playlist tracks.
- Ensure ordering, validation, and rules are enforced at the API level.
- Use proper HTTP status codes and error handling.
- Provide Django form views and templates to view, create, and edit playlists.
- Use Django forms for validation and error handling.
- Keep the frontend minimal but user-friendly.
Cover CRUD and business rule edge cases, including:
- Duplicate tracks
- Playlist size limits
- Reordering
- Invalid data
You can check your work at any time by running:
$ make readyThis will run the default code linters and the test suite. You can format your code to what the linters expect with:
$ make formatPlease ensure that there are no code format or lint errors.
When you have completed the goals then you can open a Pull Request to this main repository.
Log into the Django admin with your superuser account at:
Browse the REST API at: