#@ NEW! - Api Documentation
https://mock-ica.aquarela.win/api
Welcome to our developer test! This project aims to evaluate your skills in creating a banking dashboard with admin access. You'll be working with a mock Banking as a Service (BaaS) API located at https://mock-ica.aquarela.win/.
Your task is to create a banking dashboard that allows administrators to:
- View and create bank accounts
- View account statements
- See a summary of open accounts
- View the total balance of all accounts (simulating the total value in the database)
Additionally, as a bonus feature, you can create a user interface for account holders to:
- Log in to their bank account
- Perform financial operations
- View their account statement and balance
We will assess your solution based on:
- Security
- Usability
- Performance
- Scalability
If you're a full-stack developer, we'll evaluate both your backend and frontend implementations. If you specialize in one area, we'll place more emphasis on your expertise.
Careful consideration of caching and security measures is crucial for both frontend and backend components.
- React (with Next.js, Remix, or similar)
- Svelte
Recommended libraries:
- Tailwind CSS for styling
- shadcn for UI components
- Framer Motion for animations
- Python
- TypeScript (Node.js, Bun, or Deno)
Recommended framework:
- NestJS
Your choice, including free options like Supabase
The mock BaaS API is available at https://mock-ica.aquarela.win/. Here's an overview of the available endpoints and their usage:
- You must create a tenant before accessing other routes.
- The JWT secret is:
758603a3-cb1c-4d3f-b4b4-aa8975236894
- The pix key is:
pix@mock.icabank.com.br
- POST
/tenant
- Headers:
X-Mock: true
- Response: Returns tenant details including
clientId
andclientSecret
- POST
/auth/login
- Body:
{ "clientId": "your_client_id", "clientSecret": "your_client_secret" }
- Response: Returns an
access_token
All account management routes require the following header:
Authorization: Bearer your_access_token
- POST
/account
- Body:
{ "accountType": "PERSONAL" | "BUSINESS", "name": "Account Holder Name", "document": "Document Number" }
- GET
/account/:id
- GET
/account/document/:document
- GET
/account/:id/statement
All transaction routes require the following headers:
Authorization: Bearer your_access_token
X-Payer-Id: payer_document_number
- POST
/transaction/ted
- Body:
{ "accountId": "source_account_id", "amount": 500, "recipientName": "Recipient Name", "recipientDocument": "Recipient Document", "recipientBank": "Bank Code", "recipientBranch": "Branch Number", "recipientAccount": "Account Number" }
- GET
/transaction/pix/:pixKey
- POST
/transaction/pix/:accountId/pay
- Body:
{ "amount": 200, "pixKey": "pix@example.com", "description": "its my description" "e2eId": "end_to_end_id" }
- POST
/transaction/billet
- Body:
{ "accountId": "source_account_id", "amount": 150, "billetCode": "billet_code", "dueDate": "YYYY-MM-DD" }
- POST
/transaction/internal
- Body:
{ "amount": 100, "sourceAccountId": "source_account_id", "targetAccountId": "target_account_id" }
- Create a GitHub repository for your project.
- Include clear instructions on how to set up and run your solution.
- Provide any necessary documentation for your code and architecture decisions.
- Submit the link to your repository when you're ready for review.
Good luck, and we look forward to seeing your innovative solutions!