Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
270 commits
Select commit Hold shift + click to select a range
f888355
Implement navigation framework
bjlpedersen Oct 5, 2025
9421d64
Merge branch 'bjlpedersen-feature/add-navigation-framework' of https:…
bjlpedersen Oct 5, 2025
3621c79
Merge branch 'main' into bjlpedersen-feature/add-navigation-framework
bjlpedersen Oct 5, 2025
3369cf4
test: update navigation tests to use AndroidComposeRule and improve a…
bjlpedersen Oct 5, 2025
acc84da
Merge remote-tracking branch 'origin/bjlpedersen-feature/add-navigati…
bjlpedersen Oct 5, 2025
cbcc759
Remove template test files with missing components
bjlpedersen Oct 5, 2025
e300436
SonarCloud: added tests to try and reach 80% coverage (last one was 69%)
bjlpedersen Oct 5, 2025
ea42b9e
SonarCloud: added tests to try and reach 80% coverage (last one was 69%)
bjlpedersen Oct 5, 2025
df93ee8
Merge branch 'bjlpedersen-feature/add-navigation-framework' of https:…
bjlpedersen Oct 5, 2025
174684d
SonarCloud: added tests to try and reach 80% coverage (last one was 6…
bjlpedersen Oct 5, 2025
e1730ec
Merge branch 'bjlpedersen-feature/add-navigation-framework' of https:…
bjlpedersen Oct 5, 2025
6f635cb
feat: add basic profile UI with personal details form and preview
nahuelArthur Oct 6, 2025
77aa241
feat: add user profileViewModel
nahuelArthur Oct 6, 2025
d3ac2c8
feat: add loadProfile function placeholder (not yet implemented) in V…
nahuelArthur Oct 6, 2025
03fc8ad
feat: connect text fields in profile screen to ViewModel for state ma…
nahuelArthur Oct 6, 2025
3f35f6c
feat: add email validation function and update error handling for ema…
nahuelArthur Oct 6, 2025
2838a0b
feat: add app-styled button component
nahuelArthur Oct 6, 2025
38c5132
docs: add comments to MyProfileScreen and MyProfileViewModel
nahuelArthur Oct 6, 2025
2bbfabb
test(profile): add UI tests for MyProfileScreen with testTags
nahuelArthur Oct 6, 2025
e4db2ba
chore: format committed files
nahuelArthur Oct 6, 2025
5ea12e4
feat: add Profile data class
nahuelArthur Oct 6, 2025
1de6ee6
test: add tests for the MyprofileViewModel
nahuelArthur Oct 6, 2025
8322e94
refractor: reformat the file
nahuelArthur Oct 6, 2025
236b95e
feat: implement logingn-in page with UI components
GuillaumeLepin Oct 6, 2025
7942570
create the data files for the necessary data types we will need for t…
EBali2003 Oct 7, 2025
77c17c5
create the unit tests for the data types that are created
EBali2003 Oct 7, 2025
85f74a8
add the unversioned firebase files for firebase to function.
EBali2003 Oct 7, 2025
8b083db
Merge branch 'main' into EBali2003-patch-1
EBali2003 Oct 7, 2025
3fc297f
edit possible issue in tests and fix jacoco incompatibility
EBali2003 Oct 7, 2025
db9b480
Merge pull request #27 from SkillBridgeee/EBali2003-patch-1
Zay1939 Oct 7, 2025
1c791fa
Merge branch 'main' into EBali2003-feature/create-data-types
EBali2003 Oct 7, 2025
feb46ee
feat: implement main page with activity and people cards
GuillaumeLepin Oct 8, 2025
0e8f96e
test: implement unit tests for HomePage
GuillaumeLepin Oct 8, 2025
9585587
Merge branch 'main' into bjlpedersen-feature/add-navigation-framework
NedenSinir Oct 8, 2025
c4f5b26
edit the tests and data classes according to the change request
EBali2003 Oct 9, 2025
1180616
Merge branch 'EBali2003-feature/create-data-types' of github.com:Skil…
EBali2003 Oct 9, 2025
262cd24
added the comment because apparently it didn't get committed
EBali2003 Oct 9, 2025
fa59955
Merge pull request #26 from SkillBridgeee/EBali2003-feature/create-da…
NedenSinir Oct 9, 2025
df9aa36
refactor: improve navigation flow and add comprehensive testing
bjlpedersen Oct 9, 2025
ffc89a5
Merge remote-tracking branch 'origin/main' into bjlpedersen-feature/a…
bjlpedersen Oct 9, 2025
cb7925e
chore: implement minor updates and small improvements
GuillaumeLepin Oct 9, 2025
d9bfd66
Merge remote-tracking branch 'origin/main' into nahuelArthur-feature/…
nahuelArthur Oct 9, 2025
84ef39d
Merge remote-tracking branch 'origin/bjlpedersen-feature/add-navigati…
bjlpedersen Oct 9, 2025
fcac1de
fix: change a test
nahuelArthur Oct 9, 2025
ea21c49
fix: format the code
nahuelArthur Oct 9, 2025
2999ff5
fix : fix invallid test
nahuelArthur Oct 9, 2025
55e7bb8
test: add additional tests to improve code coverage
GuillaumeLepin Oct 9, 2025
6504ed8
Merge pull request #23 from SkillBridgeee/bjlpedersen-feature/add-nav…
NedenSinir Oct 9, 2025
eeca8f0
test: add tests for LoginScreen and update package structure
GuillaumeLepin Oct 9, 2025
8b81752
feat: add NewSkill ui
nahuelArthur Oct 9, 2025
bc32378
Merge branch 'main' into GuillaumeLepin-feature/add-singInPage
GuillaumeLepin Oct 9, 2025
aaa0750
feat : add newSkill ViewModel
nahuelArthur Oct 9, 2025
4c5a13e
feat(bookings): add MyBookings screen and ViewModel, update theme colors
Oct 9, 2025
1472579
feat: add number check on price input
nahuelArthur Oct 9, 2025
0576543
chore: apply review feedback on sign-in page and tests
GuillaumeLepin Oct 9, 2025
2c2a171
feat: add subject of the skill selection's menu
nahuelArthur Oct 9, 2025
ce49919
chore: format codebase using ktfmt
GuillaumeLepin Oct 9, 2025
5636a8c
feat: add tests for the viewModel
nahuelArthur Oct 9, 2025
7f43d07
Make teacher name and details button clickable on MyBookingsScreen
Oct 9, 2025
24ae05b
feat: add testTags definition
nahuelArthur Oct 9, 2025
727c1b3
feat: format code x
nahuelArthur Oct 9, 2025
11fd95b
feat: add test for the NewSkillInterface
nahuelArthur Oct 9, 2025
468545a
feat : add varable for text space in NewSkillScreen
nahuelArthur Oct 9, 2025
9df86d7
Format and update: TopAppBar, NavGraph, MyBookingsViewModel, MyBookin…
Oct 9, 2025
61ed002
refactor: move hardcoded colors to Colors.kt for cleaner code
GuillaumeLepin Oct 9, 2025
1e50398
Add unit tests for Booking model and MyBookingsViewModel
Oct 9, 2025
2980341
Format change
Oct 9, 2025
04754a2
feat: enhance booking and profile models and db repositories
NedenSinir Oct 9, 2025
0d234c5
Add shows_empty_state_when_no_bookings() test
Oct 10, 2025
7f31e64
Add explanation of the class for MyBookingsScreen and add additional …
Oct 10, 2025
19fdfc6
feat(bookings): add KDoc to MyBookingsScreen, improve BookingCardUi t…
Oct 10, 2025
db1e202
refactor: move hardcoded colors to Colors.kt for cleaner code
GuillaumeLepin Oct 10, 2025
37ac8f2
Merge remote-tracking branch 'origin' into GuillaumeLepin-feature/add…
GuillaumeLepin Oct 10, 2025
642df7c
fix(bottom-nav, bookings): move nav test tags to NavigationBarItem an…
Oct 10, 2025
6936f29
docs: add comments only, no logic changes
nahuelArthur Oct 10, 2025
3881e67
feat(new-skill): add setError and invalid subject message
nahuelArthur Oct 10, 2025
a08f725
Comment out Roboelectric test to pass the test and check line coverage
Oct 10, 2025
4d911b5
tests: remove BookingCardUiTest, BookingModelTest, MyBookingRoboelect…
Oct 10, 2025
747b47b
Add documentation to MyBookingsScreen and MyBookingsViewModel
Oct 10, 2025
1caa2f1
feat: add error message for the subject input field
nahuelArthur Oct 11, 2025
59748ca
Add manual APK generation workflow
bjlpedersen Oct 11, 2025
6187db5
refactor: removing unnecessary types
NedenSinir Oct 11, 2025
66da21b
refactor: apply formatting
NedenSinir Oct 11, 2025
0f25b14
Fix: remove apk workflow file to fix non display issue of the action …
bjlpedersen Oct 11, 2025
9673034
Add workflow to generate APK with manual trigger
bjlpedersen Oct 11, 2025
b3e4bb7
refactor: extracting unrelated files for feature branch
NedenSinir Oct 11, 2025
68c3aa8
Add push trigger for testing APK workflow
bjlpedersen Oct 11, 2025
b9927ca
Fix: Separate packages in Set Up Android SDK step to fix workflow not…
bjlpedersen Oct 11, 2025
2735a7c
Fix: Restore google-services.json from GitHub secret in APK generatio…
bjlpedersen Oct 11, 2025
6fcf2fd
Fix: Re-run workflow after changin git to decode google-services.json…
bjlpedersen Oct 11, 2025
54d0eb7
refactor: update user-related fields to improve clarity and consistency
NedenSinir Oct 11, 2025
ac47f9b
refactor: update Rating data class and repository
NedenSinir Oct 11, 2025
6fa884b
refactor: making profiles compatible with new structure
NedenSinir Oct 11, 2025
74f6521
refactor: renaming some fields for new strcuture
NedenSinir Oct 11, 2025
e598583
refactor: applying the correct formating
NedenSinir Oct 11, 2025
8ed19b1
refactor: update Booking and Rating tests for new data structure
NedenSinir Oct 11, 2025
5f47504
refactor: better naming for some fields
NedenSinir Oct 11, 2025
5c11152
Merge pull request #59 from SkillBridgeee/NedenSinir-feature/db-data-…
EBali2003 Oct 12, 2025
0c51fdc
refactor: replace all occurrences of "bio" with "description"
nahuelArthur Oct 12, 2025
e62fb19
refactor: remove outdated Profile.kt file
nahuelArthur Oct 12, 2025
518db60
refactor: update location type and related UI/tests
nahuelArthur Oct 12, 2025
7c57dda
Merge remote-tracking branch 'origin/main' into SanemSarioglu-feature…
Oct 12, 2025
6c001f6
Remove temporary push trigger from APK workflow
bjlpedersen Oct 12, 2025
4a14eca
Merge branch 'main' into bjlpedersen-chore/add-apk-workflow
EBali2003 Oct 12, 2025
2c2962b
temp save before rebase
Zay1939 Oct 9, 2025
36a475c
refactor: update SkillChip design, improve docs, and add component tests
Zay1939 Oct 10, 2025
f964c18
refactor: code formatting (ktfmtFormat)
Zay1939 Oct 10, 2025
46c9d77
fix : Fix contact_section_shows_email_and_handle test to scroll the l…
Zay1939 Oct 10, 2025
d1a487b
refactor: code formatting (ktfmtFormat)
Zay1939 Oct 10, 2025
862a213
fix : Comment out test code that affect line coverage
Zay1939 Oct 10, 2025
c36c6d1
refactor: code formatting (ktfmtFormat)
Zay1939 Oct 10, 2025
3f9cb40
refactor: remove unused lines and polish code before merge request
Zay1939 Oct 10, 2025
4b667bb
refactor: code formatting (ktfmtFormat)
Zay1939 Oct 10, 2025
1f65a08
fix : Address review comments
Zay1939 Oct 12, 2025
a23091a
refactor(tutor): migrate profile screen to Profile/Skill model; updat…
Zay1939 Oct 12, 2025
ab66975
refactor: code formatting (ktfmtFormat)
Zay1939 Oct 12, 2025
52acfd1
test: adapt tests to new types
Zay1939 Oct 12, 2025
9738c6c
test: adapt tests to new Compose/Kaspresso types
Zay1939 Oct 12, 2025
0c8989b
ui(bookings): decouple screen chrome; add bar test-tags; fix tests
Oct 12, 2025
e3255c0
Merge pull request #63 from SkillBridgeee/bjlpedersen-chore/add-apk-w…
EBali2003 Oct 12, 2025
062bbb8
'feat(bookings): navigate to tutor/{tutorId} and lesson/{bookingId}; …
Oct 12, 2025
1412c27
Readd scaffold to booking screen
Oct 13, 2025
0825fd5
Add manual APK generation workflow
bjlpedersen Oct 11, 2025
815c9be
Fix: remove apk workflow file to fix non display issue of the action …
bjlpedersen Oct 11, 2025
d6bd0ba
Add workflow to generate APK with manual trigger
bjlpedersen Oct 11, 2025
c65ac12
Add push trigger for testing APK workflow
bjlpedersen Oct 11, 2025
81153b3
Fix: Separate packages in Set Up Android SDK step to fix workflow not…
bjlpedersen Oct 11, 2025
21e95a9
Fix: Restore google-services.json from GitHub secret in APK generatio…
bjlpedersen Oct 11, 2025
bfbd6db
Fix: Re-run workflow after changin git to decode google-services.json…
bjlpedersen Oct 11, 2025
cbfe271
Remove temporary push trigger from APK workflow
bjlpedersen Oct 12, 2025
5cc088c
feat: enhance booking and profile models and db repositories
NedenSinir Oct 9, 2025
1f92d24
refactor: removing unnecessary types
NedenSinir Oct 11, 2025
2080f2c
refactor: apply formatting
NedenSinir Oct 11, 2025
82d603b
refactor: extracting unrelated files for feature branch
NedenSinir Oct 11, 2025
5553018
refactor: update user-related fields to improve clarity and consistency
NedenSinir Oct 11, 2025
559983d
refactor: update Rating data class and repository
NedenSinir Oct 11, 2025
c658fba
refactor: making profiles compatible with new structure
NedenSinir Oct 11, 2025
e9a430a
refactor: renaming some fields for new strcuture
NedenSinir Oct 11, 2025
e8da1d2
refactor: applying the correct formating
NedenSinir Oct 11, 2025
0493a13
refactor: update Booking and Rating tests for new data structure
NedenSinir Oct 11, 2025
bf77a94
refactor: better naming for some fields
NedenSinir Oct 11, 2025
2ec7eb1
Add manual APK generation workflow
bjlpedersen Oct 11, 2025
d8720c9
Fix: remove apk workflow file to fix non display issue of the action …
bjlpedersen Oct 11, 2025
45b1519
Add workflow to generate APK with manual trigger
bjlpedersen Oct 11, 2025
284ac2b
Add push trigger for testing APK workflow
bjlpedersen Oct 11, 2025
8019813
Fix: Separate packages in Set Up Android SDK step to fix workflow not…
bjlpedersen Oct 11, 2025
6e03ae3
Fix: Restore google-services.json from GitHub secret in APK generatio…
bjlpedersen Oct 11, 2025
dca11d1
Fix: Re-run workflow after changin git to decode google-services.json…
bjlpedersen Oct 11, 2025
d94f55d
Remove temporary push trigger from APK workflow
bjlpedersen Oct 12, 2025
714f1fe
Add manual APK generation workflow
bjlpedersen Oct 11, 2025
f6006bb
Fix: remove apk workflow file to fix non display issue of the action …
bjlpedersen Oct 11, 2025
bfb264e
Add workflow to generate APK with manual trigger
bjlpedersen Oct 11, 2025
9a44f3b
Add push trigger for testing APK workflow
bjlpedersen Oct 11, 2025
b98ffbf
Fix: Separate packages in Set Up Android SDK step to fix workflow not…
bjlpedersen Oct 11, 2025
20d9949
Fix: Restore google-services.json from GitHub secret in APK generatio…
bjlpedersen Oct 11, 2025
5f37446
Fix: Re-run workflow after changin git to decode google-services.json…
bjlpedersen Oct 11, 2025
8339d20
Remove temporary push trigger from APK workflow
bjlpedersen Oct 12, 2025
0b08566
feat(booking): add FakeBookingRepository & integrate repo API into Vi…
Oct 13, 2025
6e15c7f
Implement navigation framework
bjlpedersen Oct 5, 2025
916ddf2
Implement navigation framework
bjlpedersen Oct 5, 2025
8768114
test: update navigation tests to use AndroidComposeRule and improve a…
bjlpedersen Oct 5, 2025
328af2f
Remove template test files with missing components
bjlpedersen Oct 5, 2025
eb30c31
SonarCloud: added tests to try and reach 80% coverage (last one was 69%)
bjlpedersen Oct 5, 2025
b5db6ad
SonarCloud: added tests to try and reach 80% coverage (last one was 69%)
bjlpedersen Oct 5, 2025
13d86fb
refactor: improve navigation flow and add comprehensive testing
bjlpedersen Oct 9, 2025
b56a1cf
Add manual APK generation workflow
bjlpedersen Oct 11, 2025
4da2cfe
Fix: remove apk workflow file to fix non display issue of the action …
bjlpedersen Oct 11, 2025
cde9466
Add workflow to generate APK with manual trigger
bjlpedersen Oct 11, 2025
a2f0cee
Add push trigger for testing APK workflow
bjlpedersen Oct 11, 2025
31fb36b
Fix: Separate packages in Set Up Android SDK step to fix workflow not…
bjlpedersen Oct 11, 2025
0955e3f
Fix: Restore google-services.json from GitHub secret in APK generatio…
bjlpedersen Oct 11, 2025
cc01e19
Fix: Re-run workflow after changin git to decode google-services.json…
bjlpedersen Oct 11, 2025
531a496
Remove temporary push trigger from APK workflow
bjlpedersen Oct 12, 2025
6d8c0f5
feat: enhance booking and profile models and db repositories
NedenSinir Oct 9, 2025
8f44318
refactor: removing unnecessary types
NedenSinir Oct 11, 2025
a92f2f5
refactor: apply formatting
NedenSinir Oct 11, 2025
f64116d
refactor: extracting unrelated files for feature branch
NedenSinir Oct 11, 2025
9d7dbfd
refactor: update user-related fields to improve clarity and consistency
NedenSinir Oct 11, 2025
4bbec05
refactor: update Rating data class and repository
NedenSinir Oct 11, 2025
c398168
refactor: making profiles compatible with new structure
NedenSinir Oct 11, 2025
fec1c87
refactor: renaming some fields for new strcuture
NedenSinir Oct 11, 2025
94628b8
refactor: applying the correct formating
NedenSinir Oct 11, 2025
18129df
refactor: update Booking and Rating tests for new data structure
NedenSinir Oct 11, 2025
fac0a09
refactor: better naming for some fields
NedenSinir Oct 11, 2025
637614c
Merge branch 'main' into Zay1939-feature/add-Tutor-Profil-Page
Zay1939 Oct 13, 2025
756bd83
Merge branch 'main' into nahuelArthur-feature/add-ProfileUI
nahuelArthur Oct 13, 2025
f9f16bc
test(bookings): consolidate & add ViewModel + UI tests to existing te…
Oct 13, 2025
968de2f
test(bookings): add ViewModel duration unit test and Compose UI tests
Oct 13, 2025
c8ab8bf
Add a new test to MyBookingsRobolectricTest.kt to have more line cove…
Oct 13, 2025
eeaa7a7
Merge remote-tracking branch 'origin' into GuillaumeLepin-feature/add…
GuillaumeLepin Oct 13, 2025
7c6cff9
feat(profile): implement local repository and update ViewModel & tests
nahuelArthur Oct 13, 2025
263a2a1
refactor(ui/tutor): Adopt repository pattern for TutorProfile
Zay1939 Oct 13, 2025
747f0da
feat : add editProfile the screen (not finished)
nahuelArthur Oct 13, 2025
1c10354
refractor : add setErrorMsg for editProfile
nahuelArthur Oct 13, 2025
591cf44
fix: update MainActivity to prevent test errors
GuillaumeLepin Oct 13, 2025
64900f0
Merge pull request #48 from SkillBridgeee/GuillaumeLepin-feature/add-…
GuillaumeLepin Oct 13, 2025
ada67a4
feat: create ViewModel for managing screen logic
GuillaumeLepin Oct 13, 2025
a868e8e
Merge remote-tracking branch 'origin' into GuillaumeLepin-feature/add…
GuillaumeLepin Oct 13, 2025
bd980f2
fix : fix small mistakes in viewModel
nahuelArthur Oct 13, 2025
b9bd474
Merge branch 'main' into nahuelArthur-feature/add-ProfileUI
bjlpedersen Oct 13, 2025
899837a
Merge pull request #25 from SkillBridgeee/nahuelArthur-feature/add-Pr…
nahuelArthur Oct 13, 2025
bcb65a9
bookings: improve mapping, enforce price format, stabilize tests
Oct 13, 2025
97173ca
bookings: improve mapping, enforce price format, stabilize tests
Oct 13, 2025
6f0586f
Add test tah for naviagtion message
Oct 13, 2025
5236561
add messages to NavRoutes to be able to use test tag
Oct 13, 2025
f274513
Merge branch 'main' into SanemSarioglu-feature/add-my-bookings-page
SanemSarioglu Oct 13, 2025
b086bae
Update tests to get more line coverage
Oct 13, 2025
9bad4e6
Update tests to get more line coverage
Oct 13, 2025
2881cc6
Update tests to get more line coverage
Oct 13, 2025
12a8994
feat(bookings): merge screen+vm, add mapper & uiState, expand tests
Oct 13, 2025
1aee247
Update the tests to get more line coverage and delet the dublicate bt…
Oct 13, 2025
1745ff5
Add test for the lines that were not covered in the ViewModel
Oct 13, 2025
6b35e42
Merge branch 'main' into nahuelArthur-feature/add_skill_ui
nahuelArthur Oct 14, 2025
d387de0
fix(ui) : remove the top bar form the TutorProfileScreen scaffold bec…
Zay1939 Oct 14, 2025
4ce3188
Merge branch 'main' into Zay1939-feature/add-Tutor-Profil-Page
Zay1939 Oct 14, 2025
ba2531b
refactor: code formatting (ktfmtFormat)
Zay1939 Oct 14, 2025
1f0344a
refactor(newskill): align ViewModel with Listing repository architectur
nahuelArthur Oct 14, 2025
d7b5946
Change ViewModel and Screen to get a more clean code and get rid of d…
Oct 14, 2025
3abe2be
Change ViewModel and Screen to get a more clean code and get rid of d…
Oct 14, 2025
bbf93ed
fix(ProfileRepo) : Implement missing methods in the local repo
Zay1939 Oct 14, 2025
38818db
test : add tests regarding latest modification
nahuelArthur Oct 14, 2025
dd2d117
Add fake repository test to get more line coverage
Oct 14, 2025
c55554b
Got rid of preview
Oct 14, 2025
1c6fafa
Merge remote-tracking branch 'origin' into GuillaumeLepin-feature/add…
GuillaumeLepin Oct 14, 2025
e50104a
Modify repository tests to have more coverage
Oct 14, 2025
d8cfe8a
Changed the remarks made by review
Oct 14, 2025
1c00499
Modified according to remarks made by review
Oct 14, 2025
d8bd012
Merge pull request #49 from SkillBridgeee/Zay1939-feature/add-Tutor-P…
GuillaumeLepin Oct 14, 2025
0076737
refactor: implement requested updates from PR review feedback
nahuelArthur Oct 14, 2025
0f51a0e
Merge branch 'main' into nahuelArthur-feature/add_skill_ui
nahuelArthur Oct 14, 2025
f6c92fb
Merge remote-tracking branch 'origin' into GuillaumeLepin-feature/add…
GuillaumeLepin Oct 14, 2025
1a1985d
Merge pull request #51 from SkillBridgeee/nahuelArthur-feature/add_sk…
nahuelArthur Oct 14, 2025
77a87c2
Merge branch 'main' into SanemSarioglu-feature/add-my-bookings-page
SanemSarioglu Oct 14, 2025
387c681
Delete the unneccessary sode in NAcGraph which will be implemented later
Oct 14, 2025
3b329b4
feat: update main page and models to support listings and improve tests
GuillaumeLepin Oct 14, 2025
9a25693
Merge branch 'main' into GuillaumeLepin-feature/add-MainPage
GuillaumeLepin Oct 14, 2025
c5a005c
Remove hardcoded demo from viewmodel and implemented into fake reposi…
Oct 14, 2025
77c4ea2
Add test for provider classes
Oct 14, 2025
d053dbc
refactor: implement local data repositories and move the old dataiew
GuillaumeLepin Oct 14, 2025
16fa22d
Delete hard coded local
Oct 14, 2025
c9eca2f
Merge pull request #50 from SkillBridgeee/SanemSarioglu-feature/add-m…
SanemSarioglu Oct 14, 2025
f3069bc
refactor: improve MainPageViewModel and update MainPage logic after P…
GuillaumeLepin Oct 15, 2025
d3af6c8
Merge remote-tracking branch 'origin' into GuillaumeLepin-feature/add…
GuillaumeLepin Oct 15, 2025
ceeb078
chore: adjust code to fit changes after merging main into branch
GuillaumeLepin Oct 15, 2025
a3f06ba
refactor: apply PR feedback to improve data handling and UI state man…
GuillaumeLepin Oct 15, 2025
5bce18b
style: apply ktfmt formatting across the project
GuillaumeLepin Oct 15, 2025
5a8e987
Fix readMe typo
nahuelArthur Oct 15, 2025
058767e
docs: add KDoc documentation for MainPage and MainPageViewModel
GuillaumeLepin Oct 15, 2025
6433b43
Merge pull request #69 from SkillBridgeee/nahuelArthur-fix/error-in-r…
nahuelArthur Oct 15, 2025
3384f7a
Merge branch 'main' into GuillaumeLepin-feature/add-MainPage
GuillaumeLepin Oct 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .firebaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"projects": {
"default": "skillbridge-46ee3"
}
}
12 changes: 11 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,16 @@ jobs:
run: |
chmod +x ./gradlew

