Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Playlist #52

Open
wants to merge 25 commits into
base: main
Choose a base branch
from

Conversation

Itsamirmasoud
Copy link

@Itsamirmasoud Itsamirmasoud commented Dec 4, 2023

Introduction

Hi
This PR is my way of implementing the Playlist feature.
Based on the talks that I had with Edith, I stopped developing frontend parts and focused on backend entirely.
This was the first time for me coding with Python or Django so this might not be very elegant, but I think it does the job and demonstrates how I thought about this feature.

Notes

I started with a separate django application for Playlist and with a modular monolith architecture in mind. These days, I usually start new applications/projects in this way. This is because in my experience, modular monolith is a good balance between pragmatism and scalability and works for most of the scenarios that I had faced/seen.
But as moved forward, I saw and realized that Playlist and Track belong together when you look at it from a data perspective. This is a one strong indication for me when coding to realize if two features belong together or not. Here I decided to put the playlist feature in the same place as track(api).

This was just an intro to give you an insight into how I started thinking about this, as for how the rest of it went let's discuss in the interview :)

Last thing to mention is that I coded with a couple of rules in mind:

  • only add what is necessary, expand as the need and use cases appear
  • keep it simple
  • test what makes sense

Running the app

There are two additional migrations which adds some test data for playlist and a test user so that there is something to work with initially.
test user:

  • username: test
  • password: test

from there either use postman, django's own http client or any other http clients to make requests and interact with the api.

@Itsamirmasoud Itsamirmasoud changed the title Amirmasoud tech assignment feat: Playlist Dec 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant