v0.1 bf7c821

tasks.md RawHistoryFolder

Tasks: Project Initialization with Dependencies

Input: Design documents from /home/brice/dev/projects/dumber/specs/001-init-project/ Prerequisites: plan.md, research.md, data-model.md, contracts/

Execution Flow (main)

Project initialization requires setting up Go module, installing dependencies with go get @latest, creating directory structure, and verifying installation. Tasks follow TDD principles with contract tests before implementation.

Format: [ID] [P?] Description

  • [P]: Can run in parallel (different files, no dependencies)
  • Include exact file paths in descriptions

Path Conventions

Single project structure: cmd/, internal/, tests/ at repository root per constitution

Phase 3.1: Setup and Structure

  • T001 Initialize Go module with go mod init dumber in project root
  • T002 Create project directory structure: cmd/dumber/, internal/{cli,db,parser,browser}/, migrations/, configs/, tests/{contract,integration,unit}/
  • T003 [P] Configure Git repository with .gitignore for Go projects

Phase 3.2: Dependency Installation

  • T004 [P] Install CLI dependencies: go get github.com/spf13/cobra@latest github.com/spf13/viper@latest
  • T005 [P] Install CGO-free database dependency: go get github.com/ncruces/go-sqlite3@latest
  • T006 [P] Install validation dependency: go get github.com/go-playground/validator/v10@latest
  • T007 [P] Install testing dependency: go get github.com/stretchr/testify@latest
  • T008 Install SQLC tool: go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
  • T009 Install Wails v3-alpha tool: go install github.com/wailsapp/wails/v3/cmd/wails@v3.0.0-alpha.28

Phase 3.3: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.4

CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation

  • T010 [P] Contract test for ModuleConfig validation in tests/contract/test_module_config.go
  • T011 [P] Contract test for CLI init command in tests/contract/test_cli_init.go
  • T012 [P] Contract test for dependency installation in tests/contract/test_deps_install.go
  • T013 [P] Integration test for full project initialization in tests/integration/test_full_init.go
  • T014 [P] Integration test for CGO-free database build in tests/integration/test_cgo_free_build.go
  • T015 [P] Integration test for Wails build (CGO required) in tests/integration/test_wails_build.go

Phase 3.4: Core Implementation (ONLY after tests are failing)

  • T016 [P] ModuleConfig model in internal/models/module.go
  • T017 [P] ProjectStructure model in internal/models/structure.go
  • T018 [P] InstallationStatus model in internal/models/status.go
  • T019 CLI root command setup in cmd/dumber/main.go
  • T020 CLI init command implementation in internal/cli/init.go
  • T021 Dependency installer service in internal/services/installer.go
  • T022 Project structure creator in internal/services/structure.go
  • T023 Configuration file generator in internal/services/config.go

Phase 3.5: Configuration Files

  • T024 [P] Generate SQLC configuration template in configs/sqlc.yaml
  • T025 [P] Generate Wails configuration template in configs/wails.json
  • T026 [P] Create initial database migration in migrations/001_initial.sql

Phase 3.6: Verification and Integration

  • T027 Build verification with CGO_ENABLED=0 for core components
  • T028 Build verification with CGO_ENABLED=1 for Wails integration
  • T029 Dependency resolution verification with go mod download
  • T030 Tool availability verification: sqlc version && wails version

Phase 3.7: Polish and Documentation

  • T031 [P] Unit tests for validation logic in tests/unit/test_validation.go
  • T032 [P] Unit tests for config generation in tests/unit/test_config_gen.go
  • T033 [P] Error handling and logging implementation
  • T034 Update quickstart.md with actual execution results
  • T035 Run full quickstart validation script

Dependencies

Critical Path:

  • Setup (T001-T003) before dependencies (T004-T009)
  • Dependencies before tests (T010-T015)
  • Tests (T010-T015) before implementation (T016-T023)
  • Core implementation before config files (T024-T026)
  • Everything before verification (T027-T030)