- name: Decode google-services.json
env:
GOOGLE_SERVICES: ${{ secrets.GOOGLE_SERVICES }}
run: |
if [ -n "$GOOGLE_SERVICES" ]; then
echo "$GOOGLE_SERVICES" | base64 --decode > ./app/google-services.json
else
echo "::warning::GOOGLE_SERVICES secret not set. google-services.json will not be created."
fi

# Check formatting
- name: KTFmt Check
run: |
Expand Down Expand Up @@ -112,4 +122,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonar --parallel --build-cache
run: ./gradlew sonar --parallel --build-cache
69 changes: 69 additions & 0 deletions .github/workflows/generate-apk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Generate APK (manual)

on:
# Manual trigger only – will show "Run workflow" button in Actions tab
workflow_dispatch:
inputs:
build_type:
description: "Which build type to assemble (debug or release)"
required: true
default: "debug"

jobs:
build:
name: Build ${{ github.event.inputs.build_type }} APK
runs-on: ubuntu-latest

steps:
# 1 Checkout your code
- name: Checkout repository
uses: actions/checkout@v4

# 2 Set up Java (AGP 8.x → needs JDK 17)
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 17
cache: gradle

# 3 Set up Android SDK (single-line package list to avoid parsing issues)
- name: Set up Android SDK
uses: android-actions/setup-android@v3
with:
packages: platform-tools platforms;android-34 build-tools;34.0.0

