ashwinexe / backend-engineering-octernship

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Houseware

Company information

Houseware's vision is to empower the next generation of knowledge workers by putting the data warehouse in their hands, in the language they speak. Houseware is purpose-built for the Data Cloud’s untouched creators, empowering internal apps across organizations.

Why participate in an Octernship with Houseware

Houseware is changing the way the data warehouse is leveraged, and we want you to help build Houseware! Our team came together to answer the singular question, "how can we flip the value of the data warehouse to the ones who really need it, to the ones who drive decisions".

In this role, you'll have the opportunity to work as a Backend engineer with the Houseware team on multiple customer-facing projects, the role being intensive in technical architecture and backend engineering. The ability to have a constant pulse on the engineering team’s shipping velocity, while accounting for stability and technical debt looking forward is crucial.

Octernship role description

We're looking for backend developers to join the Houseware team.

We are hell-bent on building a forward-looking product, something that constantly pushes us to think by first principles and question assumptions, building a team that is agile in adapting and ever curious. While fast-paced execution is one of the prerequisites in this role, equally important is the ability to pause and take stock of where product/engineering is heading from a long-term perspective. Your initiative is another thing that we would expect to shine through here, as you continuously navigate through ambiguous waters while working with vigor on open-ended questions - all to solve problems for and empathize with the end users.

You are expected to own the backend and infrastructure stack end-to-end, understand the business use cases, map it to the best-in-class engineering systems while maintaining a great developer experience. This role involves a high level of attention to detail, debugging and testing skills, as well as long-term thinking with respect to the scalability of our platform.

Octernship info Timelines and Stipend
Assignment Deadline 26 March 2023
Octernship Duration 3-6 Months
Monthly Stipend $600 USD

Recommended qualifications

You’d be a great fit if:

  • You’re proficient in Golang and Python, having prior experience building backend systems and hands-on experience with AWS/GCP.
  • You’re familiar with the modern data stack and have a good understanding of Infrastructure-as-code tooling like Terraform.
  • Plus Points if you’re a contributor to open-source, we’d love to see your work!

Eligibility

To participate, you must be:

  • A verified student on Global Campus

  • 18 years or older

  • Active contributor on GitHub (monthly)

Assignment

Implement an Authorization+Authentication service in Golang

Task instructions

The assignment is to create a backend API service in Golang that handles authorization and authentication for a web app. The details of the web app are as follows:

  • A simple web app where users in an organization can signin and list all other users in their organization
  • Logging in is performed by supplying a username, password combination
  • Note that all passwords should be hashed when stored in a database for security purposes
  • For simplicity, assume that the existing users have already been registered and we are not concerned about a user registration flow here.
  • The user should be logged in with a JWT token, that refreshes every one hour.
  • The user should be able to logout as well.
  • There are admin privileges assigned to a few users, which gives them the ability to add new user accounts or delete existing user accounts from their organization.
  • All non-admin users should be able to see other user accounts but shouldn't be able to add/delete any user accounts.
  • Note that any user shouldn't be able to view/add/delete user accounts into any other organization.

The API should follow REST API conventions, feel free to design the API structure as you may. The API should cover the following functionalities:

  • User Login
  • User Logout
  • Admin User adds a new User account(by providing the username & password)
  • Admin User deletes an existing User account from their organization
  • List all Users in their organization

Note: Do add unit tests(for success & failure) for each API endpoint.

Provided in this Github template is a Golang Standard repository, you'd have to design an ideal architecture/stack for this problem

  • Golang framework for this API
  • Which Database shall be used to store the user details?
  • The ORM that shall be used for interfacing with the Database
  • DB design

Do document the design decisions and the rationale behind the same in a README file.

Task Expectations

  • Instructions in the Readme to setup the API & the relevant database
  • Postman/Swagger/OpenAPI spec so that the APIs can be tested
  • The task will be evaluated on the: fulfillment of the requirements and correctness of the API responses, in addition to the simplicity & architecture of the solution

Task submission

Students are expected to use the GitHub Flow when working on their project.

  1. Using GitHub Classroom to make submissions

  2. Opening a Pull Request for review

  3. Using GitHub Discussions to ask any relevant questions regarding the project

About


Languages

Language:Go 100.0%