commit fc9de294cb92f0c63e216a2930ab5652cabb2611
Author: brookjeynes <me@brookjeynes.dev>
Date: Wed, 10 Jun 2026 09:32:39 +0000
chore: initial commit
Diffstat:
3 files changed, 142 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
@@ -0,0 +1,4 @@
+.PHONY: build
+
+build:
+ gcc -o ./build/task main.c
diff --git a/main.c b/main.c
@@ -0,0 +1,5 @@
+#include <stdio.h>
+
+int main() {
+ printf("hello world");
+}
diff --git a/manifesto.txt b/manifesto.txt
@@ -0,0 +1,133 @@
+Manifesto
+=========
+
+Plain text is software and operating system agnostic. It's searchable,
+portable, lightweight, and easily manipulated. It's unstructured. It works when
+someone else's web server is down or your Outlook.PST file is corrupt. There's
+no exporting and importing, no databases or tags or flags or stars or
+prioritizing or _insert company name here_-induced rules on what you can and
+can't do with it.
+
+There are three key axes to an effective todo list
+
+1. Priority
+ Your todo list should be able to tell you what's the next most important
+ thing for you to get done - either by project or by context or overall. You
+ can optionally assign tasks a priority that'll bubble them up to the top of
+ the list.
+
+2. Project
+ The only way to move a big project forward is to tackle a small subtask
+ associated with it. Your system should be able to list out all the tasks
+ specific to a project.
+
+ In order to move along a project like "Cleaning out the garage", my task list
+ should give me the next logical action to take in order to move that project
+ along. "Clean out the garage" isn't a good todo item; but "Call Goodwill to
+ schedule pickup" in the "Clean out garage" project is.
+
+3. Context
+ Getting Things Done[1] author David Allen suggests splitting up your task lists
+ by context - ie, the place and situation where you'll work on the job. Messages
+ that you need to send go in the '@email' context; calls to be made '@phone',
+ household projects '@home'. That way, when you've got a few minutes in the car
+ with your cell phone, you can easily check your '@phone' tasks and make a call
+ or two while you have the opportunity.
+
+[1] URL:https://en.wikipedia.org/wiki/Getting_Things_Done
+
+
+Formatting
+----------
+
+Each task is a plain text file. To take advantage of structured task metadata
+like priority, projects, context, there are a few simple but flexible file
+format rules.
+
+Philosophically, this format has two goals:
+- The file contents should be human-readable without requiring any tools other
+ than a plain text viewer or editor.
+- A user can manipulate the file contents in a plain text editor in sensible,
+ expected ways. For example, a text editor that can sort lines alphabetically
+ should be able to sort your task list in a meaningful way.
+
+
+Incomplete Tasks: 3 Format Rules
+--------------------------------
+
+The beauty of this format is that it's completely unstructured; the fields you
+can attach to each task are only limited by your imagination. To get started,
+use special notation to indicate task context (e.g. '@phone' ), project (e.g.
+'+GarageSale' ) and an optional priority (e.g. '(A)' ).
+
+A task file might look like the following:
+
+$ tree tasks
+tasks
+├── 0001-checkout-race-condition.txt
+└── done
+ └── 0000-checkout-ui-design.txt
+
+$ cat 0001-checkout-race-condition.txt
+(A) checkout race condition @bug +checkout
+
+Add a reservation hold on the orders table
+
+# Query all not-done items tagged with '+checkout'
+$ grep --exclude-dir=done -r '+checkout' tasks
+tasks/0001-checkout-race-condition.txt:(A) Checkout race condition @bug +checkout
+
+# Query all not-done items tagged as '@bug' with a priority of '(A)'
+$ grep --exclude-dir=done -r '(A).*@bug' tasks
+tasks/0001-checkout-race-condition.txt:(A) Checkout race condition @bug +checkout
+
+# Query all items tagged as '@bug' or '@ui'
+$ grep -r '@ui\|@bug' tasks
+tasks/0001-checkout-race-condition.txt:(A) Checkout race condition @bug +checkout
+tasks/done/0000-checkout-ui-design.txt:update ui to match new styleguide @ui +checkout
+
+
+There are three formatting rules for current todo's.
+
+Rule 1: If priority exists, it ALWAYS appears first.
+ The priority is an uppercase character from A-Z enclosed in parentheses and
+ followed by a space.
+
+ This task has a priority:
+ (A) Call Mom
+
+ These tasks do not have any priorities:
+ Really gotta call Mom (A) @phone @someday
+ (b) Get back to the boss
+ (B)->Submit TPS report
+
+
+Rule 2: Project and context may appear AFTER the title.
+ This task has a context and/or project:
+ (A) Checkout race condition @bug +checkout
+ (B) UI rework +checkout
+
+ These tasks do not have contexts/tasks:
+ (A) @bug Checkout race condition
+ +checkout UI rework
+
+
+Rule 3: Additional context may appear on the 3rd line of the file onwards.
+ A task does not have to have additional context. If it does, it should be on
+ the 3rd line of the task file.
+
+ This task has additional context
+ (A) checkout race condition @bug +checkout
+
+ Add a reservation hold on the orders table
+
+
+Completed Tasks
+---------------
+
+Once a task has been completed, it is moved into the tasks/done folder. Tasks
+that have not been finished sit flat-file in the tasks/ folder. There is no
+concept of "in-progress", a task is either done or not-done.
+
+
+<modified from todo.txt [https://github.com/todotxt/todo.txt]>