Page MenuHomePhabricator

Outreachy 31: Scribe Client Mobile Application to Server Connections
Open, MediumPublic

Description

Project title:

Scribe Client Mobile Application to Server Connections

Brief summary:

Context:

The Scribe community makes Wikidata based mobile keyboard applications to help second language learners communicate in the languages they're learning. We have one released client application, Scribe-iOS, which provides keyboards that allow users to translate words, conjugate verbs and contextualize what they're typing in ways to help them understand what grammar to use. We'll soon be releasing Scribe-Android, and in prior internships we have developed the Scribe-Data CLI to extract data from Wikidata as well as Scribe-Server, a Toolforge API to serve data to client applications.

The task:

We're now ready to connect all of the various applications that we've developed into a system where data from Wikidata is extracted on a regular basis and provided to our client mobile applications via the Toolforge API. This project will focus on developing Scribe-Android and Scribe-iOS to allow them to call the data from the server.

Skills required:

Kotlin for Android development, Swift for iOS development

NOTE: The intern would ideally have access to developing on macOS so that they can use Xcode to develop the iOS application.

Learning outcomes:

The intern will expand their knowledge in or learn the following:

  • Android and iOS mobile development
  • API calls and data usage in mobile applications
  • Scheduling API based data update processes
  • Testing in mobile applications to assure that the developed code is robust

Possible mentor(s):

Microtasks:

All good first issue and help wanted issues and Scribe community projects are available for Outreachy applicants.

Please read through the project README.md and CONTRIBUTING.md files for each project for all steps needed to get started with contributing! Other helpful documents are the Scribe Wikidata Guide, architecture diagram and data contracts documentation.

The following are the links to good first issue and help wanted issues for all Scribe projects:

Any other additional information that the interns should know about:

NOTE: Community communications for Scribe happen in our public Matrix chatrooms. If you're new to Matrix, we'd suggest using Element as your client :) Feel free to introduce yourself in the General room if you'd like, and communication for the projects involved will happen in the Mentorship Programs, Android, iOS, and Data rooms.
IMPORTANT: GSoC / Outreachy candidates are required to complete micro-tasks during the application period to prove their ability to work on a three month long project

Event Timeline

Is this project ready for submission to the Outreachy website?

Hi @SWangari-WMF 👋 Yes we're ready to submit to the Outreachy website :) I can't remember if we can just submit already or if WMF needs to invite us to add something. Happy to take the next step once we know what to do 😊

You're good to go.. once you're ready, you can go ahead and submit to Outreachy.. :) I've already approved another project there..

Hi @SWangari-WMF 👋 Sorry for the wait on adding the project to Outreachy! I've just added it, and all mentors above have been given the link to sign up as co-mentors :)

@Henrikt93, @Afi570, @DeleMike, @Gauthammohanraj: Please see the Mentors + Mentees channel on Matrix for the link to sign up as a co-mentor. If you could confirm in the thread on Matrix that you've signed up then that would be great! Thank you all!

To the mentors: Has anyone started contributing to this project?

Hi @SWangari-WMF 👋 We already have four Outreachy participants that I know of who are in the Matrix channels and are communicating about/working on issues :) Thanks for checking in! Please let us know if further information is needed 😊

That's good to hear @AndrewTavis_WMDE good luck to the participants.. :) Let me know if you have any questions. I'll be checking in from time to time.. Thanks!

LGoto triaged this task as Medium priority.Nov 5 2025, 9:30 PM

Assigned to @Purnamasrahayu 🎉 We've just finished our planning meeting for the internship and are all excited to get started 😊

Weekly Update
Week 1: December 8 - December 12

  1. Overview of Tasks Completed:
    • Built a proof of concept for connecting to Scribe-Server and writing data to the database
    • Expanded the download button options for Scribe-Android
    • Investigated inconsistent border radius behavior on the iOS 26 simulator
    • Fixed UI unresponsiveness when switching translation language on Scribe-iOS
    • Added support capitalized input in Scribe-Android commands
  1. Key Accomplishments:
    • Added “Update” state to the download button and check for available updates based on the last updated date
    • Successfully connected to the server and wrote data to the SQLite database
  1. Challenges Faced:
    • Data duplication occurs on each request
    • Difficulty overriding the default iOS border radius
  1. Learnings and Skills Gained:
    • Learned how to fetch API data and store it in SQLite using Swift.
    • Improved code structure by removing redundancy and avoiding multiple database openings based on feedback from the capitalized input support task
  1. Feedback and Support Needed:
    • Guidance on properly overriding the default iOS border radius
    • Advice on notifying users about errors during data downloads
  1. Goals for Next Week:
    • Finalize/see progress on Scribe-iOS download button UI
    • Connect server request to the download button once the component is ready

Weekly Update
Week 2: December 15 - December 19

  1. Overview of Tasks Completed:
    • Fixed corner radius issue on iOS 26
    • Created a tooltip to confirm the translation source language (Android)
    • Created a tooltip to confirm the translation source language (iOS)
  1. Key Accomplishments:
    • Created a new reusable ConfirmDialog component using Kotlin and SwiftUI
  1. Challenges Faced:
    • Integrating storyboard-based navigation with SwiftUI components
  1. Learnings and Skills Gained:
    • Learned how to build reusable components in Kotlin and SwiftUI using component properties
  1. Feedback and Support Needed:
    • Reviews and feedback on the corner radius fix and the Android tooltip implementation

Weekly Update
Week 3: December 22 - December 26

  1. Overview of Tasks Completed:
    • Use ConfirmDialog component in Installation tab (iOS)
    • Use ConfirmDialog in Settings/Translation source language (Android and iOS)
    • Hide uninstalled keyboards from languages list of Download language data screen
    • Fix setting app language to Indonesian (Android)
  1. Key Accomplishments:
    • Successfully integrated UIKit and SwiftUI components with Storyboard navigation, resolving interface compatibility issues
    • Improved UX consistency by implementing ConfirmDialog across multiple screens (iOS Installation, Android/iOS Settings)
    • Fixed critical language selection bug for Indonesian users on Android
  1. Challenges Faced:
    • Resolving unexpected interface clashes between UIKit and SwiftUI during component integration
    • Navigating updated i18n key structure and matching keys across the codebase
  1. Learnings and Skills Gained:
    • Gained deeper understanding of project architecture and navigation patterns
    • Learned techniques for bridging UIKit and SwiftUI components effectively

Weekly Update
Week 4: December 29 - January 2

  1. Overview of Tasks Completed:
    • Convert Scribe-i18n into submodule in Scribe-Android and Scribe-iOS
    • Update i18n keys used in Scribe-Android and Scribe-iOS
    • Add Download button and Quick Tutorial button in Scribe-iOS' installation tab
    • Create Download language screen and add Update data section (iOS)
  1. Key Accomplishments:
    • Successfully migrated Scribe-i18n from subtree to submodule architecture across both Android and iOS projects
    • Enhanced iOS installation flow with new Download and Quick Tutorial entry points
    • Built new Download language screen with Update data section for iOS
  1. Challenges Faced:
    • Running into issues on making installation tab scrollable
  1. Learnings and Skills Gained:
    • Gained understanding of Git submodule workflow and how it differs from subtree management
    • Explored ScrollView behavior and constraint challenges in iOS layouts
  1. Feedback and Support Needed:
    • Need support to make installation tab scrollable