Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion content/docs/ideas_page_for_summer_of_code_2026.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ a bit after a fantastic run on our core tool.
| ----------- | ----------- | ----------- | ----------- | ----------- | ------ |
| [ Ultimate Alarm Clock III ](/public/gsoc/2026/ultimate_alarm_clock_3) | The ultimate alarm clock, with features no other one has. And free! | Flutter | Good application design | Medium | 350 hours |
| [ support more torrent clients ](/public/gsoc/flutter-more-clients) | We'd like to add support for other clients to our ruTorrent mobile interface (which of course will get a new name): [Flood](https://flood.js.org) and [Deluge](https://deluge-torrent.org). | Flutter | API, Teamwork | Medium | Discuss |
| [TaskWarrior](/public/gsoc/2026/taskwarrior) |We aim to enhance the existing app by seamlessly integrating CCSync/TaskServer for better synchronization and functionality.: | Flutter | Scalability | Medium | 175 hours |
| [TaskWarrior](/public/gsoc/2026/taskwarrior) | Backend Migration, Codebase Modularization, and Reporting Enhancements. | Flutter, Rust | Scalability | Medium | 175 hours |


#### Systems
Expand Down
258 changes: 56 additions & 202 deletions content/public/gsoc/2026/taskwarrior.md
Original file line number Diff line number Diff line change
@@ -1,202 +1,56 @@
# **TaskWarrior Mobile App - Enhancing the User Experience with CCSync**

## **Mentor**

**Mabud Alam**

