itsvertical 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,7 @@
1
+ Copyright 2026 Seasoned Desenvolvimento de Software LTDA.
2
+
3
+ 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:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ 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.
package/README.md ADDED
@@ -0,0 +1,180 @@
1
+ # Vertical
2
+
3
+ **Tickets pile up, scopes get done. Project work isn't linear, it's Vertical.**
4
+
5
+ Vertical is a file-based project management tool built around the nine-box grid. No accounts, no cloud, no setup. Just a `.vertical` file and your terminal.
6
+
7
+ ```
8
+ npx itsvertical new my-project.vertical "My Project"
9
+ ```
10
+
11
+ ## Built for AI agents
12
+
13
+ Vertical is designed to be used through AI coding agents like [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview). The CLI is the primary interface — every entity is addressed by ID, every command accepts `--json` for structured output, and errors are machine-readable. An agent can create a project, break work into scopes, add tasks, and track progress — all through the command line.
14
+
15
+ The browser UI (`itsvertical open`) is there for when you want to see the board visually, drag things around, or get a quick overview.
16
+
17
+ ## How it works
18
+
19
+ Vertical organizes work into a 3x3 grid of boxes. Each box can hold tasks, and each box can be split into layers (steps). Tasks move between boxes, layers break work into phases, and things get marked done as you go.
20
+
21
+ Everything is saved to a single `.vertical` file. Version it with git, share it with teammates, or let your agent manage it.
22
+
23
+ ## Install
24
+
25
+ ```
26
+ npm install -g itsvertical
27
+ ```
28
+
29
+ Or run directly with npx:
30
+
31
+ ```
32
+ npx itsvertical new my-project.vertical "My Project"
33
+ ```
34
+
35
+ ## Commands
36
+
37
+ All entities are addressed by ID. Use `itsvertical show` to see IDs. Every command accepts `--json` to output the full board state as JSON (useful for agents).
38
+
39
+ ### Project
40
+
41
+ ```
42
+ itsvertical new <path> <name> # Create a new .vertical file
43
+ itsvertical open <file> # Open in the browser UI
44
+ itsvertical show <file> # Print the board to the terminal
45
+ itsvertical show <file> --json # Output the board as JSON
46
+ itsvertical show <file> --box <slice-id> # Show only a specific box
47
+ itsvertical rename <file> <name> # Rename the project
48
+ ```
49
+
50
+ ### Tasks
51
+
52
+ ```
53
+ itsvertical task add <file> <layer-id> <name> # Add a task to a layer
54
+ itsvertical task add <file> <lid> <n> --after <tid> # Insert after a specific task
55
+ itsvertical task done <file> <task-id> # Mark a task as done
56
+ itsvertical task undone <file> <task-id> # Mark a task as not done
57
+ itsvertical task rename <file> <task-id> <name> # Rename a task
58
+ itsvertical task delete <file> <task-id> # Delete a task
59
+ itsvertical task move <file> <task-id> <layer> # Move a task to another layer
60
+ ```
61
+
62
+ ### Boxes
63
+
64
+ ```
65
+ itsvertical box rename <file> <slice-id> <name> # Rename a box
66
+ itsvertical box clear <file> <slice-id> # Clear box name
67
+ itsvertical box swap <file> <id-1> <id-2> # Swap two box positions
68
+ ```
69
+
70
+ ### Layers
71
+
72
+ ```
73
+ itsvertical layer split <file> <task-id> # Split at a task (tasks after go to new layer)
74
+ itsvertical layer merge <file> <layer-id> # Merge with the next layer
75
+ itsvertical layer rename <file> <layer-id> <n> # Rename a layer
76
+ itsvertical layer clear <file> <layer-id> # Clear layer name
77
+ itsvertical layer status <file> <layer-id> done # Set status to "done"
78
+ itsvertical layer status <file> <layer-id> none # Clear status
79
+ ```
80
+
81
+ ### Browser UI
82
+
83
+ `itsvertical open` starts a local server and opens the board in your browser. Click **Save** or press **Ctrl+S** / **Cmd+S** to write changes back to the file.
84
+
85
+ ## The nine-box grid
86
+
87
+ The board is a 3x3 grid. Each box represents a scope of work.
88
+
89
+ - **Name boxes** by clicking the title area
90
+ - **Drag boxes** to rearrange them in the grid
91
+ - **Add tasks** by clicking the input at the bottom of a box
92
+ - **Edit tasks** by clicking on them
93
+ - **Mark tasks done** with the circle checkbox
94
+ - **Drag tasks** between boxes and layers
95
+ - **Split layers** with the scissor tool (click ✂ or press **S**, then click a task to split at that point)
96
+ - **Unsplit layers** by focusing the dashed separator and pressing **Delete**
97
+ - **Set layer status** to "done" via the status dropdown
98
+
99
+ ## Keyboard shortcuts
100
+
101
+ | Key | Action |
102
+ |-----|--------|
103
+ | **S** | Toggle split mode |
104
+ | **Escape** | Exit split mode / deselect |
105
+ | **Delete** / **Backspace** | Delete focused task or unsplit focused layer |
106
+ | **Enter** | Save inline edit |
107
+ | **Shift+Enter** | Save edit and create a new task below |
108
+ | **Ctrl/Cmd+S** | Save to file |
109
+
110
+ ## The `.vertical` file
111
+
112
+ It's just JSON. You can version it with git, share it with teammates, or back it up however you like.
113
+
114
+ ```json
115
+ {
116
+ "version": 1,
117
+ "project": { "name": "My Project" },
118
+ "slices": [],
119
+ "layers": [],
120
+ "tasks": []
121
+ }
122
+ ```
123
+
124
+ ## Development
125
+
126
+ Source at [github.com/seasonedcc/vertical](https://github.com/seasonedcc/vertical).
127
+
128
+ ### Architecture
129
+
130
+ The package has two parts:
131
+
132
+ - **SPA** (`app/`) — A React app built with Vite. This is the nine-box board UI. Built to `dist/`.
133
+ - **CLI** (`cli/`) — A Node.js CLI built with tsup. Starts a local HTTP server that serves the SPA and provides a read/write API for the `.vertical` file. Built to `cli/dist/`.
134
+
135
+ The CLI and SPA share code: types (`app/state/types.ts`), serialization (`app/file/format.ts`), and project creation (`app/state/initial-state.ts`).
136
+
137
+ ### State management
138
+
139
+ The SPA uses `useReducer` + React Context instead of a server. All mutations are synchronous dispatches — no loaders, no fetchers, no optimistic updates needed. The reducer is at `app/state/reducer.ts`.
140
+
141
+ On mount, the SPA fetches `GET /api/project` from the CLI server. On save, it posts `POST /api/project`. That's the entire API surface.
142
+
143
+ ### Build
144
+
145
+ ```
146
+ pnpm run build # builds both SPA (vite) and CLI (tsup)
147
+ pnpm run build:cli # builds only the CLI
148
+ ```
149
+
150
+ ### Test locally
151
+
152
+ ```
153
+ pnpm run build
154
+ pnpm run itsvertical -- new test-project.vertical "Test Project"
155
+ pnpm run itsvertical -- open test-project.vertical
156
+ ```
157
+
158
+ ### Lint and type-check
159
+
160
+ ```
161
+ pnpm run tsc
162
+ pnpm run lint
163
+ ```
164
+
165
+ ### Publish
166
+
167
+ ```
168
+ pnpm run build
169
+ npm publish
170
+ ```
171
+
172
+ The `files` field in `package.json` includes only `cli/dist` and `dist` — the built outputs. Source files are not published.
173
+
174
+ ## Credits
175
+
176
+ Made by [Ryan Singer](https://ryansinger.co) and [Seasoned](https://www.seasoned.cc).
177
+
178
+ ## License
179
+
180
+ MIT