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
86 changes: 86 additions & 0 deletions docs/Architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
The architecture used in this project is [GetX Architecture](https://pub.dev/packages/get), which organizes the codebase into three core layers:

# How GetX Architecture Works

Each module in the project follows a consistent three-layer structure:

**Bindings** — Handles dependency injection. Each screen has a binding class that registers its controller before the view is loaded, ensuring everything is available when needed.

**Controllers** — The brain of each screen. Controllers manage state, business logic, and interactions with services. They extend `GetxController` and expose reactive variables that the view observes.

**Views** — Pure UI. Views observe the controller's state and rebuild only when relevant data changes. They contain no business logic.

Every module under `lib/app/modules/` follows this pattern:
```
module_name/
├── bindings/ # Dependency injection
├── controllers/ # State & business logic
└── views/ # UI widgets
```

## Key Rules

- Views should **never** directly call services — always go through the controller.
- Views should contain **zero business logic** — only render what the controller exposes.
- Controllers should **not** depend on other controllers.
- Controllers **may be reused** across views if they share the same functionality.
- Services are **globally accessible** and shared across all controllers.

## Architecture Diagram

![GetX Architecture](https://user-images.githubusercontent.com/81030284/191010071-7c71c4a9-5515-43c0-b3c9-0eabf9cf2544.png)

Since services are global, a multi-screen app shares them while each screen gets its own controller and view:

![Multi-screen structure](https://user-images.githubusercontent.com/81030284/191010185-83bad438-4852-449d-b8f8-b8ec18d3d193.png)

# Project Structure
```
lib/
├── app/
│ ├── models/
│ ├── modules/
│ │ ├── about/
│ │ ├── detailRoute/
│ │ ├── home/
│ │ ├── logs/
│ │ ├── manageTaskServer/
│ │ ├── manage_task_champion_creds/
│ │ ├── onboarding/
│ │ ├── permission/
│ │ ├── profile/
│ │ ├── reports/
│ │ ├── settings/
│ │ ├── splash/
│ │ └── taskc_details/
│ ├── routes/
│ ├── services/
│ ├── tour/
│ ├── utils/
│ │ ├── add_task_dialogue/
│ │ ├── app_settings/
│ │ ├── constants/
│ │ ├── debug_logger/
│ │ ├── gen/
│ │ ├── home_path/
│ │ ├── language/
│ │ ├── permissions/
│ │ ├── taskc/
│ │ ├── taskchampion/
│ │ ├── taskfunctions/
│ │ ├── taskserver/
│ │ └── themes/
│ └── v3/
│ ├── champion/
│ ├── db/
│ ├── models/
│ └── net/
├── rust_bridge/
└── main.dart
```

# Resources

- [GetX Package](https://pub.dev/packages/get)
- [GetX Documentation](https://github.com/jonataslaw/getx)
- [GetX State Management Guide](https://github.com/jonataslaw/getx/blob/master/documentation/en_US/state_management.md)
64 changes: 64 additions & 0 deletions docs/Contribution-Guidelines-&-Development-Practices.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Contribution Guidelines

You can contribute to **Taskwarrior-Flutter** by:

- Reporting issues or bugs you find.
- Proposing improvements to the project.
- Forking the repository, modifying the code, and creating a Pull Request (PR).

Check [CONTRIBUTING.md](https://github.com/CCExtractor/taskwarrior-flutter/blob/main/CONTRIBUTING.md) for more details.

---

## Commit conventions

When opening PRs, **please specify the commit type** using the following conventions:

| Type | Description |
|------|-------------|
| `feat` | A new feature you're proposing |
| `fix` | A bug fix in the project |
| `style` | UI/UX improvements or styling updates |
| `test` | Testing-related updates |
| `docs` | Documentation updates |
| `refactor` | Code refactoring and maintenance |

---

## Development Practices

**Flutter Version**

Use **Flutter 3.41.2** or later for development (as of 23 Feb 2026):

\```
Flutter 3.41.2 • channel stable
Framework • revision 90673a4eef • 2026-02-18
Dart 3.11.0 • DevTools 2.54.1
\```

**File Naming Convention**

The project follows [snake_case](https://en.wikipedia.org/wiki/Snake_case) naming — this must be followed without fail.

**Examples** :
* File names : services_info.dart, dev_api_service.dart, home_view.dart
* Folder names : api, disk_explorer, smart_widgets


**UI/UX Constants**

Colors, dimensions, and any UI constants must be defined in the respective theme file:
`/lib/app/themes/themes.dart`

**Documentation**

Document all functions, classes, and logic you implement. Follow the [Effective Dart Documentation](https://dart.dev/guides/language/effective-dart/documentation) guidelines without fail.

---

## Community

Join the CCExtractor community on **Zulip** to propose improvements and connect with other contributors.

- 💬 [Join CCExtractor on Zulip](https://ccextractor.org/public:general:support?)
26 changes: 26 additions & 0 deletions docs/Home.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

![TaskWarrior (1)](https://user-images.githubusercontent.com/81030284/190668984-88c00c21-e2ad-4361-ba67-8a4a8fb349ca.png)

## Welcome to the TaskWarrior-Flutter wiki!

### About TaskWarrior-Flutter
* **TaskWarrior-Flutter** is a powerful, open-source mobile application built with **Flutter**. It brings the capabilities of the TaskWarrior Linux CLI to your mobile devices with synchronization across all your platforms.


### Core Features

- **TaskServer Integration**: Connect and sync your tasks directly from your CLI to your smartphone

- **Multi-Profile Support**: Maintain separate task profiles for different projects and purposes

- **Cross-Platform**: Available on iOS, Android, and Desktop platforms

- **Advanced Filtering**: Powerful filtering options to organize and find tasks quickly

- **Smart Sorting**: Multiple sorting options to prioritize and manage your tasks

- **Show Reports**: Track your progress through daily, weekly, or monthly reports.

- **Offline-First**: Work with your tasks even without internet connectivity


8 changes: 8 additions & 0 deletions docs/License.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# MIT License
Copyright (c) 2020 CCExtractor Development

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9 changes: 9 additions & 0 deletions docs/Requirements-&-Usage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
As of now, there is 2 possible way to use the app respective to the requirements -

# Using Flutter Dev Environment

First set up flutter on your device and can try the app using the flutter run in a dev environment which you can check out in [Getting Started](https://github.com/NishantSinghal19/taskwarrior-flutter/wiki/Setup-&-Configuration)

# Using APK

You can check the release of Taskwarrior app for it
21 changes: 21 additions & 0 deletions docs/Setup-&-Configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Getting Started
1. Clone the repository from GitHub:
```
git clone https://github.com/NishantSinghal19/taskwarrior-flutter.git
```
2. Navigate to the project's root directory:
```
cd taskwarrior-flutter
```
3. Install dependencies:
```
flutter pub get
```
4. Check for Flutter setup and connected devices:
```
flutter doctor
```
5. Run the app:
```
flutter run
```
1 change: 1 addition & 0 deletions docs/_Footer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
A mobile app of TaskWarrior in Flutter
14 changes: 14 additions & 0 deletions docs/_Sidebar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# **Introduction**
### [Home](https://github.com/NishantSinghal19/taskwarrior-flutter/wiki/Home)

# **Requirements**
### [Requirements and Usage](https://github.com/NishantSinghal19/taskwarrior-flutter/wiki/Requirements-&-Usage)

# **Setup and Configuration**
### [Getting Started](https://github.com/NishantSinghal19/taskwarrior-flutter/wiki/Setup-&-Configuration)

# **Architecture**
### [Overview](https://github.com/NishantSinghal19/taskwarrior-flutter/wiki/Architecture)

# **Contribution**
### [Contribution Guidelines and Development Practices](https://github.com/NishantSinghal19/taskwarrior-flutter/wiki/Contribution-Guidelines-&-Development-Practices)