{"id":26406467,"url":"https://github.com/js00001/wallo-mobile","last_synced_at":"2025-03-17T17:19:57.106Z","repository":{"id":271142922,"uuid":"912506998","full_name":"JS00001/wallo-mobile","owner":"JS00001","description":"💸 Financial education software for absolutely everybody","archived":false,"fork":false,"pushed_at":"2025-02-09T14:52:05.000Z","size":5950,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-09T15:35:01.720Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/JS00001.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":"2025-01-05T19:02:17.000Z","updated_at":"2025-02-09T14:52:08.000Z","dependencies_parsed_at":"2025-01-21T21:23:01.474Z","dependency_job_id":"f27e7942-7f43-449d-a565-c3d8197b001d","html_url":"https://github.com/JS00001/wallo-mobile","commit_stats":null,"previous_names":["js00001/wallo-mobile"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS00001%2Fwallo-mobile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS00001%2Fwallo-mobile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS00001%2Fwallo-mobile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS00001%2Fwallo-mobile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JS00001","download_url":"https://codeload.github.com/JS00001/wallo-mobile/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244075626,"owners_count":20393980,"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":[],"created_at":"2025-03-17T17:19:56.567Z","updated_at":"2025-03-17T17:19:57.094Z","avatar_url":"https://github.com/JS00001.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Introduction\n\nWallo is a financial education platform that allows users to learn about personal finance, investing, and other financial topics. This repository contains the code for the Wallo mobile app. The frontend is responsible for displaying the course content to the user, while the [backend](https://github.com/JS00001/wallo-api) is responsible for managing the course data and serving all the necessary information to the frontend.\n\n## Documentation Sections\n\n- [Introduction](#introduction)\n- [Setting up the environment](#setting-up-the-environment)\n- [Running the application](#running-the-application)\n- [Architecture](#architecture)\n  - [Managing Server State](#managing-server-state)\n- [Debugging](#debugging)\n\n## Setting up the environment\n\n1. Install the required packages by running the following command:\n\n```bash\nyarn install\n```\n\n## Running the application\n\nRun the following command to start the application in development mode:\n\n```bash\nyarn dev\n```\n\n## Architecture\n\n| Folder       | Description                                                                                                                    |\n| ------------ | ------------------------------------------------------------------------------------------------------------------------------ |\n| `@types`     | Common data types used across the entire application.                                                                          |\n| `api`        | All methods to call the backend API exist here.                                                                                |\n| `app`        | Expo router root folder.                                                                                                       |\n| `components` | Larger components made up of smaller components from the `ui` folder, such as Widgets, Bottom Sheets, etc.                     |\n| `constants`  | Constant values used across the entire application.                                                                            |\n| `hooks`      | Common hooks across the application. Includes an `api` folder with hooks for every API query and mutation using Tanstack Query |\n| `lib`        | Utility functions and external library setup.                                                                                  |\n| `providers`  | Context providers for the application.                                                                                         |\n| `store`      | Client-side stores using Zustand. _Preferred over using React Context_                                                         |\n| `styles`     | Global styles, mainly for setting up Nativewind.                                                                               |\n| `ui`         | Small blocks of UI components such as Buttons, Inputs, etc.                                                                    |\n\n### Managing Server State\n\nAll async state should be handled via Tanstack Query. Every API query and mutation has an associated hook in the `hooks/api` folder. The hooks should be used in the components to fetch and mutate data. The hooks are responsible for managing the state and fetching the data from the backend.\n\nRelevant optimistic updates or cache updates (when mutating data) should be handled in the hooks.\n\nEvery component using a query should validate `isLoading`, `isError`, and `data` states to handle the UI accordingly.\n\n## Debugging\n\nTo help with debugging, we've added debugging tools to the application when running in development mode.\n\n- **Network Requests**: To view network requests, press three fingers on the screen to open the network inspector.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs00001%2Fwallo-mobile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjs00001%2Fwallo-mobile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs00001%2Fwallo-mobile/lists"}