👋🏽 Hello from OSlash

Read all about who we are, what we're like, and what kind of problems we're aiming to solve here — https://osl.sh/we

Original job listing — https://osl.sh/jobs

🧐 Wait, what's OSlash?

A browser-based productivity tool to find links that are relevant to you, faster!

o/standup → Takes you to Zoom/Google Meet company standup.

o/issue/145 → Go to the exact JIRA Issue.

o/payroll → Will find your payslip from your current HRMS System.


📓 Problem statement

The 🥇 primary goal of this assignment is to build a barebones clone of the OSlash app backend —

  1. The backend will be an API server (can be gRPC, GraphQL or REST) that is backed by a database.
  2. The database will hold all user accounts and shortcuts created by users.
  3. Every API (except login) will have to be authenticated.
  4. The APIs that will need to be built are –
    1. Login & logout.

    2. Create a shortcut – includes the fields shortlink (string), description (string), the full url (string) and tags (multiple strings).

      If you haven't tried out our app yet, please do. It will help you understand these fields better.

      In short, OSlash helps you create "shortcuts" for URLs – for example, the shortcut o/assignment can take you to this document. Here, the shortlink is assignment and url is https://www.notion.so/getoslash/OSlash-Backend-Engineering-Assignment-OSlash-Clone-6a72b110f7c24b8f928138a9a8ed0ee5

    3. List all shortcuts for the authenticated user (along with all the above fields).

    4. Delete a shortcut.

    5. Search a shortcut using strings matched with shortlink , description and tags fields.

The 🥈 secondary goal of this assignment is to document this app's design –

  1. The kind of API chosen, and why, and how it compares with other popular solutions.
  2. The kind of authentication mechanism chosen, and why.
  3. The database chosen, and why (including performance considerations).
  4. Table(s) design.

🛠 Technology stack

🍪 Bonus points

Bonus points if your solution includes any of these —

⛳️ Expectations

The most important things we look for in your solution are —