Your task is to build a backend app that allows the recording of financial transactions and viewing the transaction history.
It should implement the Transaction Management API specification, which is defined in the Open API format.
You are free to use any Tech Stack of your choice but using Ruby is an added advantage.
- Do your best to make the provided E2E tests pass.
- Keep server data in a SQLite database. We want to see how you design the database schema and SQL queries.
- Avoid duplication and extract re-usable modules where it makes sense. We want to see your approach to creating a codebase that is easy to maintain.
- Unit test one module of choice. There is no need to test the whole app, as we only want to understand what you take into consideration when writing unit tests.
If you run into a problem
Navigate to our community on GitHub to get assistance.
Import a starter project
We have created a set of starter projects with different tech stacks to help you get started quickly.
To import a starter project:
- Go to the "Actions" tab of your GitHub repository and select the "Setup boilerplate" workflow in the left side panel.
- In the "Run workflow" dropdown, select the desired boilerplate along with the branch name where you want the boilerplate to be imported (e.g.,
implementation
) and click the "Run workflow" button (you can find all starter projects' definitions here).
After the workflow has finished, your selected boilerplate will be imported to the specified branch, and you can continue from there.
⚠️ Custom setupIf you instead want to set up a custom project, complete the steps below to make the E2E tests run correctly:
- Update the
baseUrl
(where your frontend runs) in cypress.config.js.- Update the
build
andstart
scripts in package.json to respectively build and start your app.
Prepare for coding
To get this repository to your local machine, clone it with git clone
.
Alternatively, spin up a pre-configured in-browser IDE by clicking on the "Code" tab in this repository and then "Create codespace on {branch_name}".
Running the E2E tests
⚠️ Before executing the tests, ensure Node is installed and your app is running.
npm install
npm run test
- Create a new
implementation
branch on this repository and push your code there. - Create a new pull request from
implementation
WITHOUT MERGING IT. - Indicate in your PR whether your tests are all passing or not (IMPORTANT).
- Indicate in your PR which module you have unit tested.
- Document the tech decisions you've made by creating a new review on your PR (see how).
- Await further instructions from the hiring team.
Between 2 - 3 hours + the time to set up the project/environment (we suggest importing one of the provided project starters to save time).
However, there is no countdown. The estimate is for you to plan your time. Keep in mind that how long you take to complete the assesment plays a part in your evaluation.
Authored by Alva Labs.