Skip to content

Commit 000b121

Browse files
committed
docs: core v1 documentation
* updated ROADMAP
1 parent 1292b34 commit 000b121

File tree

19 files changed

+1755
-328
lines changed

19 files changed

+1755
-328
lines changed

.vscode/settings.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"[typescript]": { "editor.defaultFormatter": "dprint.dprint" },
3+
"[typescriptreact]": { "editor.defaultFormatter": "dprint.dprint" },
4+
"[javascript]": { "editor.defaultFormatter": "dprint.dprint" },
5+
"[javascriptreact]": { "editor.defaultFormatter": "dprint.dprint" }
6+
}

internal/docs/ROADMAP.md

Lines changed: 60 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ Notes have create, list, read, edit, and remove commands with interactive and st
4747
- [ ] Add [OAuth2](#publications--authentication)
4848
- [x] Verify `pub pull` fetches and syncs documents from leaflet.
4949
- [x] Confirm `pub list` with status filtering (`all`, `published`, `draft`).
50-
- [ ] Test `pub post` creates new documents with draft/preview/validate modes.
51-
- [ ] Ensure `pub patch` updates existing documents correctly.
52-
- [ ] Validate `pub push` handles batch operations (create/update).
53-
- [ ] Verify markdown conversion to leaflet block format (headings, code, images, facets).
50+
- [x] Test `pub post` creates new documents with draft/preview/validate modes.
51+
- [x] Ensure `pub patch` updates existing documents correctly.
52+
- [x] Validate `pub push` handles batch operations (create/update).
53+
- [x] Verify markdown conversion to leaflet block format (headings, code, images, facets).
5454

5555
### Media Domains
5656

@@ -200,6 +200,17 @@ Features that demonstrate Go proficiency and broaden Noteleaf’s scope.
200200
- [ ] External imports (Goodreads, IMDB, Letterboxd)
201201
- [ ] Cross-referencing across media types
202202
- [ ] Analytics: velocity, completion rates
203+
- [ ] Books (Open Library integration enhancements)
204+
- [ ] Author detail fetching (full names, bio)
205+
- [ ] Edition-specific metadata
206+
- [ ] Cover image download and caching
207+
- [ ] Reading progress tracking
208+
- [ ] Personal reading lists sync
209+
- [ ] Movies/TV (external API integration)
210+
- [ ] Movie databases (TMDb, OMDb)
211+
- [ ] Rotten Tomatoes integration
212+
- [ ] Music
213+
- [ ] Music services (MusicBrainz, Album of the Year)
203214

204215
### Articles
205216

@@ -232,17 +243,24 @@ Features that demonstrate Go proficiency and broaden Noteleaf’s scope.
232243
- [ ] Ephemeral HTTP server on localhost
233244
- [ ] Browser launch integration
234245
- [ ] Timeout handling for abandoned flows
235-
- [ ] Migration path from app passwords to OAuth
236-
- [ ] Detect existing app password sessions
237-
- [ ] Prompt users to upgrade authentication
238-
- [ ] Maintain backward compatibility
246+
- [ ] Support both OAuth & App Passwords but recommend OAuth
247+
- [ ] Leaflet.pub enhancements
248+
- [ ] Multiple Publications: Manage separate publications for different topics
249+
- [ ] Image Upload: Automatically upload images to blob storage and embed in documents
250+
- [ ] Status Management: Publish drafts and unpublish documents from CLI
251+
- [ ] Metadata Editing: Update document titles, summaries, and tags
252+
- [ ] Backlink Support: Parse and resolve cross-references between documents
253+
- [ ] Offline Mode: Queue posts and patches for later upload
239254

240255
### User Experience
241256

242257
- [ ] Shell completions
243258
- [ ] Manpages and docs generator
244259
- [ ] Theming and customizable output
245260
- [ ] Calendar integration
261+
- [ ] Task synchronization services
262+
- [ ] Git repository linking
263+
- [ ] Note export to other platforms
246264

247265
### Tasks
248266

@@ -274,7 +292,8 @@ Features that demonstrate Go proficiency and broaden Noteleaf’s scope.
274292

275293
### Local API Server
276294

277-
A local HTTP server daemon that exposes Noteleaf data for web UIs and extensions. Runs on the user's machine and provides programmatic access to tasks, notes, and media.
295+
A local HTTP server daemon that exposes Noteleaf data for web UIs and extensions.
296+
Runs on the user's machine and provides programmatic access to tasks, notes, and media.
278297

279298
#### Architecture
280299

@@ -402,26 +421,40 @@ SQLite persistence, CI with GitHub Actions and Codecov, TUIs with Charm stack, i
402421
#### Post v1
403422

404423
- Backup/restore
424+
- [ ] Automated backups
425+
- [ ] Backup scheduling and rotation
405426
- Multiple profiles
406427
- Optional synchronization
428+
- [ ] Sync service
429+
- Import/Export
430+
- [ ] CSV export for tasks
431+
- [ ] Markdown export for tasks
432+
- [ ] Bulk export commands
433+
- [ ] Migration utilities (TaskWarrior, todo.txt, etc.)
434+
- [ ] Git integration for notes/data versioning
407435

408436
## v1 Feature Matrix
409437

410-
| Domain | Feature | Status |
411-
|----------|-----------------------|-----------|
412-
| Tasks | CRUD | Complete |
413-
| Tasks | Projects/tags | Complete |
414-
| Tasks | Time tracking | Complete |
415-
| Tasks | Dependencies | Complete |
416-
| Tasks | Recurrence | Complete |
417-
| Tasks | Wait/scheduled | Planned |
418-
| Tasks | Urgency scoring | Planned |
419-
| Notes | CRUD | Complete |
420-
| Notes | Search/tagging | Planned |
421-
| Media | Books/movies/TV | Complete |
422-
| Media | Articles | Complete |
423-
| Media | Source/ratings | Planned |
424-
| Articles | Parser + storage | Complete |
425-
| System | SQLite persistence | Complete |
426-
| System | Synchronization | Future |
427-
| System | Import/export formats | Future |
438+
| Domain | Feature | Status |
439+
|--------------|----------------------------|-----------|
440+
| Tasks | CRUD | Complete |
441+
| Tasks | Projects/tags | Complete |
442+
| Tasks | Time tracking | Complete |
443+
| Tasks | Dependencies | Complete |
444+
| Tasks | Recurrence | Complete |
445+
| Tasks | Wait/scheduled | Planned |
446+
| Tasks | Urgency scoring | Planned |
447+
| Notes | CRUD | Complete |
448+
| Notes | Search/tagging | Planned |
449+
| Publications | AT Protocol sync | Complete |
450+
| Publications | Post/patch/push | Complete |
451+
| Publications | Markdown conversion | Complete |
452+
| Publications | OAuth2 | Future |
453+
| Media | Books/movies/TV | Complete |
454+
| Media | Articles | Complete |
455+
| Media | Source/ratings | Planned |
456+
| Articles | Parser + storage | Complete |
457+
| System | SQLite persistence | Complete |
458+
| System | Configuration management | Complete |
459+
| System | Synchronization | Future |
460+
| System | Import/export formats | Future |

website/TODO.md

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,31 @@ This document tracks documentation coverage for the Noteleaf website. The goal i
44

55
## Integration and Workflows
66

7-
- [ ] External Integrations
8-
- [ ] Open Library API
9-
- [ ] Leaflet.pub API
10-
- [ ] ATProto authentication
7+
- [x] External Integrations
8+
- [x] Open Library API
9+
- [x] Leaflet.pub API
10+
- [x] ATProto authentication
1111
- [ ] Workflows and Examples
1212
- [ ] Daily task review workflow
1313
- [ ] Note-taking for research
1414
- [ ] Reading list management
1515
- [ ] Publishing a blog post to leaflet.pub
1616
- [ ] Linking tasks, notes, and media
17-
- [ ] Import/Export
18-
- [ ] Exporting data
19-
- [ ] Backup and restore
20-
- [ ] Migration from other tools
17+
- [x] Import/Export
18+
- [x] Exporting data
19+
- [x] Backup and restore
20+
- [x] Migration from other tools
2121

2222
## Development
2323

24-
- [ ] Building Noteleaf
25-
- [ ] Development vs production builds
26-
- [ ] Build tags
27-
- [ ] Task automation (Taskfile)
28-
- [ ] Testing
29-
- [ ] Running tests
30-
- [ ] Coverage reports
31-
- [ ] Test patterns and scaffolding
24+
- [x] Building Noteleaf
25+
- [x] Development vs production builds
26+
- [x] Build tags
27+
- [x] Task automation (Taskfile)
28+
- [x] Testing
29+
- [x] Running tests
30+
- [x] Coverage reports
31+
- [x] Test patterns and scaffolding
3232
- [ ] Contributing
3333
- [ ] Code organization
3434
- [ ] Adding new commands
@@ -54,14 +54,6 @@ This document tracks documentation coverage for the Noteleaf website. The goal i
5454
- [ ] Zettelkasten method
5555
- [ ] Research notes
5656
- [ ] Meeting notes
57-
- [ ] Publishing Tutorials
58-
- [ ] Writing a blog post
59-
- [ ] Creating a publication
60-
- [ ] Managing drafts
61-
- [ ] Advanced Tutorials
62-
- [ ] Scripting with Noteleaf
63-
- [ ] Custom automation
64-
- [ ] Data analysis
6557

6658
## Appendices
6759

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
---
2+
title: Building Noteleaf
3+
sidebar_label: Building
4+
sidebar_position: 1
5+
description: Build configurations and development workflows.
6+
---
7+
8+
# Building Noteleaf
9+
10+
Noteleaf uses [Task](https://taskfile.dev) for build automation, providing consistent workflows across development, testing, and releases.
11+
12+
## Prerequisites
13+
14+
- Go 1.21 or later
15+
- [Task](https://taskfile.dev) (install via `brew install go-task/tap/go-task` on macOS)
16+
- Git (for version information)
17+
18+
## Build Types
19+
20+
### Development Build
21+
22+
Quick build without version injection for local development:
23+
24+
```sh
25+
task build
26+
```
27+
28+
Output: `./tmp/noteleaf`
29+
30+
### Development Build with Version
31+
32+
Build with git commit hash and development tools enabled:
33+
34+
```sh
35+
task build:dev
36+
```
37+
38+
Version format: `git describe` output (e.g., `v0.1.0-15-g1234abc`)
39+
Output: `./tmp/noteleaf`
40+
41+
### Release Candidate Build
42+
43+
Build with `-rc` tag, excludes development tools:
44+
45+
```sh
46+
git tag v1.0.0-rc1
47+
task build:rc
48+
```
49+
50+
Requirements:
51+
52+
- Clean git tag with `-rc` suffix
53+
- Tag format: `v1.0.0-rc1`, `v2.1.0-rc2`, etc.
54+
55+
### Production Build
56+
57+
Build for release with strict validation:
58+
59+
```sh
60+
git tag v1.0.0
61+
task build:prod
62+
```
63+
64+
Requirements:
65+
66+
- Clean semver git tag (e.g., `v1.0.0`, `v2.1.3`)
67+
- No uncommitted changes
68+
- No prerelease suffix
69+
70+
## Build Tags
71+
72+
Production builds use the `prod` build tag to exclude development and seed commands:
73+
74+
```go
75+
//go:build !prod
76+
```
77+
78+
Commands excluded from production:
79+
80+
- `noteleaf dev` - Development utilities
81+
- `noteleaf seed` - Test data generation
82+
83+
## Version Information
84+
85+
Build process injects version metadata via ldflags:
86+
87+
```go
88+
// internal/version/version.go
89+
var (
90+
Version = "dev" // Git tag or "dev"
91+
Commit = "none" // Git commit hash
92+
BuildDate = "unknown" // Build timestamp
93+
)
94+
```
95+
96+
View version information:
97+
98+
```sh
99+
task version:show
100+
noteleaf version
101+
```
102+
103+
## Build Artifacts
104+
105+
All binaries are built to `./tmp/` directory:
106+
107+
```
108+
tmp/
109+
└── noteleaf # Binary for current platform
110+
```
111+
112+
## Development Workflow
113+
114+
Full development cycle with linting and testing:
115+
116+
```sh
117+
task dev
118+
```
119+
120+
Runs:
121+
122+
1. Clean build artifacts
123+
2. Run linters (vet, fmt)
124+
3. Execute all tests
125+
4. Build binary
126+
127+
## Manual Build
128+
129+
Build directly with Go (bypasses Task automation):
130+
131+
```sh
132+
go build -o ./tmp/noteleaf ./cmd
133+
```
134+
135+
With version injection:
136+
137+
```sh
138+
go build -ldflags "-X github.com/stormlightlabs/noteleaf/internal/version.Version=v1.0.0" -o ./tmp/noteleaf ./cmd
139+
```
140+
141+
## Cross-Platform Builds
142+
143+
Build for specific platforms:
144+
145+
```sh
146+
# Linux
147+
GOOS=linux GOARCH=amd64 go build -o ./tmp/noteleaf-linux ./cmd
148+
149+
# Windows
150+
GOOS=windows GOARCH=amd64 go build -o ./tmp/noteleaf.exe ./cmd
151+
152+
# macOS (ARM)
153+
GOOS=darwin GOARCH=arm64 go build -o ./tmp/noteleaf-darwin-arm64 ./cmd
154+
```
155+
156+
## Clean Build
157+
158+
Remove all build artifacts:
159+
160+
```sh
161+
task clean
162+
```
163+
164+
Removes:
165+
166+
- `./tmp/` directory
167+
- `coverage.out` and `coverage.html`

0 commit comments

Comments
 (0)