nova-cli 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +65 -49
- data/lib/nova/generator.rb +26 -43
- data/lib/nova/templates/nova.mdc +64 -0
- data/lib/nova/templates/readme_template.md +49 -41
- data/lib/nova/templates/tasks_examples/1_generate_application.md +75 -0
- data/lib/nova/templates/tasks_examples/2_generate_static_pages.md +157 -0
- data/lib/nova/templates/user_story_example.md +59 -67
- data/lib/nova/templates/windsurfrules_template.txt +3 -0
- data/lib/nova/version.rb +3 -0
- data/lib/nova.rb +1 -1
- metadata +8 -13
- data/lib/nova/templates/big_picture_readme_template.md +0 -29
- data/lib/nova/templates/design_system_readme_template.md +0 -22
- data/lib/nova/templates/prompts_example.md +0 -134
- data/lib/nova/templates/prompts_examples/01_generate_app.md +0 -94
- data/lib/nova/templates/prompts_examples/02_generate_styleguide.md +0 -26
- data/lib/nova/templates/prompts_examples/03_generate_static_pages.md +0 -26
- data/lib/nova/templates/prompts_examples/04_authentication_feature.md +0 -41
- data/lib/nova/templates/prompts_readme_template.md +0 -27
- data/lib/nova/templates/styleguide_index.html +0 -385
- data/lib/nova/templates/user_stories_readme_template.md +0 -27
- /data/lib/nova/templates/{flowchart_template.md → flowchart_example_template.md} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38ce58b8ad7d0916257e95ca92e2a48dfcf64ecbe06eef34801467b94ac23258
|
4
|
+
data.tar.gz: b24a76aaca18e39939567878ac56a7c525cf2c16d780d9016c4a9c207ac09ae2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4d32571d86db6d71251046763c758ebd6fbba19ae9dfad6dd46074751562eaa9228ad6d829e1efd2aa18256cc20c100d49471260d1c1737cf2deaf1eb5458ce
|
7
|
+
data.tar.gz: 69d6828bf2158e249718d130ea90a9816dfe8fa51a8a8190d57afb1678928ba8e29d6a68e4abff5e1bf3af446868858645d77f566634db8cdc645f7c350aad10
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Nova
|
2
2
|
|
3
|
-
Nova is a command-line tool that generates a
|
3
|
+
Nova is a command-line tool that generates a cross-functional toolkit for PMs & Devs to write both product documentation and code in the same unified Windsurf or Cursor window. It embraces the idea that projects & features start as abstract ideas and move through a process of definition, starting with natural language and culminating in code syntax. By having a unified window for the agent to work across both documentation and code, Nova accelerates the entire development workflow, from scoping through to deployment.
|
4
4
|
|
5
5
|
## The Nova Process
|
6
6
|
|
@@ -9,38 +9,27 @@ The Nova process guides product development through a series of steps, each buil
|
|
9
9
|
1. **Big Picture** → Define the strategic vision and goals
|
10
10
|
2. **User Stories** → Break down the vision into specific user needs
|
11
11
|
3. **Design System** → Establish the visual language and UI components
|
12
|
-
4. **
|
12
|
+
4. **Tasks** → Create actionable implementation tasks (includes default app generation tasks)
|
13
|
+
5. **Coding** → Generate application code in the code/ directory
|
13
14
|
|
14
|
-
Each step has its own directory with
|
15
|
+
Each step has its own directory with instructions and examples to guide your work.
|
15
16
|
|
16
17
|
## Installation
|
17
18
|
|
18
|
-
|
19
|
+
You can install the gem directly from RubyGems:
|
19
20
|
|
20
21
|
```bash
|
21
|
-
|
22
|
-
gem build nova-cli.gemspec
|
23
|
-
gem install nova-cli-0.1.2.gem
|
22
|
+
gem install nova-cli
|
24
23
|
```
|
25
24
|
|
26
|
-
|
25
|
+
Once installed, you can run the command `nova` from your terminal.
|
27
26
|
|
28
|
-
```bash
|
29
|
-
chmod +x bin/nova
|
30
|
-
./bin/nova new [app_name]
|
31
|
-
```
|
32
27
|
|
33
28
|
## Usage
|
34
29
|
|
35
30
|
```bash
|
36
31
|
# Create a new project structure
|
37
32
|
nova new [app_name]
|
38
|
-
|
39
|
-
# Show version
|
40
|
-
nova version
|
41
|
-
|
42
|
-
# Show help
|
43
|
-
nova help
|
44
33
|
```
|
45
34
|
|
46
35
|
## Generated Structure
|
@@ -49,52 +38,62 @@ When you run `nova new [app_name]`, it creates the following structure:
|
|
49
38
|
|
50
39
|
```
|
51
40
|
[project_name]/
|
41
|
+
├── .windsurfrules
|
42
|
+
├── .cursorrules # Single AI rules file (always active)
|
52
43
|
├── shape/
|
53
44
|
│ ├── README.md
|
54
45
|
│ ├── 1_big-picture/
|
55
|
-
│ │ ├── README.md
|
56
46
|
│ │ ├── prd_example.md
|
57
|
-
│ │
|
47
|
+
│ │ └── flowchart_example.md
|
58
48
|
│ ├── 2_user-stories/
|
59
|
-
│ │ ├── README.md
|
60
49
|
│ │ └── example.md
|
61
50
|
│ ├── 3_design-system/
|
62
|
-
│ │ ├── README.md
|
63
|
-
│ │ └── design_decisions.md
|
64
|
-
│ ├── 4_prompts/
|
65
|
-
│ │ ├── README.md
|
66
51
|
│ │ └── example.md
|
67
|
-
|
68
|
-
├──
|
52
|
+
│ └── 4_tasks/
|
53
|
+
│ ├── 1_generate_application.md
|
54
|
+
│ └── 2_generate_static_pages.md
|
55
|
+
└── code/
|
69
56
|
```
|
70
57
|
|
71
|
-
|
72
|
-
- `shape/1_big-picture/`: High-level strategic documents that define the vision and direction
|
73
|
-
- `shape/2_user-stories/`: User-focused requirements that capture specific needs and acceptance criteria
|
74
|
-
- `shape/3_design-system/`: Visual language and UI component documentation to ensure consistency
|
75
|
-
- `shape/4_prompts/`: Structured sequential tasks for AI-assisted implementation
|
76
|
-
- `code/`: Directory for actual code implementation
|
77
|
-
- `design-system/`: Directory for implemented design system code and assets
|
58
|
+
## Default Tasks
|
78
59
|
|
79
|
-
|
60
|
+
Nova now includes two foundational tasks by default:
|
61
|
+
|
62
|
+
### Task 1: Generate Application
|
63
|
+
- Sets up Rails 8 with PostgreSQL, Tailwind CSS, RSpec, and Cypress
|
64
|
+
- Configures Flowbite for UI components
|
65
|
+
- Creates a hello world page to verify setup
|
66
|
+
- Based on battle-tested Rails application setup
|
67
|
+
|
68
|
+
### Task 2: Generate Static Pages
|
69
|
+
- Creates static pages with hardcoded data for look & feel iteration
|
70
|
+
- Implements design system components
|
71
|
+
- Sets up navigation and responsive layouts
|
72
|
+
- Allows rapid prototyping before adding dynamic functionality
|
73
|
+
|
74
|
+
These tasks serve as the foundation for all subsequent development work.
|
75
|
+
|
76
|
+
## Task Progress Tracking
|
77
|
+
|
78
|
+
Nova uses a self-contained progress tracking system where each task file maintains its own progress:
|
80
79
|
|
81
|
-
-
|
82
|
-
-
|
83
|
-
-
|
84
|
-
-
|
85
|
-
- **Collaborate Across Disciplines**: Involve all relevant team members in the appropriate steps
|
86
|
-
- **Iterate and Refine**: The process is not strictly linear - revisit and update documents as you learn
|
87
|
-
- **Follow TDD**: Follow Test-Driven Development principles when implementing code
|
80
|
+
- Use checkboxes `[ ]` and `[x]` to mark task completion
|
81
|
+
- Update file tracking tables to show implementation status
|
82
|
+
- Add notes or comments inline for important decisions
|
83
|
+
- Each task file serves as both the plan and the progress tracker
|
88
84
|
|
89
|
-
|
85
|
+
No separate progress file is needed - everything is tracked where the work is defined.
|
90
86
|
|
91
|
-
|
87
|
+
## AI Assistant Integration
|
92
88
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
89
|
+
Nova generates a single `.cursorrules` file at the project root that provides comprehensive guidance for AI assistants. This file:
|
90
|
+
|
91
|
+
- Is always active (no need to navigate to specific directories)
|
92
|
+
- Provides context-aware rules based on whether you're in `shape/` or `code/`
|
93
|
+
- Enforces Nova's workflow and best practices
|
94
|
+
- Guides the AI through the entire development process
|
95
|
+
|
96
|
+
The AI will understand the Nova workflow and help you maintain proper documentation-to-code traceability throughout your project.
|
98
97
|
|
99
98
|
## Mermaid Flowcharts
|
100
99
|
|
@@ -113,3 +112,20 @@ With this extension installed, you'll be able to preview Mermaid diagrams in the
|
|
113
112
|
## License
|
114
113
|
|
115
114
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
115
|
+
|
116
|
+
## Best Practices
|
117
|
+
|
118
|
+
- **Start with Why**: Always begin by understanding the strategic purpose behind the project from the PRD.
|
119
|
+
- **Focus on User Value**: Keep the user's needs (from user stories) at the center of all planning and implementation.
|
120
|
+
- **Task Granularity**: Break down features into small, manageable tasks.
|
121
|
+
- **Iterate and Refine**: The process is iterative. Revisit and update documents in `shape/` and `progress.md` as you learn and make changes during development.
|
122
|
+
|
123
|
+
---
|
124
|
+
|
125
|
+
## Prompt Library
|
126
|
+
|
127
|
+
Explore a collection of example prompts for various development tasks in our [Prompt Library](./prompt-library/). These can be adapted for use with AI assistants to help with common setup and generation tasks.
|
128
|
+
|
129
|
+
---
|
130
|
+
|
131
|
+
For questions or suggestions, please contact Ryan Francis (ryan@launchpadlab.com).
|
data/lib/nova/generator.rb
CHANGED
@@ -11,32 +11,34 @@ module Nova
|
|
11
11
|
# - template: name of the template file to use (nil for directories)
|
12
12
|
# - type: optional type for special handling (e.g., 'prefixed_example')
|
13
13
|
FILES = [
|
14
|
+
# Legacy support file
|
15
|
+
{ path: '.windsurfrules', template: 'windsurfrules_template.txt' },
|
16
|
+
|
17
|
+
# Cursor rules directory and file
|
18
|
+
{ path: '.cursor', template: nil }, # directory
|
19
|
+
{ path: '.cursor/rules', template: nil }, # directory
|
20
|
+
{ path: '.cursor/rules/nova.mdc', template: 'nova.mdc' },
|
21
|
+
|
14
22
|
# Main README
|
15
23
|
{ path: 'shape/README.md', template: 'readme_template.md' },
|
16
24
|
|
17
25
|
# 1_big-picture section
|
18
26
|
{ path: 'shape/1_big-picture', template: nil }, # directory
|
19
|
-
{ path: 'shape/1_big-picture/README.md', template: 'big_picture_readme_template.md' },
|
20
27
|
{ path: 'shape/1_big-picture/prd_example.md', template: 'prd_example_template.md' },
|
21
|
-
{ path: 'shape/1_big-picture/
|
28
|
+
{ path: 'shape/1_big-picture/flowchart_example.md', template: 'flowchart_example_template.md' },
|
22
29
|
|
23
30
|
# 2_user-stories section
|
24
31
|
{ path: 'shape/2_user-stories', template: nil }, # directory
|
25
|
-
{ path: 'shape/2_user-stories/README.md', template: 'user_stories_readme_template.md' },
|
26
32
|
{ path: 'shape/2_user-stories/example.md', template: 'user_story_example.md' },
|
27
33
|
|
28
34
|
# 3_design-system section
|
29
35
|
{ path: 'shape/3_design-system', template: nil }, # directory
|
30
|
-
{ path: 'shape/3_design-system/
|
31
|
-
{ path: 'shape/3_design-system/design_decisions.md', template: 'design_decisions_example.md' },
|
36
|
+
{ path: 'shape/3_design-system/example.md', template: 'design_decisions_example.md' },
|
32
37
|
|
33
|
-
#
|
34
|
-
{ path: 'shape/
|
35
|
-
{ path: 'shape/
|
36
|
-
{ path: 'shape/
|
37
|
-
{ path: 'shape/4_prompts/02_generate_styleguide.md', template: 'prompts_examples/02_generate_styleguide.md' },
|
38
|
-
{ path: 'shape/4_prompts/03_generate_static_pages.md', template: 'prompts_examples/03_generate_static_pages.md' },
|
39
|
-
{ path: 'shape/4_prompts/04_authentication_feature.md', template: 'prompts_examples/04_authentication_feature.md' },
|
38
|
+
# 4_tasks section
|
39
|
+
{ path: 'shape/4_tasks', template: nil }, # directory
|
40
|
+
{ path: 'shape/4_tasks/1_generate_application.md', template: 'tasks_examples/1_generate_application.md' },
|
41
|
+
{ path: 'shape/4_tasks/2_generate_static_pages.md', template: 'tasks_examples/2_generate_static_pages.md' },
|
40
42
|
|
41
43
|
# Code directory
|
42
44
|
{ path: 'code', template: nil } # directory
|
@@ -49,8 +51,6 @@ module Nova
|
|
49
51
|
def generate
|
50
52
|
create_main_directories
|
51
53
|
create_all_files_and_directories
|
52
|
-
create_windsurfrules_file
|
53
|
-
create_cursorcontext_file
|
54
54
|
display_success_message
|
55
55
|
end
|
56
56
|
|
@@ -86,43 +86,26 @@ module Nova
|
|
86
86
|
write_file(path.sub("#{app_name}/", ''), content)
|
87
87
|
end
|
88
88
|
|
89
|
-
def create_windsurfrules_file
|
90
|
-
rules = ai_assistant_rules
|
91
|
-
content = rules.join("\n")
|
92
|
-
write_file('.windsurfrules', content)
|
93
|
-
end
|
94
|
-
|
95
|
-
def create_cursorcontext_file
|
96
|
-
rules = ai_assistant_rules
|
97
|
-
content = JSON.pretty_generate({
|
98
|
-
"rules" => rules
|
99
|
-
})
|
100
|
-
write_file('.cursorcontext', content)
|
101
|
-
end
|
102
|
-
|
103
|
-
def ai_assistant_rules
|
104
|
-
[
|
105
|
-
"The shape/ folder is where we collaborate to create product & feature documentation. shape/README.md clarifies how we document product & feature requirements and where to put stuff. Look at that file before writing documentation.",
|
106
|
-
"The code/ folder is where you write code. Do not write code unless I tell you to.",
|
107
|
-
"Important! Opt for the simplest version of any feature or requirement unless otherwise indicated.",
|
108
|
-
"Important! Any time a user requests a change to the product shape, even during coding, update the documentation in shape/",
|
109
|
-
"Be as concise as possible.",
|
110
|
-
"Follow TDD whenever writing code. Unit tests for back-end using rspec and E2E tests for front-end using Cypress."
|
111
|
-
]
|
112
|
-
end
|
113
|
-
|
114
89
|
def display_success_message
|
115
90
|
puts "\nShape project created for #{app_name}!"
|
116
91
|
puts "\nDirectory structure:"
|
117
92
|
puts " #{app_name}/"
|
118
93
|
puts " ├── .windsurfrules"
|
119
|
-
puts " ├── .
|
94
|
+
puts " ├── .cursor/"
|
95
|
+
puts " │ └── rules/"
|
96
|
+
puts " │ └── nova.mdc"
|
120
97
|
puts " ├── shape/"
|
121
98
|
puts " │ ├── README.md"
|
122
99
|
puts " │ ├── 1_big-picture/"
|
100
|
+
puts " │ │ ├── prd_example.md"
|
101
|
+
puts " │ │ └── flowchart_example.md"
|
123
102
|
puts " │ ├── 2_user-stories/"
|
103
|
+
puts " │ │ └── example.md"
|
124
104
|
puts " │ ├── 3_design-system/"
|
125
|
-
puts " │
|
105
|
+
puts " │ │ └── example.md"
|
106
|
+
puts " │ └── 4_tasks/"
|
107
|
+
puts " │ ├── 1_generate_application.md"
|
108
|
+
puts " │ └── 2_generate_static_pages.md"
|
126
109
|
puts " └── code/"
|
127
110
|
end
|
128
111
|
|
@@ -147,8 +130,8 @@ module Nova
|
|
147
130
|
create_files_for_path('shape/1_big-picture')
|
148
131
|
end
|
149
132
|
|
150
|
-
def
|
151
|
-
create_files_for_path('shape/
|
133
|
+
def create_tasks_files
|
134
|
+
create_files_for_path('shape/4_tasks')
|
152
135
|
end
|
153
136
|
|
154
137
|
def create_user_stories_files
|
@@ -0,0 +1,64 @@
|
|
1
|
+
---
|
2
|
+
description: Nova project workflow rules for AI-assisted development
|
3
|
+
globs:
|
4
|
+
alwaysApply: true
|
5
|
+
---
|
6
|
+
---
|
7
|
+
description: Nova project workflow rules for AI-assisted development
|
8
|
+
globs:
|
9
|
+
alwaysApply: true
|
10
|
+
---
|
11
|
+
|
12
|
+
# Nova Project Rules
|
13
|
+
|
14
|
+
You are working in a Nova project that follows a structured product development workflow from abstract ideas to concrete implementation.
|
15
|
+
|
16
|
+
## Project Structure
|
17
|
+
- `shape/` - Product documentation (no code here)
|
18
|
+
- `1_big-picture/` - PRD, flowchart
|
19
|
+
- `2_user-stories/` - User stories and their acceptance criteria
|
20
|
+
- `3_design-system/` - UI/UX standards and components
|
21
|
+
- `4_tasks/` - Implementation tasks with progress tracking
|
22
|
+
- `code/` - Application implementation
|
23
|
+
|
24
|
+
## Workflow
|
25
|
+
1. **Big Picture**: Define strategic vision and goals
|
26
|
+
2. **User Stories**: Break down into specific user needs
|
27
|
+
3. **Design System**: Establish visual language
|
28
|
+
4. **Tasks**: Create actionable implementation steps
|
29
|
+
5. **Code**: Build features following the tasks
|
30
|
+
|
31
|
+
## Key Rules
|
32
|
+
|
33
|
+
### When in shape/ (Documentation)
|
34
|
+
- Never write code - documentation only
|
35
|
+
- Start with "why" before "what"
|
36
|
+
- Keep user value central
|
37
|
+
- Use Mermaid for diagrams
|
38
|
+
- Reference previous sections for traceability
|
39
|
+
|
40
|
+
### When in code/ (Implementation)
|
41
|
+
- Review shape/ documentation first
|
42
|
+
- Follow tasks in shape/4_tasks/
|
43
|
+
- Update task checkboxes as you complete work
|
44
|
+
- Start with the core page/feature, then pause for review
|
45
|
+
- Use Structs for hardcoded data (will become models later)
|
46
|
+
|
47
|
+
### Code Quality Standards
|
48
|
+
- Rails conventions with RSpec tests
|
49
|
+
- Keep methods under 10 lines (use POROs if needed)
|
50
|
+
- Name POROs as verbs with single `call` method
|
51
|
+
- Components should follow design system
|
52
|
+
- Write E2E tests with Cypress
|
53
|
+
|
54
|
+
### Task Management
|
55
|
+
- Work through tasks sequentially
|
56
|
+
- Update file tracking tables (⏳ → ✅)
|
57
|
+
- Complete foundational tasks before custom features
|
58
|
+
- Pause after major milestones for user feedback
|
59
|
+
|
60
|
+
## Remember
|
61
|
+
- Maintain documentation-to-code traceability
|
62
|
+
- Keep things simple unless specified otherwise
|
63
|
+
- Focus on user value in every decision
|
64
|
+
- This is an iterative process - expect refinements
|
@@ -1,74 +1,82 @@
|
|
1
|
-
# Product Development Workflow
|
1
|
+
# Product Development Workflow for [project_name]
|
2
2
|
|
3
|
-
|
3
|
+
This project utilizes the Nova workflow, a structured approach for AI-assisted product development. This `README.md` (located in `shape/README.md`) provides an overview of the process and project structure.
|
4
4
|
|
5
5
|
---
|
6
6
|
|
7
7
|
## The Nova Process
|
8
8
|
|
9
|
-
The Nova process guides
|
9
|
+
The Nova process guides development through clear, sequential phases:
|
10
10
|
|
11
|
-
1.
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
1. **Big Picture (`shape/1_big-picture/`)**: Define strategic vision, goals, and create the Product Requirements Document (PRD).
|
12
|
+
* `prd_example.md`: Template and example for your PRD.
|
13
|
+
* `flowchart_example.md`: Template for user flows and system diagrams.
|
14
|
+
2. **User Stories (`shape/2_user-stories/`)**: Break down the vision into specific user needs and acceptance criteria.
|
15
|
+
* `example.md`: Template for writing user stories.
|
16
|
+
3. **Design System (`shape/3_design-system/`)**: Establish the visual language, UI components, and design standards.
|
17
|
+
* `example.md`: Template for documenting design decisions.
|
18
|
+
4. **Tasks (`shape/4_tasks/`)**: Create detailed, actionable implementation task lists for each feature, derived from the PRD and user stories. These tasks include file tracking.
|
19
|
+
* `1_example.md`: Canonical template for feature task lists. Name subsequent task files like `2_feature_name.md`, `3_another_feature.md`, etc.
|
20
|
+
5. **Coding (`code/`)**: Implement the application based on the defined tasks. AI assistance is guided by Cursor Rules.
|
21
|
+
6. **Progress Tracking (`progress.md`)**: Monitor overall project status, task completion, and blockers in the root `progress.md` file.
|
15
22
|
|
16
|
-
Each
|
23
|
+
Each phase has associated Cursor Rules (`.cursor/rules/` and nested within `shape/*/.cursor/rules/`) that provide contextual guidance to the AI assistant.
|
17
24
|
|
18
25
|
---
|
19
26
|
|
20
|
-
##
|
27
|
+
## Generated Project Structure
|
21
28
|
|
22
29
|
```
|
23
30
|
[project_name]/
|
24
|
-
├──
|
25
|
-
|
31
|
+
├── .windsurfrules # Legacy support, points to modern rules
|
32
|
+
├── .cursor/ # Cursor-specific configuration & rules
|
33
|
+
│ └── rules/
|
34
|
+
│ ├── nova-project.mdc # Core Nova workflow guidance (always active)
|
35
|
+
│ ├── shape-documentation.mdc # Rules for working in the shape/ directory
|
36
|
+
│ ├── code-development.mdc # Rules for working in the code/ directory
|
37
|
+
│ └── tasks.mdc # Rules for task creation & progress tracking
|
38
|
+
├── progress.md # Overall project progress tracking
|
39
|
+
├── shape/ # Product definition & planning documents
|
40
|
+
│ ├── README.md # This overview file
|
26
41
|
│ ├── 1_big-picture/
|
27
|
-
│ │ ├──
|
42
|
+
│ │ ├── .cursor/rules/big-picture.mdc # Guidance for PRD & vision
|
28
43
|
│ │ ├── prd_example.md
|
29
|
-
│ │
|
44
|
+
│ │ └── flowchart_example.md
|
30
45
|
│ ├── 2_user-stories/
|
31
|
-
│ │ ├──
|
46
|
+
│ │ ├── .cursor/rules/user-stories.mdc # Guidance for user stories
|
32
47
|
│ │ └── example.md
|
33
48
|
│ ├── 3_design-system/
|
34
|
-
│ │ ├──
|
35
|
-
│ │ └── design_decisions.md
|
36
|
-
│ ├── 4_prompts/
|
37
|
-
│ │ ├── README.md
|
49
|
+
│ │ ├── .cursor/rules/design-system.mdc # Guidance for design system
|
38
50
|
│ │ └── example.md
|
39
|
-
|
51
|
+
│ └── 4_tasks/
|
52
|
+
│ └── 1_example.md # Template for feature task lists
|
53
|
+
└── code/ # Application source code
|
40
54
|
```
|
41
55
|
|
42
56
|
---
|
43
57
|
|
44
|
-
## Getting Started
|
58
|
+
## Getting Started with AI Assistance
|
45
59
|
|
46
|
-
1.
|
47
|
-
2. Work through
|
48
|
-
3.
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
60
|
+
1. **Familiarize the AI**: Ensure the AI assistant has read this `shape/README.md` and the main `.cursor/rules/nova-project.mdc` rule.
|
61
|
+
2. **Follow the Phases**: Work through the `shape/` subdirectories sequentially.
|
62
|
+
3. **Use Cursor Rules**: Cursor rules will automatically activate based on the directory you are working in, providing contextual guidance. Pay attention to these rules.
|
63
|
+
4. **PRD First**: Start by fleshing out `shape/1_big-picture/prd_example.md`.
|
64
|
+
5. **User Stories Next**: Define user stories in `shape/2_user-stories/example.md` based on the PRD.
|
65
|
+
6. **Design System**: Document design decisions in `shape/3_design-system/example.md`.
|
66
|
+
7. **Create Tasks**: For each feature, create a new task file in `shape/4_tasks/` (e.g., `shape/4_tasks/2_new_feature.md`) using `1_example.md` as a template. The AI can help generate these tasks based on the PRD and user stories, guided by `.cursor/rules/tasks.mdc`.
|
67
|
+
8. **Implement Tasks**: Work through the sub-tasks in your feature task files. Update the checkboxes `[ ]` to `[x]` upon completion.
|
68
|
+
9. **Track Files**: Update the "File Tracking" section in each task file as you create or modify files.
|
69
|
+
10. **Update Progress**: Regularly update `progress.md` to reflect the status of tasks and features.
|
54
70
|
|
55
71
|
---
|
56
72
|
|
57
73
|
## Best Practices
|
58
74
|
|
59
|
-
- **Start with Why**: Always begin by understanding the strategic purpose behind the project
|
60
|
-
- **Focus on User Value**: Keep the user's needs at the center of all planning
|
61
|
-
- **
|
62
|
-
- **
|
63
|
-
- **Collaborate Across Disciplines**: Involve all relevant team members in the appropriate steps
|
64
|
-
- **Iterate and Refine**: The process is not strictly linear - revisit and update documents as you learn
|
75
|
+
- **Start with Why**: Always begin by understanding the strategic purpose behind the project from the PRD.
|
76
|
+
- **Focus on User Value**: Keep the user's needs (from user stories) at the center of all planning and implementation.
|
77
|
+
- **Task Granularity**: Break down features into small, manageable tasks.
|
78
|
+
- **Iterate and Refine**: The process is iterative. Revisit and update documents in `shape/` and `progress.md` as you learn and make changes during development.
|
65
79
|
|
66
80
|
---
|
67
81
|
|
68
|
-
|
69
|
-
|
70
|
-
- **Nova Gem Documentation**: [Link to documentation]
|
71
|
-
- **Product Planning Best Practices**: [Link to resources]
|
72
|
-
- **AI Development Guidelines**: [Link to guidelines]
|
73
|
-
|
74
|
-
For questions or suggestions to improve this process, please contact Ryan Francis (ryan@launchpadlab.com).
|
82
|
+
For questions or suggestions, please contact Ryan Francis (ryan@launchpadlab.com).
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# Generate Rails Application
|
2
|
+
|
3
|
+
## Task Overview
|
4
|
+
In the code/ directory generate a Rails 8 application with PostgreSQL, Tailwind CSS, Rspec, Flowbite, and Cypress to serve as the foundation for the project.
|
5
|
+
|
6
|
+
## Prerequisites
|
7
|
+
- Review PRD and technical requirements in ../1_big-picture/
|
8
|
+
- Ensure development environment has Ruby, Rails 8, and PostgreSQL installed
|
9
|
+
- Review design system guidelines in ../3_design-system/
|
10
|
+
|
11
|
+
## Tasks
|
12
|
+
|
13
|
+
- [ ] 1.0 Create Rails Application & Initialize Git
|
14
|
+
- [ ] 1.1 Generate Rails app: `rails _8.0.2_ new app_name --database=postgresql --css=tailwind`
|
15
|
+
- [ ] 1.2 Navigate to app directory: `cd app_name`
|
16
|
+
- [ ] 1.3 Initialize git repository: `git init`
|
17
|
+
- [ ] 1.4 Initial commit: `git add . && git commit -m "Initial commit: New Rails app"`
|
18
|
+
- [ ] 1.5 Install Tailwind: `bundle exec rails tailwindcss:install`
|
19
|
+
- [ ] 1.6 Setup database: `bundle exec rails db:create db:migrate`
|
20
|
+
- [ ] 1.7 Install RSpec: `bundle exec rails generate rspec:install`
|
21
|
+
- [ ] 1.8 Verify RSpec works: `bundle exec rspec`
|
22
|
+
|
23
|
+
- [ ] 2.0 Set up Core Gems
|
24
|
+
- [ ] 2.1 Add production gems to Gemfile (figaro, decanter)
|
25
|
+
- [ ] 2.2 Add testing gems to Gemfile (factory_bot_rails, faker, database_cleaner-active_record, shoulda-matchers, capybara, simplecov)
|
26
|
+
- [ ] 2.3 Add production gems (redis, sidekiq, sentry-ruby, sentry-rails, aws-sdk-s3)
|
27
|
+
- [ ] 2.4 Run bundle install: `bundle install`
|
28
|
+
- [ ] 2.5 Add platform compatibility: `bundle lock --add-platform x86_64-linux`
|
29
|
+
|
30
|
+
- [ ] 3.0 Set up Flowbite for UI Components
|
31
|
+
- [ ] 3.1 Add Flowbite to importmap: `config/importmap.rb`
|
32
|
+
- [ ] 3.2 Import Flowbite in application.js
|
33
|
+
- [ ] 3.3 Verify Flowbite loads correctly
|
34
|
+
|
35
|
+
- [ ] 4.0 Create Hello World Page
|
36
|
+
- [ ] 4.1 Generate controller: `rails generate controller Pages hello`
|
37
|
+
- [ ] 4.2 Create route for hello page
|
38
|
+
- [ ] 4.3 Style page with Tailwind CSS
|
39
|
+
- [ ] 4.4 Add Flowbite tooltip component to test integration
|
40
|
+
- [ ] 4.5 Verify page loads at `http://localhost:3000/hello`
|
41
|
+
|
42
|
+
- [ ] 5.0 Set up Cypress for E2E Testing
|
43
|
+
- [ ] 5.1 Install Cypress: `yarn add cypress start-server-and-test --dev`
|
44
|
+
- [ ] 5.2 Create simple E2E test for Hello World page
|
45
|
+
- [ ] 5.3 Add test scripts to package.json
|
46
|
+
- [ ] 5.4 Verify tests run: `yarn test:e2e:open`
|
47
|
+
|
48
|
+
- [ ] 6.0 Final Setup & Verification
|
49
|
+
- [ ] 6.1 Verify all tests pass (RSpec and Cypress)
|
50
|
+
- [ ] 6.2 Verify server starts cleanly: `bin/dev`
|
51
|
+
- [ ] 6.3 Create git commit for baseline setup
|
52
|
+
|
53
|
+
## File Tracking
|
54
|
+
|
55
|
+
### Files to Create
|
56
|
+
| File Path | Purpose | Task Ref | Status |
|
57
|
+
|-----------|---------|----------|--------|
|
58
|
+
| `Gemfile` | Ruby dependencies | 2.1-2.3 | ⏳ |
|
59
|
+
| `config/importmap.rb` | JavaScript imports | 3.1 | ⏳ |
|
60
|
+
| `app/javascript/application.js` | JS entry point | 3.2 | ⏳ |
|
61
|
+
| `app/controllers/pages_controller.rb` | Static pages controller | 4.1 | ⏳ |
|
62
|
+
| `app/views/pages/hello.html.erb` | Hello world view | 4.3 | ⏳ |
|
63
|
+
| `cypress/e2e/hello_world_spec.cy.js` | E2E test | 5.2 | ⏳ |
|
64
|
+
| `package.json` | Node.js scripts | 5.3 | ⏳ |
|
65
|
+
|
66
|
+
### Files to Modify
|
67
|
+
| File Path | Changes | Task Ref | Status |
|
68
|
+
|-----------|---------|----------|--------|
|
69
|
+
| `config/routes.rb` | Add hello route | 4.2 | ⏳ |
|
70
|
+
|
71
|
+
## Notes
|
72
|
+
- Follow Tailwind v4 documentation as many conventions have changed from v3
|
73
|
+
- Ensure PostgreSQL is running before database creation
|
74
|
+
- This sets up the foundation for all subsequent development tasks
|
75
|
+
- Refer to design system in ../3_design-system/ for styling consistency
|