Specific Blockers:

  • T001 blocks T004-T009 (need go.mod first)
  • T016-T018 block T021-T023 (need models for services)
  • T020 blocks T027-T030 (need CLI for verification)

Parallel Execution Examples

Install Dependencies Concurrently

# Launch T004-T007 together (different packages):
Task: "Install CLI dependencies: go get github.com/spf13/cobra@latest github.com/spf13/viper@latest"
Task: "Install CGO-free database dependency: go get github.com/ncruces/go-sqlite3@latest"  
Task: "Install validation dependency: go get github.com/go-playground/validator/v10@latest"
Task: "Install testing dependency: go get github.com/stretchr/testify@latest"

Write Tests Concurrently

# Launch T010-T015 together (different test files):
Task: "Contract test for ModuleConfig validation in tests/contract/test_module_config.go"
Task: "Contract test for CLI init command in tests/contract/test_cli_init.go"
Task: "Contract test for dependency installation in tests/contract/test_deps_install.go"
Task: "Integration test for full project initialization in tests/integration/test_full_init.go"
Task: "Integration test for CGO-free database build in tests/integration/test_cgo_free_build.go"
Task: "Integration test for Wails build (CGO required) in tests/integration/test_wails_build.go"

Create Models Concurrently

# Launch T016-T018 together (different model files):
Task: "ModuleConfig model in internal/models/module.go"
Task: "ProjectStructure model in internal/models/structure.go"
Task: "InstallationStatus model in internal/models/status.go"

CGO Optimization Strategy

CGO-Free Development (T004-T007, T010-T014, T016-T023):

  • Most tasks can run with CGO_ENABLED=0
  • Database layer uses ncruces/go-sqlite3 (CGO-free)
  • CLI and parser components don't need CGO
  • Faster development cycle for majority of work

CGO Required (T009, T015, T028):

  • Only Wails installation and integration requires CGO_ENABLED=1
  • WebKit2GTK bindings need CGO for native rendering
  • Clear separation allows independent development

Notes

  • [P] tasks = different files, no dependencies
  • Verify tests fail before implementing (TDD enforcement)
  • Use go get @latest for all dependencies per user requirements
  • Commit after each task completion
  • CGO-free SQLite driver (ncruces) allows faster development cycle
  • Only Wails final integration requires CGO

Task Generation Rules Applied

  1. From Contracts:

    • cli-commands.md → T011, T020 (CLI init command)
    • go-module.yaml → T010, T012 (module and dependency contracts)
  2. From Data Model:

    • ModuleConfig → T016 (model creation)
    • ProjectStructure → T017 (model creation)
    • InstallationStatus → T018 (model creation)
  3. From Research Decisions:

    • CGO-free SQLite → T005, T014 (specific driver selection)
    • Wails v3-alpha → T009, T015 (version-specific installation)
  4. From Quickstart Scenarios:

    • Full initialization → T013 (integration test)
    • Build verification → T027, T028 (CGO separation tests)
    • Tool availability → T030 (verification scenario)

Validation Checklist

  • All contracts have corresponding tests (T010-T012)
  • All entities have model tasks (T016-T018)
  • All tests come before implementation (T010-T015 before T016-T023)
  • Parallel tasks truly independent ([P] tasks use different files)
  • Each task specifies exact file path
  • No task modifies same file as another [P] task
  • TDD principles enforced (tests must fail before implementation)
  • CGO optimization strategy clearly defined
  • Dependencies properly ordered and documented
