**Name:** Jagadeeshwar Reddy Kota
**Email:** kota.jagadesh123@gmail.com
**GitHub:** https://github.com/kota-jagadeesh
**LinkedIn:** https://linkedin.com/in/jagadeeshwar-reddy-kota
**Country:** India
**Preferred Time Zone:** Indian Standard Time (IST, UTC +5:30)
**University:** Amrita Vishwa Vidyapeetham
**Course:** Bachelor of Technology in Artificial Intelligence & Data Science
**Availability for Google Summer of Code:** Full-time (42+ hours per week)
## Synopsis
## App
Wikimedia Commons is an Android application developed by the Wikimedia Foundation that enables users to browse, upload, and contribute media directly to the Wikimedia Commons repository using their mobile devices. Users can easily select images from their device gallery or capture photos using the camera and upload them to the platform. The app aims to simplify the media contribution workflow and make it easier for contributors to share freely licensed images with the Wikimedia ecosystem.
## Project
This project aims to modernize the architecture of the **Wikimedia Commons Android App** by introducing a modular, scalable, and maintainable codebase, along with the gradual adoption of modern Android UI development using **Jetpack Compose**. The goal is to transform the current monolithic structure into a well-organized **multi-module architecture** that improves maintainability, reduces technical debt, and enables faster and safer feature development.
Over time, the Commons Android App has evolved to include multiple complex features such as media uploads, browsing, location-based contributions, user profiles, and background processing workflows. However, this growth has resulted in a tightly coupled architecture where different components are interdependent, making it difficult to introduce changes, debug issues, or scale the application efficiently. Additionally, the current UI is primarily based on legacy **XML layouts**, which increases development overhead and limits flexibility compared to modern declarative UI approaches.
Through my prior contributions to the **Commons Android App**, I have worked on multiple areas including upload workflows, UI improvements, and bug fixes related to lifecycle handling and state management. These experiences have provided me with practical insight into the challenges of the existing architecture, such as state inconsistencies during configuration changes, tightly coupled components, and difficulty in isolating features for independent development. Based on this understanding, the project focuses on introducing a structured and incremental migration strategy rather than a complete rewrite.
A key design principle of this project is **incremental and safe modernization**. Instead of rewriting the entire application at once, the project will adopt a phased approach where individual features are extracted into independent modules, refactored using modern architectural patterns, and reintegrated into the application without disrupting existing functionality. This ensures stability while progressively improving the codebase.
## Core Deliverables
To achieve this, the project will deliver the following core improvements:
**Deliverable 1: Modular Architecture with Core and Feature Modules**
The project will introduce a multi-module architecture by separating the application into core modules and feature modules. Core modules will include shared functionalities such as networking, database access, dependency injection, utilities, and UI components. Feature modules such as authentication, onboarding, profile, contributions, and file selection will be developed as independent units with clear boundaries.
This modularization will reduce coupling between components, enable independent development and testing of features, and significantly improve the maintainability and scalability of the application.
To prevent circular dependencies, feature modules will not depend on each other directly. All shared dependencies will be accessed through core modules, and inter-feature communication will be handled via the app module or well-defined interfaces. This ensures clear module boundaries and maintainable dependency graphs.
**Deliverable 2: Incremental Migration to Modern Android Architecture (MVVM)**
Each feature module will be refactored using a clean architecture approach based on the **Model-View-ViewModel (MVVM)** pattern. This includes clear separation of concerns through data, domain, and UI layers, along with the introduction of repository patterns for managing data flow.
Instead of performing a large-scale rewrite, the migration will follow a structured “extract → refactor → integrate” approach, ensuring that existing functionality remains stable while gradually improving code quality and structure.
**Deliverable 3: Gradual Adoption of Jetpack Compose**
The project will introduce **Jetpack Compose** for building modern, declarative UI components. Rather than replacing all XML-based layouts at once, Compose will be adopted incrementally, starting with simpler screens such as onboarding and progressively extending to more complex interfaces.
This approach ensures compatibility with the existing UI while enabling the application to move towards a more flexible and maintainable UI system. A shared design system will also be introduced to maintain consistency across components.
**Deliverable 4: Incremental Migration from RxJava to Kotlin Coroutines and Flow**
The project will modernize asynchronous data handling by gradually replacing **RxJava** with **Kotlin Coroutines** and **Flow** within the modules being refactored. This migration will be performed incrementally to avoid introducing instability in the application.
By adopting Flow, the project will improve readability, lifecycle awareness, and state management, while also reducing method count and overall app size compared to RxJava. Additionally, Flow integrates seamlessly with Jetpack Compose through APIs such as collectAsStateWithLifecycle(), enabling more efficient and lifecycle-aware UI updates.
**Deliverable 5: Improved Stability and Performance through Structured Refactoring**
By modularizing the application and restructuring feature implementations, the project will also address existing issues such as crashes, **ANRs** (Application Not Responding errors), and state inconsistencies. Modules such as Auth and Contributions are prioritized due to known ANRs, crashes, and stability issues observed in these areas. Addressing these modules early will help improve reliability while validating the modularization approach on critical parts of the application.
By integrating these improvements into the **Commons Android App**, the project will establish a modern, scalable foundation that supports future development and encourages new contributors to engage with the codebase. This structured approach reduces technical debt, improves code clarity, and ensures that the application can evolve efficiently in the long term.
**Issue Links**
- App Revamp with Compose (Parent Issue): https://github.com/commons-app/apps-android-commons/issues/6626
- App Modularization: https://github.com/commons-app/apps-android-commons/issues/6628
- Compose Migration: https://github.com/commons-app/apps-android-commons/issues/6629
- GSoC 2026 Discussion (Scope & Strategy): https://github.com/commons-app/apps-android-commons/issues/6691
- Phabricator Task link: {T415272}
**Possible Mentor(s)**
- Mentor: @kaartic (Kaartic Sivaraam)
- Mentor: @neeldoshii (Neeldoshii)
**Have you contacted the mentors already?**
Yes
## Technical Approach
This project focuses on transforming the **Wikimedia Commons Android App** from a monolithic architecture into a modular, scalable, and maintainable system, while incrementally adopting modern Android development practices such as **Jetpack Compose** and **Kotlin Flow**. The implementation will follow a structured and incremental approach to ensure stability and avoid introducing regressions.
### 1. Modular Architecture Design
The current application is structured as a single module with feature-based packages, leading to tight coupling and difficulty in isolating functionality. To address this, the project will introduce a **multi-module architecture** consisting of **core modules** and **feature modules**.
#### 1.1 Core Modules
Core modules will contain shared functionalities that are used across multiple features. These modules will act as the foundation for all feature modules.
The following core modules will be introduced:
{F73434559 width=750, height=350 }
- **core-network**: Handles API communication, including Retrofit configuration, API interfaces, and network utilities.
- **core-database**: Manages local data storage, including Room database and data access objects.
- **core-di**: Contains dependency injection setup using Dagger, providing shared dependencies across modules.
- **core-utils**: Includes utility classes such as logging, concurrency helpers, and common extensions.
- **core-ui**: Defines the design system, including themes, typography, colors, and reusable UI components such as buttons (primary/secondary), text components, input fields, loaders, error states, and dialog components.
- **core-domain**: Contains shared business logic, use cases, and repository interfaces used across feature modules.
Additionally, a **build-logic** module will be introduced to centralize dependency management and Gradle configurations using convention plugins. This ensures consistency across modules and simplifies dependency updates.
#### 1.2 Feature Modules
Feature modules will encapsulate specific functionalities and will be independently developed and tested. Each feature module will follow a consistent internal structure:
{F73434599 width=600, height=350}
Current structure:
app/src/main/java/fr/free/nrw/commons/auth/
Proposed modular structure:
feature-auth/
├── data/
├── ui/
The following feature modules will be prioritized:
- **Auth Module**: Login, signup, and session management.
- **Welcome Module**: Onboarding and initial user flow.
- **Profile Module**: User profile, achievements, and leaderboard.
- **Contributions Module**: User uploads and contribution tracking.
- **FilePicker Module**: Media selection and file handling (custom selector used in upload workflow).
- **Explore Module** (includes Nearby functionality): Map-based exploration and location-driven media browsing.
Additional modules such as settings, notifications, location, and feedback will be modularized if time permits.
### 2. Architecture Pattern
Each feature module will follow the **Model-View-ViewModel (MVVM)** architecture with a clean separation of concerns:
- **UI Layer**: Composable screens and UI logic.
- **Domain Layer**: Business logic and use cases will be placed in a shared core:domain module rather than inside each feature module. This ensures that use cases act as a single source of truth and can be reused across multiple feature modules, avoiding duplication and unnecessary complexity.
- **Data Layer**: Repository implementations and data sources.
The data flow will follow:
{F73434632 width=600, height=250}
UI → ViewModel → UseCase → Repository → Data Source (API/DB)
This separation ensures improved testability, maintainability, and scalability.
### 3. Migration Strategy (Incremental Refactoring)
A key principle of this project is **incremental migration** rather than a full rewrite.
The migration will follow a structured approach:
{F73434654 width=550, height=80}
1. **Extract**: Extract existing feature logic into a new module.
2. **Refactor**: Reorganize code into data, domain, and UI layers using MVVM.
3. **Integrate**: Integrate the refactored module back into the main application while preserving existing functionality.
4. **Stabilize**: Test functionality and fix regressions.
This approach ensures that the main application remains functional throughout the migration process and reduces the risk of introducing breaking changes.
### 4. Jetpack Compose Integration Strategy
Modern UI development will be introduced using **Jetpack Compose**.
Instead of replacing all XML layouts at once, Compose will be adopted incrementally:
{F73434683 width=250, height=400}
- Begin with simple screens (e.g., onboarding).
- Introduce reusable composable components in the **core-ui** module.
- Use interoperability (**ComposeView**) to integrate Compose with existing XML-based screens.
- Gradually migrate selected screens in feature modules.
A full UI redesign is not within the scope of this project; instead, the focus is on modernizing UI implementation while maintaining functional consistency.
### 5. Asynchronous Data Handling (RxJava → Flow)
The current codebase uses **RxJava** for asynchronous operations. As RxJava is now less preferred in modern Android development, the project will introduce **Kotlin Coroutines** and **Flow**.
Key principles:
- Migration will be incremental, limited to refactored modules.
- Existing RxJava code will not be aggressively removed from untouched modules.
- **Flow** will be used for:
- UI state management
- Asynchronous data streams
- Lifecycle-aware operations
This ensures a smooth transition without destabilizing the application.
### 6. Dependency Injection Strategy
The project will continue using **Dagger** for dependency injection, as it is already integrated into the codebase.
- Shared dependencies will be moved to the **core-di** module.
- Feature modules will define their own scoped dependencies where necessary.
- Dependency graphs will be structured to avoid circular dependencies between modules.
Future migration to **Hilt** can be explored but is not included within the scope of this project.
### 7. Navigation Strategy
The project will maintain compatibility with the existing navigation system while gradually introducing improvements:
- Existing fragment-based navigation will remain functional.
- New Compose screens will be integrated using interoperability.
- Navigation will initially remain fragment-based to ensure stability. Compose-based screens will be integrated using ComposeView alongside existing XML layouts.A complete migration to a Compose navigation system is considered out of scope for this project. However, all newly modularized features will be designed to be navigation-agnostic, ensuring that future migration to Compose Navigation can be performed smoothly without major refactoring.
### 8. Performance and Stability Improvements
By restructuring the application, the project will also address stability issues such as **ANRs** and crashes identified in modules like authentication and contributions.
Improvements include:
- Eliminating blocking calls on the main thread
- Improving lifecycle-aware state handling
- Reducing unnecessary coupling between components
- Isolating feature-specific logic to prevent cross-module regressions
### 9. Testing Strategy
To ensure reliability, the project will include:
- Unit tests for **ViewModels** and domain logic
- Integration testing for feature modules
- Testing will be introduced incrementally alongside module extraction and refactoring, following a lightweight TDD approach where feasible.
- Core modules will be mocked during testing to ensure feature modules can be tested independently.
- Gradual improvement of test coverage as modules are refactored
Testing flow will follow the same architecture (UI -> ViewModel -> UseCase -> Repository), with core layers mocked for isolation.
## Implementation Plan
This project will be executed in a structured, phase-wise manner, focusing on incremental modularization, safe migration, and gradual adoption of modern Android practices. The implementation is designed to ensure stability while progressively improving the architecture of the application.
### Phase 1: Foundation Setup and First Feature Module
The first phase focuses on establishing the foundational architecture required for modularization and validating the approach using a critical feature module.
**Core Tasks:**
- Set up a **build-logic** module to centralize dependency management and Gradle configurations using convention plugins.
- Create core modules:
- **core-network** for API handling and Retrofit configuration
- **core-database** for Room database and local storage
- **core-di** for dependency injection using Dagger
- **core-utils** for shared utilities and helper functions
- **core-ui** for design system and reusable UI components
**Feature Module:**
- Modularize the **Auth** module:
- Extract authentication-related code into an independent module
- Refactor into data, domain, and ui layers using MVVM
- Introduce **Kotlin Coroutines** and **Flow** within the module where applicable
- Integrate the module back into the main application
**Outcome:**
- A stable modular foundation
- A fully functional, refactored **Auth** module demonstrating the architecture
### Phase 2: Expansion to Core User-Facing Modules
This phase focuses on expanding the modular architecture to additional user-facing features and introducing **Jetpack Compose** in a controlled manner.
**Feature Modules:**
- Modularize:
- **Welcome / Onboarding** module
- **Profile / Leaderboard** module
**Tasks:**
- Extract and refactor each module into independent feature modules
- Apply **MVVM** architecture consistently across modules
- Introduce **Jetpack Compose** for selected UI screens:
- Begin with onboarding screens
- Gradually extend to profile-related UI components
- Reuse components from **core-ui** to ensure consistency
**Outcome:**
- Multiple modules successfully integrated into the modular architecture
- Initial Compose-based UI components introduced and working alongside existing XML layouts
### Phase 3: Functional Modules and Data Handling Improvements
This phase focuses on modules involving data handling and slightly more complex workflows, along with improvements in asynchronous processing.
**Feature Modules:**
- Modularize:
- **Contributions** module
- **FilePicker** module
**Tasks:**
- Refactor modules into data, domain, and ui layers
- Replace **RxJava** usage with **Kotlin Coroutines** and **Flow** within these modules
- Improve state handling and lifecycle-aware data flow
- Ensure proper integration with existing upload workflows
**Outcome:**
- Improved data handling using Flow
- Better state management and reduced complexity in asynchronous operations
### Phase 4: Optional Extensions (If Time Permits)
This phase includes additional modules that can be modularized to further extend the architecture.
**Modules:**
- Settings
- Notifications
- Location
- Feedback
**Tasks:**
- Extract and modularize selected modules
- Apply consistent architecture patterns
- Minimal UI changes (no major Compose migration)
**Outcome:**
- Extended modular coverage of the application
- Demonstration of scalability of the architecture
### Continuous Tasks Throughout the Project
The following tasks will be performed continuously across all phases:
- Ensuring backward compatibility and avoiding regressions
- Testing modules after each integration
- Fixing bugs and addressing issues such as crashes and ANRs
- Maintaining clear documentation for each module
- Regular communication with mentors for feedback and alignment
## Timeline
**Note** : During **May 20 - June 3**, my university end-semester examinations will take place. While this overlaps slightly with the early coding period, I will remain active in the project and the community. As I am already familiar with the Commons Android App and the contributor workflow, I plan to begin preliminary implementation during the community bonding period while also participating in discussions and reviewing existing pull requests where possible. Although development progress may be slightly slower during examination days, I will continue contributing consistently and will ensure that any limited progress during this period is compensated once the exams conclude.
| Timeframe | Start Date | End Date | Tasks and Subtasks |
|--------------------------------|-----------------|-----------------|------------------------------------------------------------------------------------------------------------------------------|
| **Community Bonding Period** | May 1, 2026 | May 24, 2026 | Get familiar with mentors and the Wikimedia developer community. Study existing app architecture, identify tightly coupled components, and review modularization patterns. Analyze issues [#6691](https://github.com/commons-app/apps-android-commons/issues/6691). Finalize module prioritization and architecture design. Set up development environment. |
| **Week 1** | May 25, 2026 | May 31, 2026 | **Setup project foundation** |
| Subtask | May 25, 2026 | May 27, 2026 | Create **build-logic** module and configure centralized dependency management |
| Subtask | May 28, 2026 | May 31, 2026 | Begin incremental extraction of core modules (starting with utilities and shared components) and progressively expand to networking, database, and DI layers |
| **Week 2** | June 1, 2026 | June 7, 2026 | **Continue incremental core architecture setup and stabilization** |
| Subtask | June 1, 2026 | June 4, 2026 | Setup **core-di** and refactor dependency injection structure |
| Subtask | June 5, 2026 | June 7, 2026 | Create **core-ui** module and define base theme/design system |
| **Week 3** | June 8, 2026 | June 14, 2026 | **Start Auth module modularization** |
| Subtask | June 8, 2026 | June 11, 2026 | Extract **Auth** module and restructure into data, domain, ui layers |
| Subtask | June 12, 2026 | June 14, 2026 | Integrate **Auth** module with main app and ensure functionality |
| **Week 4** | June 15, 2026 | June 21, 2026 | **Refine Auth module** |
| Subtask | June 15, 2026 | June 18, 2026 | Introduce ViewModel-based state handling and clean architecture |
| Subtask | June 19, 2026 | June 21, 2026 | Introduce **Kotlin Coroutines/Flow** in **Auth** module where applicable |
| **Week 5** | June 22, 2026 | June 28, 2026 | **Modularize Welcome / Onboarding** |
| Subtask | June 22, 2026 | June 25, 2026 | Extract onboarding module and refactor structure |
| Subtask | June 26, 2026 | June 28, 2026 | Implement initial **Jetpack Compose** screens for onboarding |
| **Week 6** | June 29, 2026 | July 5, 2026 | **Modularize Profile module** |
| Subtask | June 29, 2026 | July 2, 2026 | Extract **Profile** module and refactor architecture |
| Subtask | July 3, 2026 | July 5, 2026 | Introduce **Compose** components for selected profile screens |
| **Week 7 (Midterm Milestone)** | July 6, 2026 | July 12, 2026 | **Stabilization and midterm evaluation** |
| Subtask | July 6, 2026 | July 9, 2026 | Test integrated modules (**Auth**, **Welcome**, **Profile**) |
| Subtask | July 10, 2026 | July 12, 2026 | Fix bugs, improve integration, and finalize midterm submission |
| **Week 8** | July 13, 2026 | July 19, 2026 | **Modularize Contributions module** |
| Subtask | July 13, 2026 | July 16, 2026 | Extract **Contributions** module and refactor into clean layers |
| Subtask | July 17, 2026 | July 19, 2026 | Improve data flow and state handling |
| **Week 9** | July 20, 2026 | July 26, 2026 | **Modularize FilePicker module** |
| Subtask | July 20, 2026 | July 23, 2026 | Extract **FilePicker** module and isolate file handling logic |
| Subtask | July 24, 2026 | July 26, 2026 | Integrate module with existing upload pipeline |
| **Week 10** | July 27, 2026 | August 2, 2026 | **Flow migration and improvements** |
| Subtask | July 27, 2026 | July 30, 2026 | Replace **RxJava** with **Flow** in **Contributions**/**FilePicker** modules |
| Subtask | July 31, 2026 | August 2, 2026 | Optimize lifecycle-aware data handling |
| **Week 11** | August 3, 2026 | August 9, 2026 | **Optional modules + testing** |
| Subtask | August 3, 2026 | August 6, 2026 | Modularize modules (**Settings** / **Notifications** / **location** / **feedback** if time permits) |
| Subtask | August 7, 2026 | August 9, 2026 | Add unit tests and integration tests |
| **Week 12** | August 10, 2026 | August 16, 2026 | **Final integration and project completion** |
| Subtask | August 10, 2026 | August 13, 2026 | Final bug fixes, performance improvements, and code cleanup |
| Subtask | August 14, 2026 | August 16, 2026 | Documentation, developer guidelines, and final report |
**This timeline is flexible and will be refined in consultation with mentors based on project progress and feedback.**
## Benefits to the Community
This project will significantly improve the maintainability, scalability, and overall development experience of the **Commons Android App** by introducing a modular architecture and modern Android development practices.
Currently, the app follows a tightly coupled monolithic structure, making it difficult to implement new features, fix bugs, and onboard new contributors efficiently. Additionally, the use of legacy UI approaches and inconsistent architecture increases development effort and the risk of regressions.
By introducing a structured **multi-module architecture** along with incremental adoption of **Jetpack Compose** and **Kotlin Flow**, this project will enable cleaner code organization, better separation of concerns, and improved development workflows.
Overall, this project will:
- Improve code maintainability and readability through modularization
- Reduce coupling between components, enabling safer and faster feature development
- Simplify onboarding for new contributors with a well-structured codebase
- Introduce modern UI development practices using **Jetpack Compose**
- Improve state management and asynchronous handling using **Kotlin Flow**
- Help reduce bugs, crashes, and ANRs through better architecture
These improvements will make the **Commons Android App** easier to maintain and scale in the long term, while also fostering a more contributor-friendly environment within the Wikimedia ecosystem.
## About Me
I am Jagadeeshwar Reddy Kota, a second-year undergraduate student pursuing a Bachelor of Technology in Artificial Intelligence and Data Science at Amrita Vishwa Vidyapeetham, Amritapuri. I am an active member of amFOSS and part of the Road to Wiki Cohort 2, where I have been consistently contributing to open-source projects.
I am primarily interested in Android development, web development, and machine learning. I have been working on Android development for over two years and have gained hands-on experience in building applications, debugging real-world issues, and improving user experience. I enjoy working on problems that require both system-level understanding and practical implementation.
I have built several projects across different domains:
* **Pokédex Android App**
https://github.com/Kota-Jagadeesh/Pok-Codex
* **Letterboxd Clone (Full Stack Web Application)**
https://github.com/Kota-Jagadeesh/LetterBoxd
* **EventFlow (Flutter-based QR Attendance System with Google Sheets integration)**
https://github.com/Kota-Jagadeesh/EventFlow
* **RL Trajectory Optimization (MATLAB, PPO-based control for 2-DOF manipulator)**
https://github.com/Kota-Jagadeesh/RL-Trajectory-Optimization
* **ResolveIt (Java Swing Complaint Management System)**
https://github.com/Kota-Jagadeesh/RESOLVIT
Worked on a few more projects across Android, web, and machine learning domains.
My work also extends into reinforcement learning and system design, where I explored trajectory optimization using Proximal Policy Optimization (PPO) for robotic control.
I have actively participated in the open-source and research community, including:
* **Wikimedia Hackathon 2025, Kochi, India** Certificate: https://drive.google.com/file/d/1ol-V07y_HHAsvOzFOwqba0LIdk2z_AKo/view?usp=sharing
* **International Conference on Sustainable & Resilient Futures (ICSRF)**
Certificate: https://drive.google.com/file/d/1fUzPlSfq2TNeYsscd7vgQJkG_nVhncmZ/view
Through my contributions to the Commons Android App, I have developed a strong understanding of the codebase, particularly in areas related to image handling and editing workflows. I enjoy collaborating with the community, reviewing pull requests, and working towards clean and maintainable solutions.
I am motivated by building efficient, real-world systems and continuously improving my technical skills through practical development and open-source contributions.
## Availability
**Eligible for Google Summer of Code and Outreachy?**
I am eligible for Google Summer of Code and am applying only for GSoC.
**Do you plan to submit any other proposal apart from this one?**
Yes, I have also submitted another proposal (T420138)
**Do you have any other plans this summer?**
No, I do not have any internships or other commitments during the GSoC period. I will have end-semester examinations from May 20 to June 5; however, I will remain active during this period by participating in discussions, reviewing pull requests, and making incremental progress. After the exams, I will fully dedicate my time to the project. Google Summer of Code is my top priority this summer.
**How many hours per week can you dedicate to this project?**
I will dedicate a minimum of 42+ hours per week to this project and am willing to invest additional time if required to meet project goals.
**Have you been accepted to GSoC before?**
No, this is my first time applying for Google Summer of Code.
## Previous Contributions
To date, I have submitted **48 pull requests**, of which **38 have been merged** and **10 are currently under review**.
### Merged Pull Requests (38)
| S.No | PR # | Title | Status |
|------|----------|-------------------------------------------------------------------------------------------|---------|
| 01 | [#6479](https://github.com/commons-app/apps-android-commons/pull/6479) | Fix: Explore map crashes when tapped recenter button | Merged |
| 02 | [#6429](https://github.com/commons-app/apps-android-commons/pull/6429) | Fix: App crashes theme change multi upload | Merged |
| 03 | [#6655](https://github.com/commons-app/apps-android-commons/pull/6655) | Fix: Prevent ActivityLauncher crash by moving registration onCreate | Merged |
| 04 | [#6661](https://github.com/commons-app/apps-android-commons/pull/6661) | UninitialisedPropertyAccessException ImageFragment onDestroy | Merged |
| 05 | [#6565](https://github.com/commons-app/apps-android-commons/pull/6565) | Fix: Preserve UploadActivity state across screen resize | Merged |
| 06 | [#6642](https://github.com/commons-app/apps-android-commons/pull/6642) | Fix: Incorrect rotation logic and re-edit bug | Merged |
| 07 | [#6775](https://github.com/commons-app/apps-android-commons/pull/6775) | Fix: Reset upload state & UI fragments on new external share intent | Merged |
| 08 | [#6520](https://github.com/commons-app/apps-android-commons/pull/6520) | Fix: bottom nav visibility media details | Merged |
| 09 | [#6425](https://github.com/commons-app/apps-android-commons/pull/6425) | Fix: location Permission prompt on Upload via mobile screen | Merged |
| 10 | [#6367](https://github.com/commons-app/apps-android-commons/pull/6367) | Fix email verification input | Merged |
| 11 | [#6653](https://github.com/commons-app/apps-android-commons/pull/6653) | Fix: Hide edit image button for unsupported non-JPEG files | Merged |
| 12 | [#6694](https://github.com/commons-app/apps-android-commons/pull/6694) | Fix: Improve UX for Edit image button on the non-JPEG files | Merged |
| 13 | [#6420](https://github.com/commons-app/apps-android-commons/pull/6420) | Fix: Add listener call in ImageAdapter to update UI & upload | Merged |
| 14 | [#6405](https://github.com/commons-app/apps-android-commons/pull/6405) | Make “File Usages” items clickable with correct URLs | Merged |
| 15 | [#6637](https://github.com/commons-app/apps-android-commons/pull/6637) | Feat: Link to actual profile when using custom author name | Merged |
| 16 | [#6738](https://github.com/commons-app/apps-android-commons/pull/6738) | Feat: Enhance license selection with Expanding Cards & simplified choices | Merged |
| 17 | [#6578](https://github.com/commons-app/apps-android-commons/pull/6578) | Feature: increase maximum zoom level on upload preview screen | Merged |
| 18 | [#6557](https://github.com/commons-app/apps-android-commons/pull/6557) | Enhance custom selector upload limit | Merged |
| 19 | [#6417](https://github.com/commons-app/apps-android-commons/pull/6417) | Added wiki prefix to titles in GlobalFileUsage | Merged |
| 20 | [#6625](https://github.com/commons-app/apps-android-commons/pull/6625) | Humanize github actions and prevent duplicate comments | Merged |
| 21 | [#6644](https://github.com/commons-app/apps-android-commons/pull/6644) | Fix: Add assignment confirmation comment and fix new contributor welcome logic | Merged |
| 22 | [#6632](https://github.com/commons-app/apps-android-commons/pull/6632) | Fix: Refine auto assignment logic | Merged |
| 23 | [#6635](https://github.com/commons-app/apps-android-commons/pull/6635) | Fix: Refine assignment logic with issue context | Merged |
| 24 | [#6604](https://github.com/commons-app/apps-android-commons/pull/6604) | Fix: missing accessibility for back button in singlewebviewactivity | Merged |
| 25 | [#6529](https://github.com/commons-app/apps-android-commons/pull/6529) | Test: Add campaigns api tests | Merged |
| 26 | [#6709](https://github.com/commons-app/apps-android-commons/pull/6709) | Fix: image sorting in custom selector to use historical order | Open |
| 27 | [#6363](https://github.com/commons-app/apps-android-commons/pull/6363) | Update bug report to use type:bug | Merged |
| 28 | [#6569](https://github.com/commons-app/apps-android-commons/pull/6569) | Update feature request to use type:feature | Merged |
| 29 | [#6698](https://github.com/commons-app/apps-android-commons/pull/6698) | Docs: fix the broken link | Merged |
| 30 | [#0066](https://github.com/commons-app/commons-app.github.io/pull/66) | Add link to commons mobile talk page for the app feedback | Merged |
| 31 | [#0065](https://github.com/commons-app/commons-app.github.io/pull/65) | Document the additional features of the app in the docs section | Merged |
| 32 | [#0063](https://github.com/commons-app/commons-app.github.io/pull/63) | Add the commons policy and guidelines links to help new contributors | Merged |
| 33 | [#0060](https://github.com/commons-app/commons-app-documentation/pull/60)| Fix: the broken link of images | Merged |
| 34 | [#0003](https://github.com/commons-app/maintenance/pull/3) | Docs: Update maintenance Readme | Merged |
| 35 | [#0054](https://github.com/commons-app/commons-app-documentation/pull/54)| Better documentation for the leaderboard | Merged |
| 36 | [#0057](https://github.com/commons-app/commons-app-documentation/pull/57)| Update link to unassigned bugs in documentation | Merged |
| 37 | [#0002](https://github.com/commons-app/maintenance/pull/2) | Add issue migration script | Merged |
| 38 | [#0059](https://github.com/commons-app/commons-app-documentation/pull/59)| Migrated from label:enhancement to type:feature | Merged |
### Pull Requests Under Review (10)
| S.No | PR | Title | Status |
|------|----------|-------------------------------------------------------------------------------------------|---------|
| 01 | [#6709](https://github.com/commons-app/apps-android-commons/pull/6709) | Fix: image sorting in custom selector to use historical order | Open |
| 02 | [#6532](https://github.com/commons-app/apps-android-commons/pull/6532) | Fix: Prevent crash when pausing/resuming uploads after screen rotation | Open |
| 03 | [#6579](https://github.com/commons-app/apps-android-commons/pull/6579) | Fix: Prevent crash in offline search caused by null map boundaries | Open |
| 04 | [#6602](https://github.com/commons-app/apps-android-commons/pull/6602) | Refactor: Centralize location service unavailability handling | Open |
| 05 | [#6605](https://github.com/commons-app/apps-android-commons/pull/6605) | Fix: stateless in searchActivity and media detail pager fragment during screen rotation | Open |
| 06 | [#6613](https://github.com/commons-app/apps-android-commons/pull/6613) | Fix: prevent UI settings on logout | Open |
| 07 | [#6623](https://github.com/commons-app/apps-android-commons/pull/6623) | Add unit tests for findUniqueFileName | Open |
| 08 | [#6580](https://github.com/commons-app/apps-android-commons/pull/6580) | Feature: Animated multi FAB upload in Pending Uploads | Open |
| 09 | [#6698](https://github.com/commons-app/apps-android-commons/pull/6698) | Enforce upload limit in first step of upload Flow | Open |
| 10 | [#6649](https://github.com/commons-app/apps-android-commons/pull/6649) | Automate issue assignment and implement inactivity management | Draft |
## Why Me / Motivation
This project strongly aligns with my interest in building scalable and maintainable systems, particularly in the context of Android application architecture and real-world software engineering. The challenge of transforming a monolithic application into a modular, well-structured system while ensuring stability and backward compatibility makes this problem both technically engaging and highly impactful.
My prior contributions to the **Commons Android App** have given me a strong understanding of the existing codebase, including its architecture, feature flows, and areas where tight coupling and complexity create challenges. Through working on bug fixes, UI improvements, and feature enhancements, I have gained practical insight into issues such as lifecycle handling, state management, and integration between different components. This familiarity allows me to approach modularization with a clear understanding of current limitations and realistic strategies for improvement.
I am comfortable working with Android development using **Kotlin** and modern development practices. I actively contribute to open source by fixing issues, reviewing pull requests, and collaborating with the community. I place strong emphasis on writing clean, maintainable, and well-structured code, which is especially important for a project focused on architectural improvements.
With my prior experience, familiarity with the **Commons Android App**, and strong interest in system design and modern Android development, I am confident in my ability to deliver a robust modular architecture that improves maintainability, enhances developer experience, and provides a solid foundation for future growth of the application.