Please read this document from beginning to end, very carefully. The intention of this test is to evaluate your tech knowledge in programming. In this test you have to parse this text file(CNAB) and save its information (financial transactions) in a database at the candidate's discretion. This challenge must be made by you in your house. Spend the time you need, but normally, you shouldn’t need more than a few hours.
- First, fork this project to your Github account (create an account if you don’t have one).
- After that, implement the project as described below, in your local clone.
- Finally, send your project via email to your bycoders_ contact, with [email protected] cc’d.
You received a CNAB file with data regarding financial transactions of several stores. We need to create a way for this data to be imported to a database.
Your task is to create a web interface that accepts upload of CNAB file, normalizes and stores the data in a relational database and displays this information on screen.
Your web application must:
- Have a screen (via a form) to upload the file ( extra points if you don't use a popular CSS Framework )
- Parse the received file, normalize the data, and correctly save the information in a relational database, paying attention to the documentation below
- Display a list of transactions imported by stores, and this list should contain an account balance totalizer
- Be written in your preferred programming language
- Be simple to configure and run, running in a Unix-compatible environment (Linux or Mac OS X). It should only use free languages and libraries
- Git with well-described atomic commits
- PostgreSQL, MySQL or SQL Server
- Have automated tests
- Docker compose (Extra points if used)
- Readme file describing the project and its setup well
- Include information describing how to consume the API endpoint
Your web application doesn’t have to:
- Deal with authentication or authorization (extra points if it does, more extra points if authentication is done via OAuth).
- Be written using some specific framework (but there's nothing wrong with using them too, use what you think best)
- API documentation.(It will be a differential and extra points if you do)
Field Description | Start Point | End | Size | Commentary |
---|---|---|---|---|
Type | 1 | 1 | 1 | Kind of transaction |
Date | 2 | 9 | 8 | Date of occurrence |
Value | 10 | 19 | 10 | Movement value. Obs. The value found in the file needs to be divided by one hundred(value / 100.00) to normalize it. |
CPF (Individual taxpayer identification) |
20 | 30 | 11 | Beneficiary's CPF (Individual taxpayer identification) |
Card | 31 | 42 | 12 | Card used in transaction |
Time | 43 | 48 | 6 | Time of occurrence according to UTC-3 timezone |
Store Owner | 49 | 62 | 14 | Store Representative’s Name |
Store Name | 63 | 81 | 19 | Store Name |
Type | Description | Nature | Sign |
---|---|---|---|
1 | Debit | Inflow | + |
2 | Banking billet | Outflow | - |
3 | Financing | Outflow | - |
4 | Credit | Inflow | + |
5 | Loan Receipt | Inflow | + |
6 | Sales | Inflow | + |
7 | TED transaction | Inflow | + |
8 | DOC transaction | Inflow | + |
9 | Rent | Outflow | - |
Your project will be evaluated according to the following criteria.
- Does your application meet the basic requirements?
- Have you documented how to set up the environment and run your application?
- Did you follow the challenge submission instructions?
- Quality and coverage of unit tests.
Additionally, we will try to check your familiarity with the standard libraries (standard libs), as well as your experience with object-oriented programming from the structure of your project.
This challenge was based on: https://github.com/lschallenges/data-engineering
Good Luck!