This is LiveLike's new-hire backend code assessment application.

Ben Wilber f503dbcf4f Adding more detailed assessment criteria 9 mesi fa
grunge f684f6cd15 testing 2 anni fa
.gitignore 79d60c7aab Initial commit 4 anni fa
Makefile 79d60c7aab Initial commit 4 anni fa
README.md f503dbcf4f Adding more detailed assessment criteria 9 mesi fa
manage.py 79d60c7aab Initial commit 4 anni fa
requirements.txt 8ac05a95a1 Update README and dependencies 2 anni fa
tox.ini 79d60c7aab Initial commit 4 anni fa

README.md

Grunge Rock Development Application

Overview

This Django project implements a catalogue of Grunge rock music. It has a fully-functional Django admin interface, and a read-only REST API. It contains three related data models:

  1. Artist
  2. Album
  3. Track

If you are applying for a Full Stack role, your submission should satisfy the Full Stack Candidate goals. Otherwise, your submission should satisfy the Backend Candidate goals.

Backend Candidate Goals

  • Implement the ability to fetch, create, update, and delete playlists through the REST API. A playlist should have a uuid, a name, and contain 0 or more tracks from this catalogue. The tracks should be orderable in the playlist.
  • Implement the test cases in tests/test_playlists.py. The goal is to have no skipped or failing tests.
  • Update the Django admin with the ability to browse and manage playlists.

Fullstack Candidate Goals

  • Implement the ability to fetch, create, update, and delete playlists using Django views and templates. A playlist should have a uuid, a name, and contain 0 or more tracks from this catalogue. The tracks should be orderable in the playlist.
  • Update the Django admin with the ability to browse and manage playlists.

Django Code Assessment Criteria

Used for Backend and Fullstack role code assessments.

  • Ability to run the project. Reviewers should be able to run the project locally using standard processes like manage.py or Foreman.
  • Tidiness of the source code repository. No stray files like logs, virtual environments, databases, etc.
  • Adherence to Python code style established by the community standards like PEP-8.
  • Conformance to the Django Architecture. Proper use of models, views, templates, and preferring features and utilities provided by Django rather than candidate rolling their own.
  • Cohesiveness of the project. No missing files, broken styles, stub features, etc.
  • Submission process adherence. Submission should be a pull request. Commits should be atomic with clear messages.

Developing

You can check your work at any time by running:

$ make ready

This will run the default code linters and the test suite. You can format your code to what the linters expect with:

$ make format

Please ensure that there are no code format or lint errors.

Getting started

Create an account

Create an account at https://code.livelike.com/user/sign_up

Fork this repository

When you have completed the goals then you can open a Pull Request to this main repository.

Set up a virtualenv

$ python3 -m venv venv
$ source venv/bin/activate

Install dependencies

$ pip install --upgrade pip wheel
$ pip install --requirement=requirements.txt

Initialize the development database

$ python manage.py migrate
$ python manage.py loaddata initial_data

Add a development superuser

$ python manage.py createsuperuser

Run the development server

$ python manage.py runserver

Log into the Django admin with your superuser account at:

http://localhost:8000/admin/

Browse the REST API at:

http://localhost:8000/api/v1/.