- Zulip Handle: [https://ccextractor.zulipchat.com/#user/856060](https://ccextractor.zulipchat.com/#user/856060)

## **Time Estimation**

**175 hours**

## **Project Overview**

[TaskWarrior](https://taskwarrior.org/) is a powerful command-line task management tool that helps users manage their tasks efficiently through a terminal interface. It offers task synchronization, advanced filtering, and script-based integration via CLI.

## However, despite its power, **TaskWarrior lacks a modern cross-platform graphical user interface (GUI)** that can match its CLI capabilities. To bridge this gap, we built a **Flutter-based mobile app** for TaskWarrior that allows users to:

## ✅ **What We Achieved Last Year (2025)**

Last year, we made significant progress by:

- 🚀 **Migrating most of the codebase to GetX** for better state management.
- 💾 Enabling sync with **TaskServer 2.0 (TS 2.0)**.
- 📱 Improving the mobile app's usability and performance.
- Unit tests

However, a few key challenges still remain:

- Some parts of the app **still use the old provider-based state management**, so we want to complete the migration to **GetX**.
- We **haven't fully integrated CCSync/TaskServer 3.0** (which we built separately), and our app only supports TaskServer 2.0.
- We lack automated build releases (to **F-Droid**) and automated testing workflows.
- There's **no iOS home widget** for quick task access.
- Desktop optimization is still missing despite Flutter's growing desktop support.

---

## ✅ **Your Task for This Year (2026)**

This year, we aim to **finalize the TaskWarrior app** by:

1. **Completing the migration to GetX**.
2. **Extending sync support for CCSync (TaskServer 3.0)** without breaking existing TaskServer 2.0 support.
3. **Automating nightly builds via F-Droid and GitHub Actions**.
4. **Building an iOS home screen widget** for quick task access.
5. **Optimizing the app for desktop usage (macOS)**.
6. **Ensuring complete test coverage** (unit, integration, end-to-end).
7. **Simplifying codebase architecture** and reducing unnecessary bloat.
8. **Maintaining the core TaskWarrior philosophy** — minimal, fast, and powerful.

---

## **Key Deliverables**

### ✅ **1. Complete Migration to GetX (High Priority)**

- A large portion of the app has already been migrated to **GetX**, but some modules still use **heavy setState** for state management.
- Your task will be to:
- 🚀 Move the remaining sections to **GetX**.
- 💡 Ensure state management is clean, reusable, and optimized.
- ✅ Remove redundant code and reduce app bloat.
- This will future-proof the app and improve scalability.

---

### ✅ **2. Integrate CCSync (TaskServer 3.0) Without Breaking TaskServer 2.0**

- **Current State:** The app supports sync only with **TaskServer 2.0**.
- **Goal:** Extend support for **CCSync/TaskServer 3.0** without breaking existing TaskWarrior 2.0 functionality.
- **Tasks:**
- 🔄 **Create separate data models** for TaskServer 2.0 and TaskServer 3.0.
- 💡 Implement an UI to allow user which taskserver they want to use for different profiles.
- 📡 Provide seamless sync functionality for both versions.
- 💬 **Collaborate with CCSync developers** to ensure full compatibility.

💡 **Note:** Some groundwork has already been done to integrate CCSync, so your job will be to **improve, optimize, and finalize** the integration.

---

### ✅ **3. Build Full Test Coverage (Must-Have)**

- The app currently lacks complete test coverage. Your task will be to:
- 🚀 Write **unit tests** for all major functionalities.
- 🧪 Implement **integration tests** to ensure seamless task sync.
- ✅ Enable **end-to-end testing** using Flutter integration tests.
- 📊 Achieve **at least 90% test coverage** across the codebase.

This will ensure production-level stability and prevent future bugs.

---

### ✅ **4. Automate Nightly Builds (to F-Droid + GitHub Actions)**

- One major issue is that our app doesn't have automated builds.
- Your task will be to:
- 🤖 Setup **F-Droid** for nightly builds.
- 🔄 Create **GitHub Actions CI/CD workflows** that automatically:
- Build APK and AAB packages.
- Push releases to **F-Droid**.
- Notify on failures via GitHub Actions.
- This will drastically simplify app distribution for users.

---

### ✅ **5. Develop an iOS Home Widget for Quick Task Access**

- Create an iOS home screen widget that allows users to:
- ✅ View pending tasks.
- ✅ Mark tasks as completed.
- ✅ Add new tasks quickly.
- This will significantly improve user retention for iOS users.
- Android widget is already done : https://github.com/CCExtractor/taskwarrior-flutter/pull/417

---

### ✅ **6. Optimize Desktop Support (macOS/Linux)**

- Since **Flutter now supports desktop**, we want to optimize TaskWarrior to:
- ✅ Run smoothly on **macOS/Linux/Windows desktops**.
- ✅ Provide a desktop-friendly UI/UX.
- ✅ Sync tasks seamlessly across desktop and mobile.
- This will position **TaskWarrior** as a powerful multi-platform task manager.

---

### ✅ **7. Ensure No Feature Regression**

- One of our biggest concerns is **breaking existing functionality**.
- Your task is to ensure that:
- ✅ TaskServer 2.0 sync continues to work as-is.
- ✅ TaskServer 3.0 integration works without conflict.
- ✅ The app does not introduce unnecessary bloat or complexity.

---

### ✅ **8. iOS App**

- Release the first version of the Flutter app in AppStore
- Test all the features and make sure all works.

### ✅ **9. Propose Minimalist Improvements (Optional but Appreciated)**

- We **don't want to make TaskWarrior bloated** like other task managers.
- However, we encourage you to propose:
- Minimalist UI improvements.
- Feature enhancements that **align with TaskWarrior's philosophy**.
- Improvements that boost productivity without adding complexity.

---

## ✅ **Why Is This Project Important?**

By completing this project, you'll help:

- 🚀 Make **TaskWarrior a powerful cross-platform task manager**.
- 🔄 Provide seamless sync between mobile, desktop, and CLI.
- 📲 Improve the overall user experience for TaskWarrior users.
- 💾 Ensure TaskWarrior remains fast, minimal, and focused.

We don't want bloat — we want **efficiency, speed, and simplicity**.

---

## ✅ **Tech Stack**

Here's the preferred tech stack:

**Frontend:**

- ✅ **Flutter + Dart** (mandatory).
- ✅ **GetX** for state management.

**CI/CD:**

- ✅ **GitHub Actions**.
- ✅ **F-Droid** for nightly releases.

**Testing:**

- ✅ Flutter Test / Integration Test.

---

## 📜 **Ready to Contribute?**

👉 **[Start the Qualification Task](https://ccextractor.org/public/gsoc/takehome)**

💬 **Questions?**
Put your questions in Zulip.

---

## 📜 **Helpful Resources**

- [inthe.am](https://github.com/coddingtonbear/inthe.am) - Open-source TaskWarrior sync server.
- [Freecinc fork](https://gitlab.com/wt0f/taskd) - Self-hosted TaskWarrior server.
- [Golang TaskServer](https://github.com/szaffarano/gotas) - Alternative TaskServer.
- [Wingtask](https://wingtask.com/) - Task management stack.

---

✅ **We're super excited to see how you contribute. Let's make TaskWarrior the most powerful open-source task manager — without any bloat! 🚀**
# **TaskWarrior Mobile App**
## GSoC 2026 Goals

**Mentors:**
- [Shubham Ingale](https://ccextractor.zulipchat.com/#user/862906)
- [Mabud Alam](https://ccextractor.zulipchat.com/#user/856060)

---

### 1. Remove CCSync API related code and make components usable to only Taskchampion Integration
As We are no longer using CCSync backend APIs we need to clean code to remove those API calls and other related code to it.

### 2. Rust Library: Rust library that we are using to manipulate Replica of taskchampion.
It may include following sub goals:
- a. Modularize it
- b. Remove binaries from Repository (also from commit history) and make library compile automatically on every build
- c. Add support for missing variables in application

### 3. Modularize Application to arrange files of Taskchampion and v2
Structure may look like:
```
.
└── app/
├── models
├── modules
├── routes
├── services
├── tour
├── v3 (rename)
└── taskchampion
```

### 4. Static website for taskwarrior project of CCExtractor on branch fdroid-repo
- a. Static website about CCExtractor's Taskwarrior project
- b. Renaming branch `fdroid-repo` to `public-site`
- c. Have a log of Nightly and Commit that produced it

### 5. Implementation of reports
- Refer: [CCExtractor/taskwarrior-flutter#418](https://github.com/CCExtractor/taskwarrior-flutter/issues/418)

### 6. UI and UX Improvements
Some of the following interfaces are to be implemented as in given mockups
- Issue 1: https://github.com/CCExtractor/taskwarrior-flutter/issues/421
- Issue 2: https://github.com/CCExtractor/taskwarrior-flutter/issues/385

#### References
1. https://github.com/CCExtractor/taskwarrior-flutter/issues/382
2. https://github.com/CCExtractor/taskwarrior-flutter/issues/378
3. https://github.com/CCExtractor/taskwarrior-flutter/issues/385
4. https://github.com/CCExtractor/taskwarrior-flutter/issues/421

## Qualification Task

Add a function query_task() in rust lib (tc_helper) to search for a task(s) using different attribute(s) such as uuid, status, tags(+/-), project. Use that fuction somewhere in flutter side.

Send link for that branch **do not open PR to the repo** and also add link in proposal.