# 4 Accept all Android SDK licenses
- name: Accept Android SDK licenses
run: yes | sdkmanager --licenses || true

# 5 Create local.properties (so Gradle can locate SDK)
- name: Configure local.properties
run: |
echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties

# 6 Restore google-services.json from GitHub secret
- name: Restore google-services.json
run: |
echo "${{ secrets.GOOGLE_SERVICES }}" | base64 --decode > app/google-services.json


# 7 Make gradlew executable (sometimes loses permission)
- name: Grant Gradle wrapper permissions
run: chmod +x ./gradlew

# 8 Build APK
- name: Build ${{ github.event.inputs.build_type }} APK
run: |
if [ "${{ github.event.inputs.build_type }}" = "release" ]; then
./gradlew :app:assembleRelease --no-daemon --stacktrace
else
./gradlew :app:assembleDebug --no-daemon --stacktrace
fi

# 9 Upload APK artifact so you can download it from GitHub Actions UI
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: app-${{ github.event.inputs.build_type }}-apk
path: app/build/outputs/apk/**/${{ github.event.inputs.build_type }}/*.apk
Empty file added .scannerwork/.sonar_lock
Empty file.
58 changes: 58 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# 🎓 SkillBridge

**SkillBridge** is a peer-to-peer learning marketplace that connects students who want to learn with other students who can teach.

Our mission is to make learning **affordable, flexible, and community-driven** by leveraging the skills already available within the student community.

Many students struggle to afford professional tutoring, while others want to earn money or gain experience by teaching what they know.

With **SkillBridge**:
- Learners get affordable help in both academics and hobbies.
- Tutors earn extra income and experience by sharing their skills.
- The student community becomes a self-sustaining support network.

---

## 🎯 Target Users
- **Ava**: a first-year student looking for affordable math tutoring.
- **Liam**: a third-year student who wants to earn money by offering piano lessons.

---

## 🚀 Features
- 🔐 Secure sign-up & login via email or university SSO with **Firebase Authentication**
- 👩‍🏫 Role-based profiles: **Learner, Tutor, or Both**
- 📍 Location-based search using **GPS** to find and sort nearby tutors on a map
- 📝 Booking system for lessons and scheduling
- ⭐ Ratings and reviews for tutors
- 💾 **Offline mode**: access to profiles, saved tutors, and booked lessons without internet

---

## 🏗️ Tech Stack
- **Frontend**: Mobile app (Kotlin)
- **Backend**: Google Firebase (Cloud Firestore, Authentication, Cloud Functions)
- **Device Features**: GPS/location services, local caching for offline support

---

## 📡 Offline Mode
- ✅ Available offline: profile, saved tutors, booked lessons
- 🔄 Online required: new tutor listings, updated ratings, personalized recommendations



## 🔒 Security
- Accounts managed with **Firebase Authentication**
- Role-based permissions (Learner / Tutor)
- Data stored securely in **Cloud Firestore** with strict access rules


## 🎨 Design (Figma)
We use **Figma** to create mockups and track design work.

- 🔗 [SkillSwap Mockup on Figma](https://www.figma.com/design/KLu1v4Q1ahcIgpufrbxQCV/SkillBridge-mockup?node-id=0-1&t=MaZllQ2pNaWYwCoW-1)
- ✅ All team members have **edit access**.
- 👩‍💻 **Dev Mode** is enabled so developers can inspect styles and assets.
- 🌍 File is set to **public view** so course staff can access it.

4 changes: 3 additions & 1 deletion app/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

/build
/app/build
local.properties
local.properties

google-services.json
41 changes: 33 additions & 8 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ plugins {
alias(libs.plugins.ktfmt)
alias(libs.plugins.sonar)
id("jacoco")
id("com.google.gms.google-services")
}

// Force JaCoCo version to support Java 21
configurations.all {
resolutionStrategy {
force("org.jacoco:org.jacoco.core:0.8.11")
force("org.jacoco:org.jacoco.agent:0.8.11")
force("org.jacoco:org.jacoco.report:0.8.11")
}
}

android {
Expand All @@ -25,7 +35,7 @@ android {

buildTypes {
release {
isMinifyEnabled = false
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
Expand All @@ -39,15 +49,15 @@ android {
}

testCoverage {
jacocoVersion = "0.8.8"
jacocoVersion = "0.8.11"
}

buildFeatures {
compose = true
}

composeOptions {
kotlinCompilerExtensionVersion = "1.4.2"
kotlinCompilerExtensionVersion = "1.5.1"
}

compileOptions {
Expand Down Expand Up @@ -93,12 +103,13 @@ android {

sonar {
properties {
property("sonar.projectKey", "gf_android-sample")
property("sonar.projectName", "Android-Sample")
property("sonar.organization", "gabrielfleischer")
property("sonar.projectKey", "SkillBridgeee_SkillBridgeee")
property("sonar.projectName", "SkillBridgeee")
property("sonar.organization", "skilbridge")
property("sonar.host.url", "https://sonarcloud.io")
property("sonar.gradle.skipCompile", "true")
// Comma-separated paths to the various directories containing the *.xml JUnit report files. Each path may be absolute or relative to the project base directory.
property("sonar.junit.reportPaths", "${project.layout.buildDirectory.get()}/test-results/testDebugunitTest/")
property("sonar.junit.reportPaths", "${project.layout.buildDirectory.get()}/test-results/testDebugUnitTest/")
// Paths to xml files with Android Lint issues. If the main flavor is changed, this file will have to be changed too.
property("sonar.androidLint.reportPaths", "${project.layout.buildDirectory.get()}/reports/lint-results-debug.xml")
// Paths to JaCoCo XML coverage report files.
Expand All @@ -111,7 +122,6 @@ fun DependencyHandlerScope.globalTestImplementation(dep: Any) {
androidTestImplementation(dep)
testImplementation(dep)
}

dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
Expand All @@ -122,6 +132,13 @@ dependencies {
globalTestImplementation(libs.androidx.junit)
globalTestImplementation(libs.androidx.espresso.core)

// Firebase
implementation(libs.firebase.database.ktx)
implementation(libs.firebase.firestore)
implementation(libs.firebase.ui.auth)
implementation(libs.firebase.auth.ktx)
implementation(libs.firebase.auth)

// ------------- Jetpack Compose ------------------
val composeBom = platform(libs.compose.bom)
implementation(composeBom)
Expand All @@ -148,6 +165,10 @@ dependencies {

// ---------- Robolectric ------------
testImplementation(libs.robolectric)

implementation("androidx.navigation:navigation-compose:2.8.0")
implementation("androidx.compose.material3:material3:1.3.0")
implementation("androidx.activity:activity-compose:1.9.3")
}

tasks.withType<Test> {
Expand All @@ -158,6 +179,10 @@ tasks.withType<Test> {
}
}

jacoco {
toolVersion = "0.8.11"
}

tasks.register("jacocoTestReport", JacocoReport::class) {
mustRunAfter("testDebugUnitTest", "connectedDebugAndroidTest")

Expand Down

This file was deleted.

38 changes: 38 additions & 0 deletions app/src/androidTest/java/com/android/sample/MainActivityTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.onRoot
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.sample.MainApp
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class MainActivityTest {

@get:Rule val composeTestRule = createComposeRule()

@Test
fun mainApp_composable_renders_without_crashing() {
composeTestRule.setContent { MainApp() }

// Verify that the main app structure is rendered
composeTestRule.onRoot().assertExists()
}

@Test
fun mainApp_contains_navigation_components() {
composeTestRule.setContent { MainApp() }

// Verify bottom navigation exists by checking for navigation tabs
composeTestRule.onNodeWithText("Skills").assertExists()
composeTestRule.onNodeWithText("Profile").assertExists()
composeTestRule.onNodeWithText("Settings").assertExists()

// Test for Home in bottom nav specifically, or use a different approach
composeTestRule.onAllNodes(hasText("Home")).fetchSemanticsNodes().let { nodes ->
assert(nodes.isNotEmpty()) // Verify at least one "Home" exists
}
}
}
Loading