Transaction Management Backend - Level 1

Your task is to build a backend app that fulfills the Transaction Management API and make the provided API tests pass.

Please agree with your hiring team regarding the tech stack choice.

Before you get started

If you run into a problem

Head over to our community on GitHub to get assistance.

Import a boilerplate project

We have created a set of boilerplate projects for different tech stacks to help you get started quicker.

To import a boilerplate project:

  1. Check out this list to pick a desired boilerplate and copy its name (e.g., backend-boilerplate-php-laravel).
  2. Go to the "Actions" tab of your GitHub repository and select the "Setup boilerplate" workflow in the left side panel.
  3. In the "Run workflow" dropdown, paste the previously copied boilerplate name along with the branch name where you want the boilerplate to be imported (e.g., implementation) and click the "Run workflow" button.
  4. After the workflow has finished, your selected boilerplate will be imported to the specified branch, and you can continue with your task there.
If you instead want to use a custom setup, complete the steps below to make the E2E tests run correctly.
  1. Update the apiUrl (where your backend runs) in cypress.json.
  2. Update the build and start scripts in package.json to respectively build and start your app.

Working in a Gitpod environment

If you prefer to avoid installing dependencies like Docker or npm on your local machine, Gitpod offers a handy solution. It provides free access to preconfigured, in-browser IDEs that are ready for immediate use.

To utilize this for your repository, here's what you need to do:

  1. Go to 'https://gitpod.io/#your-repo-url', replacing 'your-repo-url' with the actual URL of your repository. For instance, 'https://gitpod.io/#https://github.com/octocat/Hello-World'.
  2. Authenticate using your GitHub account.

By following these steps, you'll quickly find yourself in an environment tailored for your coding test.

Try running the API tests

Remotely on the GitHub Actions pipeline

Push your code to the new implementation branch (create it if it doesn't exist), which will trigger a new pipeline run that will run the tests.

Check the 'Actions' tab to see the historical runs.

Locally with Docker (Mac & Windows only)

Prerequisites

Run the tests

 docker run --add-host host.docker.internal:host-gateway -v $PWD:/e2e -w /e2e cypress/included:3.4.0

You can either use the console output or generated screenshots/videos (check the newly created files that appear after a test run) to troubleshoot the test results.

Locally with npm

Prerequisites

  1. Install node
  2. When in the project's root, run: sed 's/host.docker.internal/localhost/g' cypress.config.js > temp.js && mv temp.js cypress.config.js
  3. Start your app

Run the tests

 npm run test

You can either use the console output or generated screenshots/videos (check the newly created files that appear after a test run) to troubleshoot the test results.

What we expect from you

  1. Make the provided API tests pass.
  2. Keep server data in a SQLite database. We want to see how you design the database schema and SQL queries.
  3. Push your code to the new implementation branch. We encourage you to commit and push your changes regularly as it's a good way for you to showcase your thinking process.
  4. Create a new pull request, but please do not merge it.
  5. Document the tech decisions you've made by creating a new review on your PR (see how).
  6. Await further instructions from the hiring team.

Time estimate

Between 1-3 hours depending on your experience level + the time to set up the project/environment (go with one of the provided boilerplates to move quicker).

Also, there is no countdown. The estimate is for you to plan your time.


Authored by Alva Labs.