···1+PORT=8181
2+BASE_URL=http://localhost:8181
3+CLIENT_NAME=AT Todo App
+32
.gitignore
···00000000000000000000000000000000
···1+# Binaries
2+attodo
3+*.exe
4+*.exe~
5+*.dll
6+*.so
7+*.dylib
8+9+# Test binary, built with `go test -c`
10+*.test
11+12+# Output of the go coverage tool
13+*.out
14+15+# Dependency directories
16+vendor/
17+18+# Environment variables
19+.env
20+21+# IDE
22+.vscode/
23+.idea/
24+*.swp
25+*.swo
26+*~
27+28+# OS
29+.DS_Store
30+Thumbs.db
31+32+attodo
···1+package models
2+3+import "time"
4+5+// Task represents a todo item stored in AT Protocol
6+type Task struct {
7+ Title string `json:"title"`
8+ Description string `json:"description,omitempty"`
9+ Completed bool `json:"completed"`
10+ CreatedAt time.Time `json:"createdAt"`
11+ CompletedAt *time.Time `json:"completedAt,omitempty"` // Pointer so it can be nil/omitted
12+13+ // Metadata from AT Protocol (populated after creation)
14+ RKey string `json:"-"` // Record key (extracted from URI)
15+ URI string `json:"-"` // Full AT URI
16+}