summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md106
1 files changed, 106 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a402229
--- /dev/null
+++ b/README.md
@@ -0,0 +1,106 @@
+# rafta.nvim
+
+A rafta task client for your favourite editor
+
+## Concept & Ideas
+
+### Design
+
+I love how [oil.nvim] works. The way you edit files feels very vim-like. My
+goal is to achieve something very similar with tasks taken from rafta instead
+of files. Here's my idea of how it should look (minus the pretty colors):
+
+```
+ An unkpecified task 󰈙 󰓹4   
+ An very long task about very important ongoing stuff 󰓹2
+ An incomplete task 󰈙 󰓹1  
+ Another incomplete task 󰈙 󰓹10  
+ Guess what, this task ain't done 󱈠 
+ An incomplete task again 󰈙 󰓹2 
+ A completed task
+ A blocked task, bummer
+
+
+
+
+*** You are offlline, will update next timee rafta.nvim is opened online ***
+```
+
+- **Status Column**:
+ -  Undefined
+ -  Ongoing
+ -  Pending/Todo
+ -  Done
+ -  Blocked
+- **Tags Column** (how many labels are attached to a given tag):
+ - 󰓹 1+ tags
+ - 󱈠 0 tags
+- **Other columns**:
+ -  Recurrence is enabled for that task
+ -  A Planned/Scheduled date is set for that task
+ -  A Deadline exists for that task
+ - 󰈙 The task has a description (markdown file)
+- **Color defines priority**
+ - 0 (undefined): `#f2f1f0`
+ - 1 (Highest): `#D84141`
+ - 2 (Very High): `#D75D47`
+ - 3 (High): `#DCA056`
+ - 4 (Medium): `#52C782`
+ - 5 (Low): `#52A2C7`
+ - 6 (Lowest): `#665FC4`
+
+To help the user know if the current task has schedules, deadlines, etc... The
+current line should be highlighted differently (since the columns are accross
+the screen).
+
+### Usage
+
+I don't want to force commands onto users, so I'll provide lua function which
+they can configure how they please:
+
+**Opening the rafta client** (could be used to LazyLoad):
+- `open`
+- `open_tab`
+- `open_split`
+- `open_vsplit`
+
+**Managing Tasks**:
+- `set_priority()`
+- `sort(pattern string)` I have yet to figure out a spec for this
+- `filter(pattern string)` I have yet to figure out a spec for this
+- `set_labels()` (edit each label on a separate row in a floating window)
+- `set_schedule()` (nvim input window[^1])
+- `set_deadline()` (nvim input window[^1])
+- `set_scheduled()` (nvim input window)
+- `view_description()` opens a `.md` file in a new buffer (default: Enter key)
+- `toggle_view_deadlines(show boolean)` (nil arg is a true toggle)
+- `toggle_view_schedules(show boolean)`
+- `toggle_view_priority(show boolean)` Shows priority number (default: hidden)
+
+- Tasks titles are just edited via insert mode
+- Saving the buffer uploads changed tasks (Same goes for descriptions)
+- If when coming back online, there is a conflict, a vimdiff could be opened
+ where each version is represented in a toml-like file (easier to diff for
+ humans than json). Sections which have no content are ommited (but all
+ sections alway have the same order for easy diffs)
+
+```
+[Title]
+This is the task title
+
+[Scheduled]
+2015-08-21,19:20
+
+[Tags]
+
+Work
+ThatOneProject
+TeamBuilding
+
+[Description]
+
+# Just append the markdown file here...
+```
+
+
+[^1]: Maybe also offer a datetimepicker floating window also?