Commit 6faafc6
feat: Add create and join group functionality (#93)
* This commit adds the ability for you to create new groups and join existing ones.
- A "Create Group" modal has been added to the home screen.
- A new "Join Group" screen has been created where you can enter a join code.
- The groups list on the home screen automatically refreshes after a group is created or joined.
* This commit introduces several improvements to the expense creation and group details screens based on your feedback.
- **Equal Split Member Selection:** You can now select which members to include when splitting an expense equally.
- **Optimized Settlements Summary:** The group details page now displays a summary of optimized settlements for you, showing who you need to pay and how much.
- **Transaction-level Balance Display:** Each expense in the group details now shows your financial relationship to it (e.g., "You borrowed $30").
* This commit fixes a bug in the settlement summary on the Group Details page.
The previous implementation did not correctly display the scenario where you are owed money. This has been corrected. The summary now shows:
- What you owe to others.
- What others owe to you.
- A "settled up" message when there are no outstanding debts.
* This commit introduces a new "Friends" page to the application.
- A "Friends" tab has been added to the main navigation.
- The new screen displays a list of friends (users from shared groups).
- For each friend, it shows the net balance aggregated across all shared groups.
- Each friend item can be expanded to show a breakdown of balances per group.
- The client-side logic fetches all group data and calculates these balances.
* This commit fixes a bug that caused the Friends page to crash.
The error was a `TypeError` caused by incorrectly accessing the expenses array when calculating friend balances. This has been corrected. The client-side calculation logic is now more robust and handles cases where groups may not have any expenses.
* This commit introduces a new "Account" page to the application.
- An "Account" tab has been added to the main navigation.
- The new screen displays user information and a list of options.
- You can now edit your profile information (name).
- The logout functionality is accessible from this page.
- Placeholders are included for future features like email settings and feedback.
* This commit enhances the UI by displaying group icons.
- The groups list now shows an icon for each group, with a fallback to the group's first initial.
- The group details screen also displays the icon in its header for a consistent user experience.
* This commit adds a new GitHub Actions workflow to automatically build the Android APK for the frontend application.
The workflow is triggered on push to the main branch and can also be run manually. It performs the following steps:
- Sets up the Node.js and Java environment.
- Installs project dependencies.
- Builds the Android APK using Expo Application Services (EAS).
- Uploads the generated APK as a build artifact.
An `eas.json` configuration file has also been added to the frontend project.
* Update android-build.yml
* Update android-build.yml
updates the version of upload artifact
* This commit refactors the GitHub Actions workflow to create previews for pull requests using Expo Application Services (EAS).
- The workflow is now triggered on `pull_request`.
- It uses the `expo/expo-github-action` to simplify the setup of the Expo environment.
- The build step has been changed from `eas build` to `eas update` to create a preview of the changes, which is faster and more efficient for reviewing pull requests.
- The workflow file has been renamed to `preview.yml` to better reflect its purpose.
* adds eas login id
* add project configuration and update channels in eas.json
* Revert "add project configuration and update channels in eas.json"
This reverts commit e554381.
* Add permissions for pull request handling in EAS preview workflow
* Refactor GroupDetailsScreen component for improved readability and maintainability
* Enhance currency formatting in GroupDetailsScreen and improve settlement display
* This commit fixes several bugs in the unequal split functionality and adds a feature to select who paid for an expense.
- The "Exact Value" and "Percentage" split methods now correctly handle floating-point inaccuracies and rounding.
- The "Split by Shares" calculation has been corrected to include rounding.
- A new "Who Paid" selector has been added to the "Add Expense" screen, allowing you to select the payer from the list of group members.
* Revert "This commit fixes several bugs in the unequal split functionality and adds a feature to select who paid for an expense."
This reverts commit 4068a50.
* Refactor AddExpenseScreen for improved structure and functionality; enhance split methods and auto-balance percentages
* Refactor AddExpenseScreen to improve payer selection logic and enhance expense calculation; ensure proper handling of rounding errors
* Add paidBy field to ExpenseCreateRequest and ExpenseResponse; validate payer membership in group during expense creation
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add required paidBy field to ExpenseCreateRequest in expense tests
* Add test for expense creation with payer not in group
* Update GitHub Actions and enhance group expense handling
- Upgrade actions/checkout and actions/setup-node to version 4 in preview.yml
- Add caching for npm in Node.js setup
- Introduce getUserBalanceSummary API call in groups.js
- Improve percentage distribution logic in AddExpenseScreen.js to avoid floating-point errors
- Fetch and display group settlement status in HomeScreen.js
* Implement AsyncStorage for user authentication and balance calculations; refactor FriendsScreen and HomeScreen imports
* Downgrade actions/checkout version from v4 to v3 in GitHub Actions workflow
* Upgrade actions/checkout version from v3 to v4 in GitHub Actions workflow
* Enhance bundle analysis workflow: use Expo export for builds, improve size calculations, and generate detailed reports
* Add EAS update workflow and improve bundle analysis steps
* Add React Native bundle analysis workflow with fallback dependency analysis
---------
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Devasy Patel <[email protected]>
Co-authored-by: patel.devasy.23 <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>1 parent ddea2b5 commit 6faafc6
File tree
38 files changed
+16059
-24
lines changed- .github/workflows
- backend
- app/expenses
- tests/expenses
- frontend
- api
- assets
- context
- frontend
- screens
- utils
38 files changed
+16059
-24
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
31 | | - | |
32 | | - | |
| 30 | + | |
| 31 | + | |
33 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
34 | 39 | | |
35 | 40 | | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
40 | 44 | | |
41 | | - | |
42 | | - | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
43 | 65 | | |
| 66 | + | |
44 | 67 | | |
45 | 68 | | |
| 69 | + | |
46 | 70 | | |
47 | | - | |
48 | | - | |
49 | | - | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
50 | 76 | | |
51 | | - | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
52 | 85 | | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
58 | 134 | | |
59 | | - | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
60 | 145 | | |
61 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
62 | 155 | | |
63 | | - | |
64 | | - | |
| 156 | + | |
| 157 | + | |
65 | 158 | | |
66 | 159 | | |
67 | 160 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
89 | 90 | | |
90 | 91 | | |
91 | 92 | | |
| 93 | + | |
92 | 94 | | |
93 | 95 | | |
94 | 96 | | |
| |||
0 commit comments