-
Notifications
You must be signed in to change notification settings - Fork 28
GSoC20 Final Report, Yugantar
Hi! My name is Yugantar and I was a GSoC20 Student with AnitaB.org during which I've built the all-new Mentorship iOS app using SwiftUI from scratch.
The Mentorship iOS app is the iOS client for the Mentorship System, which is an application that matches women in technology to mentor each other, on career development, through 1:1 relations during a certain period of time.
- Mentorship iOS (Main)
- Mentorship Backend
The development of the all-new Mentorship iOS app in SwiftUI has happened in three phases-
Phase 1: Parity with the Mentorship Android app
Phase 2: Development of the project architecture, new features, and extensive testing
Phase 3: New features (backend + iOS), bug fixes, and polishing
Parity with the Mentorship Android app
The Mentorship iOS is an all-new app that has been inspired from the Mentorship android app. Our aim for the first phase was to achieve parity with the android app and have all the features in-place.
- Login and Sign-Up [UI]
- Login and Sign-Up [Backend Consumption]
- Members List [UI + Backend Consumption]
- Establish proper app flow, fix Travis fail, and remove garbage files
- Member Detail [UI]
- Send Request [Backend Consumption]
- Home Screen [UI]
- Home Screen [Backend Consumption]
- User Profile and Editor [UI]
- Update Profile [Backend Consumption]
- Settings Screen [UI]
- Settings About Screen [UI + Web]
- Complete Settings Implementation and Backend Integration
- Relation Screen [UI]
- Relation screen [Backend Consumption]
- Relation request actions to accept, reject, cancel, and delete request [UI + Backend Consumption]
Development of the project architecture, new features, and extensive testing
After achieving parity with the Mentorship android app in the phase 1, our focus in phase 2 was on developing a scalable app architecture (MVVM with Repository pattern), perform comprehensive automated testing, and implement new features including task comments and infinite scrolling.
- Network Layer Refactoring (with Repository pattern)
- Comprehensive automated testing (unit + integration)
- Task Comments [UI + Backend Consumption]
- Pagination in Members List (Infinite Scrolling) [UI + Backend Consumption]
New features (backend + iOS), bug fixes, and polishing
In the last phase, I worked on implementing additional features that would improve the user experience of the app including members search, report violations, and social sign-in. Work on the backend repository has also been done to create new APIs for report violations and social sign-in. Finally, additional polishing and bug fixes have been done.
- Members Search [UI + Backend Consumption]
- Report Violations (Backend)
- Report Violations (App) [UI + Backend Consumption]
- Social Sign-in (Backend)
- Social Sign-in (App) [UI + Apple/Google API + Backend Consumption]
- Fixed failing home service test
- Robust Service Tests + Travis CI Configuration
Throughout the GSoC coding period, I've published weekly blog posts on the progress of the project and the technologies used in it. In total, I've published 13 blog posts as part of my GSoC work, 1 in community bonding period and 12 in coding period. The blog posts are listed as follows-
- My journey of getting into GSoC’20
- My first week of GSoC coding period
- Working with AnitaB.org as a GSoC student
- My third week of coding in GSoC’20 and the power of the Combine framework
- Dub Dub week in GSoC
- A Tour of Generic Programming in the Mentorship iOS App
- Two tips I got from Apple engineers to avoid Memory Leaks and increase efficiency in SwiftUI
- Easy Pagination in SwiftUI
- Unit Test Networking Code in Swift Without Making Loads of Mock Classes
- Implement native Search Bar in SwiftUI
- Implement Sign-In with Google in a SwiftUI App
- Implement Sign in with Apple in a SwiftUI App
- Configuring Travis CI for Xcode projects
- Effective communication in a remote environment
- Balance between scalability and the current needs of the project
- Lots of new technologies (SwiftUI, Combine, XCTest, Flask, MVVM); lots of research and learning
- Complete clarity about the exact specifications of some features
- SwiftUI + Combine
- MVVM and Separation of Concerns
- Automated Testing (Unit + Integration)
- Project Documentation
- Backend and Flask (Python)
- Effective communication
- True meaning of Mentorship
- Flexibility
My overall experience in one phrase would be - huge learning experience! Not only have I learned a lot of new technologies during this GSoC (SwiftUI, Combine, MVVM, Repository pattern, Backend, Flask, Python, Keychain, Localization, etc), but I've also learned a lot about how organizations function (especially an open-source organization), how the admins and mentors function, how the community moves forward, how we can maintain security in an open-source project, and a lot more!
- Home
- Contribute To The Project
Documentation
- Setup and Install
- Tech Stack
- UI Design
- Backend Documentation
- App Architecture
- Main Concepts
- App Features
GSoC Students
- 2020 - Yugantar
- GSoC All Final Reports