source
1# Tasks: Project Initialization with Dependencies
2
3**Input**: Design documents from `/home/brice/dev/projects/dumber/specs/001-init-project/`
4**Prerequisites**: plan.md, research.md, data-model.md, contracts/
5
6## Execution Flow (main)
7Project initialization requires setting up Go module, installing dependencies with `go get @latest`, creating directory structure, and verifying installation. Tasks follow TDD principles with contract tests before implementation.
8
9## Format: `[ID] [P?] Description`
10- **[P]**: Can run in parallel (different files, no dependencies)
11- Include exact file paths in descriptions
12
13## Path Conventions
14Single project structure: `cmd/`, `internal/`, `tests/` at repository root per constitution
15
16## Phase 3.1: Setup and Structure
17
18- [ ] T001 Initialize Go module with `go mod init dumber` in project root
19- [ ] T002 Create project directory structure: `cmd/dumber/`, `internal/{cli,db,parser,browser}/`, `migrations/`, `configs/`, `tests/{contract,integration,unit}/`
20- [ ] T003 [P] Configure Git repository with .gitignore for Go projects
21
22## Phase 3.2: Dependency Installation
23
24- [ ] T004 [P] Install CLI dependencies: `go get github.com/spf13/cobra@latest github.com/spf13/viper@latest`
25- [ ] T005 [P] Install CGO-free database dependency: `go get github.com/ncruces/go-sqlite3@latest`
26- [ ] T006 [P] Install validation dependency: `go get github.com/go-playground/validator/v10@latest`
27- [ ] T007 [P] Install testing dependency: `go get github.com/stretchr/testify@latest`
28- [ ] T008 Install SQLC tool: `go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest`
29- [ ] T009 Install Wails v3-alpha tool: `go install github.com/wailsapp/wails/v3/cmd/wails@v3.0.0-alpha.28`
30
31## Phase 3.3: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.4
32
33**CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation**
34
35- [ ] T010 [P] Contract test for ModuleConfig validation in `tests/contract/test_module_config.go`
36- [ ] T011 [P] Contract test for CLI init command in `tests/contract/test_cli_init.go`
37- [ ] T012 [P] Contract test for dependency installation in `tests/contract/test_deps_install.go`
38- [ ] T013 [P] Integration test for full project initialization in `tests/integration/test_full_init.go`
39- [ ] T014 [P] Integration test for CGO-free database build in `tests/integration/test_cgo_free_build.go`
40- [ ] T015 [P] Integration test for Wails build (CGO required) in `tests/integration/test_wails_build.go`
41
42## Phase 3.4: Core Implementation (ONLY after tests are failing)
43
44- [ ] T016 [P] ModuleConfig model in `internal/models/module.go`
45- [ ] T017 [P] ProjectStructure model in `internal/models/structure.go`
46- [ ] T018 [P] InstallationStatus model in `internal/models/status.go`
47- [ ] T019 CLI root command setup in `cmd/dumber/main.go`
48- [ ] T020 CLI init command implementation in `internal/cli/init.go`
49- [ ] T021 Dependency installer service in `internal/services/installer.go`
50- [ ] T022 Project structure creator in `internal/services/structure.go`
51- [ ] T023 Configuration file generator in `internal/services/config.go`
52
53## Phase 3.5: Configuration Files
54
55- [ ] T024 [P] Generate SQLC configuration template in `configs/sqlc.yaml`
56- [ ] T025 [P] Generate Wails configuration template in `configs/wails.json`
57- [ ] T026 [P] Create initial database migration in `migrations/001_initial.sql`
58
59## Phase 3.6: Verification and Integration
60
61- [ ] T027 Build verification with CGO_ENABLED=0 for core components
62- [ ] T028 Build verification with CGO_ENABLED=1 for Wails integration
63- [ ] T029 Dependency resolution verification with `go mod download`
64- [ ] T030 Tool availability verification: `sqlc version && wails version`
65
66## Phase 3.7: Polish and Documentation
67
68- [ ] T031 [P] Unit tests for validation logic in `tests/unit/test_validation.go`
69- [ ] T032 [P] Unit tests for config generation in `tests/unit/test_config_gen.go`
70- [ ] T033 [P] Error handling and logging implementation
71- [ ] T034 Update quickstart.md with actual execution results
72- [ ] T035 Run full quickstart validation script
73
74## Dependencies
75
76**Critical Path**:
77- Setup (T001-T003) before dependencies (T004-T009)
78- Dependencies before tests (T010-T015)
79- Tests (T010-T015) before implementation (T016-T023)
80- Core implementation before config files (T024-T026)
81- Everything before verification (T027-T030)
82
83**Specific Blockers**:
84- T001 blocks T004-T009 (need go.mod first)
85- T016-T018 block T021-T023 (need models for services)
86- T020 blocks T027-T030 (need CLI for verification)
87
88## Parallel Execution Examples
89
90### Install Dependencies Concurrently
91```bash
92# Launch T004-T007 together (different packages):
93Task: "Install CLI dependencies: go get github.com/spf13/cobra@latest github.com/spf13/viper@latest"
94Task: "Install CGO-free database dependency: go get github.com/ncruces/go-sqlite3@latest"  
95Task: "Install validation dependency: go get github.com/go-playground/validator/v10@latest"
96Task: "Install testing dependency: go get github.com/stretchr/testify@latest"
97```
98
99### Write Tests Concurrently
100```bash
101# Launch T010-T015 together (different test files):
102Task: "Contract test for ModuleConfig validation in tests/contract/test_module_config.go"
103Task: "Contract test for CLI init command in tests/contract/test_cli_init.go"
104Task: "Contract test for dependency installation in tests/contract/test_deps_install.go"
105Task: "Integration test for full project initialization in tests/integration/test_full_init.go"
106Task: "Integration test for CGO-free database build in tests/integration/test_cgo_free_build.go"
107Task: "Integration test for Wails build (CGO required) in tests/integration/test_wails_build.go"
108```
109
110### Create Models Concurrently
111```bash
112# Launch T016-T018 together (different model files):
113Task: "ModuleConfig model in internal/models/module.go"
114Task: "ProjectStructure model in internal/models/structure.go"
115Task: "InstallationStatus model in internal/models/status.go"
116```
117
118## CGO Optimization Strategy
119
120**CGO-Free Development** (T004-T007, T010-T014, T016-T023):
121- Most tasks can run with `CGO_ENABLED=0`
122- Database layer uses ncruces/go-sqlite3 (CGO-free)
123- CLI and parser components don't need CGO
124- Faster development cycle for majority of work
125
126**CGO Required** (T009, T015, T028):
127- Only Wails installation and integration requires `CGO_ENABLED=1`
128- WebKit2GTK bindings need CGO for native rendering
129- Clear separation allows independent development
130
131## Notes
132
133- [P] tasks = different files, no dependencies
134- Verify tests fail before implementing (TDD enforcement)
135- Use `go get @latest` for all dependencies per user requirements
136- Commit after each task completion
137- CGO-free SQLite driver (ncruces) allows faster development cycle
138- Only Wails final integration requires CGO
139
140## Task Generation Rules Applied
141
1421. **From Contracts**:
143   - cli-commands.md → T011, T020 (CLI init command)
144   - go-module.yaml → T010, T012 (module and dependency contracts)
145
1462. **From Data Model**:
147   - ModuleConfig → T016 (model creation)
148   - ProjectStructure → T017 (model creation)
149   - InstallationStatus → T018 (model creation)
150
1513. **From Research Decisions**:
152   - CGO-free SQLite → T005, T014 (specific driver selection)
153   - Wails v3-alpha → T009, T015 (version-specific installation)
154
1554. **From Quickstart Scenarios**:
156   - Full initialization → T013 (integration test)
157   - Build verification → T027, T028 (CGO separation tests)
158   - Tool availability → T030 (verification scenario)
159
160## Validation Checklist
161
162- [x] All contracts have corresponding tests (T010-T012)
163- [x] All entities have model tasks (T016-T018)
164- [x] All tests come before implementation (T010-T015 before T016-T023)
165- [x] Parallel tasks truly independent ([P] tasks use different files)
166- [x] Each task specifies exact file path
167- [x] No task modifies same file as another [P] task
168- [x] TDD principles enforced (tests must fail before implementation)
169- [x] CGO optimization strategy clearly defined
170- [x] Dependencies properly ordered and documented

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close