Take home test to join us 💜
Your mission, should you choose to accept it, is to create a dashboard-like user interface, where we can find:
- User's personal information
- First & Last name
- User's business information
- SIRET number
- Creation date
- Address (example: 10 Rue Gabriel Peri 92120, Montrouge)
- User's financial information
- Account type (TRANSACTION / SAVINGS)
- Current balance
In order not to influence your design choices, we will not provide you with a wireframe to follow or a screenshot of our current dashboard. As mentioned above, your interface should however display the information shown below:
User page | Account page |
---|---|
The 2 screenshots above are only here to show the information required and provide a baseline to your design choices and implementations.
They do not by any mean represent our current dashboard nor the layout we necessarily expect: we provide no constraints regarding the UI and design in general, feel free to implement your own.
The view should only be for one single user.
You will need to leverage an open API for business data to fill in the details and functionality as described below.
For simplicity reasons and in order for the test not to be too long to complete, you are only required to develop the page to fit the viewport of the device of your choice: either mobile or desktop.
At Mansa, we're big fans of React. Our stack consists of TypeScript, React, Next.js, CSS-in-JS with styled-component, Flex & Grid, and we test with Jest and Cypress.
The bare minimum is to complete the task with React. If you're comfortable with it, we encourage you to complete the test in the stack described above.
You're also free to use a component library to get you started and any other package that you might think is necessary.
Static type checking is a great way to introduce additional level of safety into your code and we welcome solutions written in TypeScript, but JavaScript is good too.
The use of component libraries, like Material UI, might make this easier and quicker for you but keep in mind that using them means we'll have less code to assess your knowledge and Frontend skills.
We expect you to test your code: the minimum requirement is unit tests. End-to-end tests are a big plus. From our experience Cypress.js works very well for React application testing, but you're free to pick your favourite.
Some remarks:
- Use es6 or later, do not use es5
- Do not use jQuery
- Feel free to use vanilla css, CSS-in-JS, or utility-first libraries
We're interested in your method and how you approach the problem just as much as we're interested in the end result.
Here's what you should strive for:
- Good use of current HTML, CSS, and JavaScript / TypeScript
- A keen eye for UX and user-friendly UI, without forgetting accessibility
- A consistent architecture, focused on the simplicity of the project (keep it simple!), pragmatism, no over-engineering
- Extensible code
- Clean code using proper programming patterns and JavaScript best practices
For business information, you'll have to use the French SIRENE public API, you can find the documentation about it here.
You can retrieve the information about a business by using the following URL:
https://entreprise.data.gouv.fr/api/sirene/v3/unites_legales/:siren
The
unites_legales
object contains all the necessary information.
For example, here is the API link that gives you the SIRENE profile of MansaGroup:
You can choose any SIREN (legal id) you want for your test.
For financial information, you'll use a custom API:
Method | Endpoint | Description |
---|---|---|
GET | /accounts | Fetch all bank accounts from a test user |
GET | /accounts/:accountid/transactions?from=_start_date&to=end_date | Fetch the specified account_id transactions from the start_date to the end_date. Date are ISO 8601 UTC, so for example 2018-08-13T03:24:00 It can't return more than 365 days of transactions. If there are no dates specified, the oldest transaction will be returned |
Root endpoint is: https://kata.getmansa.com/
You can see our Backend test README if you want more information about this endpoint.
Here is a list of nice-to-have bonuses:
- Write clear documentation on how the app was designed and how to run the code
- Provide e2e tests
- Typescript
- Beautiful charts
- Write concise and clear commit messages
- Provide an online demo of the application, in a deployed environment
- User-friendly and clear UI
- Complete user information (Profil picture, phone number, etc ...) with another API like randomuser
- Describe optimization opportunities and next steps as you conclude