{"id":25231358,"url":"https://github.com/migueldcdev/iob-wallet","last_synced_at":"2026-05-12T07:41:56.513Z","repository":{"id":266875458,"uuid":"899623094","full_name":"migueldcdev/iob-wallet","owner":"migueldcdev","description":"Wallet app built with React, Redux, and Chakra UI for managing wallets, deposits, and transfers.","archived":false,"fork":false,"pushed_at":"2024-12-21T20:32:31.000Z","size":307,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-11T12:35:58.174Z","etag":null,"topics":["chakra-ui","react","redux","typescript","vitest"],"latest_commit_sha":null,"homepage":"https://iob-wallet.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/migueldcdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-06T16:47:44.000Z","updated_at":"2025-01-31T12:26:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"a49d439d-b349-411f-8cc2-6a8a5c48a069","html_url":"https://github.com/migueldcdev/iob-wallet","commit_stats":null,"previous_names":["migueldcdev/iob-wallet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migueldcdev%2Fiob-wallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migueldcdev%2Fiob-wallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migueldcdev%2Fiob-wallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migueldcdev%2Fiob-wallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/migueldcdev","download_url":"https://codeload.github.com/migueldcdev/iob-wallet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247355363,"owners_count":20925613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chakra-ui","react","redux","typescript","vitest"],"created_at":"2025-02-11T12:28:28.081Z","updated_at":"2026-05-12T07:41:56.485Z","avatar_url":"https://github.com/migueldcdev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ioB Wallet\n\n## Description\n\nThis is a web application developed with React, Typescript, and Redux (state management, simulating backend functionality). It also uses Chakra UI v3 in the user interface. The application allows users to manage their wallet with the following key features:\n\n- **User registration**\n- **Login** to access the account\n- Account(wallet) view with details of **balance** and **transactions**\n- **Deposit funds** into the wallet\n- **Transfer funds** from User A to User B\n\n![example-img](https://raw.githubusercontent.com/migueldcdev/repo-images/refs/heads/main/iob-wallet/1000040473.jpg) | ![example-img](https://raw.githubusercontent.com/migueldcdev/repo-images/refs/heads/main/iob-wallet/1000040474.jpg) | ![example-img](https://raw.githubusercontent.com/migueldcdev/repo-images/refs/heads/main/iob-wallet/1000040475.jpg)\n| --- | --- | --- |\n\n## Useful commands\n\n- Install dependencies\n\n```bash\nnpm install\n```\n\n- Start the development server\n\n```bash\nnpm run dev\n```\n\n- Run the tests\n\n```bash\nnpm run test\n```\n\n## Approach\n\nI chose Vite as the build tool because it has established itself as a top choice for modern web development, known for its exceptional build performance and instant server start.\n\nTo implement Redux, I chose the approach recommended by the official documentation, which suggests organizing the logic into three distinct areas:\n\n- **Store**, to hold the state.\n- **Hooks**, to simplify interaction with the state.\n- **Features**, to organize the logic. \n  \nThis setup requires a bit of initial configuration but makes straightforward to add new features and to read and update the state.\n\nTo test the app core functionalities instead of testing the reducers separated from the components I decided to make a wrapper including the Redux and the Chakra UI providers, getting closer to a real use-case scenario and enabling more thorough tests that cover the entire process.\n\n## Stack\n\n- **TypeScript**: For type safety and improved developer experience.\n- **React**: For building the UI.\n- **Redux**: For state management simulating the backend.\n- **Chakra UI v3**: For creating a responsive and accessible UI.\n- **Vitest** + **React Testing Library**: For unit and integration testing.\n- **Prettier**: For consistent code formatting.\n\n## Considered improvements\n\n- Add E2E tests with Playwright.\n- App theme improvements: curently only in light mode.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmigueldcdev%2Fiob-wallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmigueldcdev%2Fiob-wallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmigueldcdev%2Fiob-wallet/lists"}