Coder Social home page Coder Social logo

backend-coding-challenge-django's Introduction

Backend Coding Challenge

Build Status

We appreciate you taking the time to participate and submit a coding challenge. In the next step we would like you to create/extend a backend REST API for a simple note-taking app. Below you will find a list of tasks and limitations required for completing the challenge.

Application:

  • Users can add, delete and modify their notes
  • Users can see a list of all their notes
  • Users can filter their notes via tags
  • Users must be logged in, in order to view/add/delete/etc. their notes

The notes are plain text and should contain:

  • Title
  • Body
  • Tags

Optional Features ๐Ÿš€

  • Search contents of notes with keywords
  • Notes can be either public or private
    • Public notes can be viewed without authentication, however they cannot be modified
  • User management API to create new users

Limitations:

  • use Python / Django
  • test accordingly

What if I don't finish?

Try to produce something that is at least minimally functional. Part of the exercise is to see what you prioritize first when you have a limited amount of time. For any unfinished tasks, please do add TODO comments to your code with a short explanation. You will be given an opportunity later to go into more detail and explain how you would go about finishing those tasks.

Summary and Next Steps:

  • Added notes CRUD implementation:
    • Users can add, delete and modify their notes (only if authenticated and authorized).
    • Users can see a list of all their notes and all public notes.
    • Users can filter their notes via tags (via tag title or tag id).
    • Users can search contents of notes (title and body) with keywords.
  • Added User registration endpoint along with an endpoint for getting a token.
  • Swagger docs can be accessed at 0.0.0.0:8000/docs
  • Some things to consider:
    • Discuss team style/code guide for a more opinionated approach (e.g. ViewSets vs other Generics, service layer vs custom Managers/QuerySets, unittest vs pytest etc.).
    • Move to JWT from DRF's simple token authentication scheme.
    • Use inverted index approach like Elasticsearch, if real time notes search results are needed.
    • Depending on priority, access patterns, usage, some things could be changed:
      • API design could be revisited. For example: nested writes for related objects vs separate endpoint.
      • Adding indexes, cache layer etc.

backend-coding-challenge-django's People

Contributors

dependabot[bot] avatar hopeman15 avatar pcrock-thmdo avatar pcrockett avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.