ICS React Native App
1# React Native Developer Assessment
2
3## Introduction
4
5The purpose of this assignment is to evaluate your familiarity with React Native,
6mobile development best practices, and to showcase your approach to clean, reusable,
7and maintainable code. This will also help us understand your sense of
8design and user experience for mobile applications.
9
10## Requirement
11
12Create a simple mobile banking application.
13You can use the provided BankingMockAPI as a source of data for your application.
14See README for API details and setup instructions. The app should allow a user to:
15
161. **Authenticate** (login) using credentials.
172. **View a list of their bank accounts** (e.g., checking, savings, etc.).
183. **View transactions** related to each account, display a
19 list of transactions for a selected account.
20 It should include ability to:
21 - search
22 - sort
23 - paginate between transactions
244. **View a list of their bank cards** (optional).
25
26You are free to design the UI as you see fit,
27but the app should have at least the following screens:
28
29- Login screen
30- Accounts overview screen
31- Account details/transactions screen
32
33## Architecture
34
35There are no strict requirements for architecture.
36Please design your application as you see fit, but focus on:
37
38- Clean, modular, and reusable code
39- Mobile development best practices
40- State management (your choice: Context, Redux, Redux-Toolkit etc.)
41- Clear separation of concerns
42
43## Notes
44
45- The main technology for this assessment is **React Native**.
46- You may use Expo or bare React Native CLI.
47- Use TypeScript for type safety.
48- The application should provide a good user experience on both iOS and Android.
49- Please include a **README** file that explains your architectural decisions,
50 e.g., why you chose a specific state management solution,
51 instructions on how to run your solution, and details about the NodeJS and
52 NPM/Yarn versions used.
53- Please include **unit tests** for at least some key components/hooks/screens.
54- Ensure the application runs without errors before submitting.
55- The UI should be simple, intuitive, and visually appealing.
56
57## Bonus Points
58
59- Refresh token before it expires to keep the user logged in
60- Add pull-to-refresh or loading indicators where appropriate
61- Add "infinite" scroll for transactions
62- Add basic input validation and error handling for authentication.
63- e2e tests
64- Accessibility (voiceover, keyboard navigation, etc.)
65- Setup CI/CD
66- Feel free to add extra features or polish to demonstrate your skills