spec-feature 1.0.7 → 1.0.8
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/README.md +60 -165
- package/bin/cli.js +31 -23
- package/package.json +1 -1
- package/spec/core/hotfix.md +1 -0
- package/spec/core/plan.md +1 -0
- package/spec/core/spec.md +1 -0
- package/spec/core/tasks.md +2 -0
- package/spec/core/verify.md +1 -0
- package/spec/feature.md +2 -0
- package/ui/README.md +75 -0
- package/ui/app/app.vue +6 -0
- package/ui/eslint.config.mjs +6 -0
- package/ui/nuxt.config.ts +13 -0
- package/ui/package.json +24 -0
- package/ui/public/favicon.ico +0 -0
- package/ui/public/robots.txt +2 -0
- package/ui/tsconfig.json +18 -0
- package/ui/yarn.lock +6926 -0
package/README.md
CHANGED
|
@@ -4,203 +4,98 @@
|
|
|
4
4
|
|
|
5
5
|
**Turn your idea into a ready development plan in minutes!**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Create technical specifications, plans, and tasks for your development team using AI from a single description.
|
|
8
8
|
|
|
9
|
-
## 🎯
|
|
9
|
+
## 🎯 Benefits
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
The specification becomes the single source of truth — no more guessing about what you intended to build.
|
|
13
|
-
|
|
14
|
-
### **🤝 Fewer misunderstandings between human and AI**
|
|
15
|
-
Clear "contracts" / specifications help avoid "vibe coding" — when AI "guesses" your intentions and often builds something not quite what you need.
|
|
16
|
-
|
|
17
|
-
### **📚 Architecture and decisions are documented**
|
|
18
|
-
"Why did we choose this solution?" will be captured in the specification, not in emails, chats, or someone's head.
|
|
19
|
-
|
|
20
|
-
### **✅ Controlled task breakdown**
|
|
21
|
-
Small tasks are easier to review, test, and correct — fewer "big commits that are hard to understand".
|
|
22
|
-
|
|
23
|
-
### **🔄 Flexibility and evolution**
|
|
24
|
-
Specifications are not "dead" — they can be updated, refactored, and revised when requirements change.
|
|
25
|
-
|
|
26
|
-
### **🤖 AI assistant integration**
|
|
27
|
-
Specification + plan + tasks give AI "context" and boundaries within which it can generate code more safely.
|
|
11
|
+
✨ Clear project start • 🤝 Fewer misunderstandings • 📚 Documented architecture • ✅ Controlled tasks • 🔄 Easy updates • 🤖 Better AI integration
|
|
28
12
|
|
|
29
13
|
## ⚡ Quick Start
|
|
30
14
|
|
|
31
|
-
### 🚀 Using npx (recommended)
|
|
32
|
-
|
|
33
|
-
The easiest way to get started with Spec Feature:
|
|
34
|
-
|
|
35
15
|
```bash
|
|
36
|
-
# Initialize
|
|
16
|
+
# Initialize in current directory
|
|
37
17
|
npx spec-feature init
|
|
38
18
|
|
|
39
|
-
#
|
|
19
|
+
# Or with custom folder name
|
|
40
20
|
npx spec-feature init my-project-docs
|
|
41
21
|
```
|
|
42
22
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
23
|
+
Creates the Spec Feature structure inside `spec/` by default, or inside the folder name you provide.
|
|
24
|
+
|
|
25
|
+
## 📁 Structure
|
|
26
|
+
|
|
27
|
+
```mermaid
|
|
28
|
+
graph TD
|
|
29
|
+
A[spec/] --> B[README.md]
|
|
30
|
+
A --> C[feature.md]
|
|
31
|
+
A --> D[core/]
|
|
32
|
+
A --> E[features/]
|
|
33
|
+
|
|
34
|
+
D --> F[spec.md]
|
|
35
|
+
D --> G[plan.md]
|
|
36
|
+
D --> H[tasks.md]
|
|
37
|
+
D --> I[verify.md]
|
|
38
|
+
D --> J[hotfix.md]
|
|
39
|
+
|
|
40
|
+
E --> K[user-auth/]
|
|
41
|
+
K --> L[spec.md]
|
|
42
|
+
K --> M[plan.md]
|
|
43
|
+
K --> N[tasks.md]
|
|
44
|
+
K --> O[verify-report.md]
|
|
55
45
|
```
|
|
56
46
|
|
|
57
|
-
|
|
47
|
+
**Templates** (core/) → **Features** (features/)
|
|
58
48
|
|
|
59
|
-
|
|
49
|
+
## 🎬 Workflow
|
|
60
50
|
|
|
61
|
-
|
|
62
|
-
npm install spec-feature
|
|
63
|
-
|
|
64
|
-
# Add to package.json scripts
|
|
65
|
-
{
|
|
66
|
-
"scripts": {
|
|
67
|
-
"init-spec": "spec-feature init",
|
|
68
|
-
"init-docs": "spec-feature init documentation"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
```
|
|
51
|
+
**Send these prompts to your AI assistant** (Claude, Cursor, Copilot, etc.) to create, execute, and update features.
|
|
72
52
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
### 🏗️ Initial structure (created during initialization)
|
|
76
|
-
```
|
|
77
|
-
/spec
|
|
78
|
-
├── README.md ← this guide
|
|
79
|
-
├── feature.md ← main template for launching spec-feature
|
|
80
|
-
└── core ← base templates for specific stages
|
|
81
|
-
├── spec.md ← specification structure
|
|
82
|
-
├── plan.md ← technical plan structure
|
|
83
|
-
├── tasks.md ← task list structure
|
|
84
|
-
├── verify.md ← verification report structure
|
|
85
|
-
└── hotfix.md ← hotfix and update structure
|
|
86
|
-
```
|
|
53
|
+
### 1️⃣ Create Feature
|
|
87
54
|
|
|
88
|
-
### 🎯 Full structure (after creating the first feature)
|
|
89
55
|
```
|
|
90
|
-
/
|
|
91
|
-
|
|
92
|
-
├── feature.md ← main template for launching spec-feature
|
|
93
|
-
├── core ← base templates for specific stages
|
|
94
|
-
│ ├── spec.md ← specification structure
|
|
95
|
-
│ ├── plan.md ← technical plan structure
|
|
96
|
-
│ ├── tasks.md ← task list structure
|
|
97
|
-
│ ├── verify.md ← verification report structure
|
|
98
|
-
│ └── hotfix.md ← hotfix and update structure
|
|
99
|
-
└── features ← folder with feature materials (created automatically)
|
|
100
|
-
├── <feature> ← specific feature folder (e.g., `user-auth`)
|
|
101
|
-
│ ├── spec.md ← current specification
|
|
102
|
-
│ ├── plan.md ← technical plan
|
|
103
|
-
│ ├── tasks.md ← implementation checklist
|
|
104
|
-
│ └── verify-report.md (optional) — verification log
|
|
105
|
-
└── ... ← other features created from templates
|
|
56
|
+
Use the template from spec/feature.md.
|
|
57
|
+
#feature-name# Your description here
|
|
106
58
|
```
|
|
107
59
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
## 🎬 Getting Started
|
|
111
|
-
|
|
112
|
-
To create a feature specification, use the `spec/feature.md` template with any AI Assistant that can create folders and files (such as `Claude Code`, `Gemini CLI`, `Codex CLI`, `Copilot`, `Cursor`, etc.).
|
|
113
|
-
|
|
114
|
-
### 📝 Input parameter format
|
|
60
|
+
Format: `#feature# description` → creates `spec/features/feature-name/` with 3 files:
|
|
115
61
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
62
|
+
```mermaid
|
|
63
|
+
flowchart LR
|
|
64
|
+
A[feature.md template] --> B[spec.md]
|
|
65
|
+
A --> C[plan.md]
|
|
66
|
+
A --> D[tasks.md]
|
|
67
|
+
```
|
|
120
68
|
|
|
121
|
-
###
|
|
69
|
+
### 2️⃣ Execute Tasks
|
|
122
70
|
|
|
123
71
|
```
|
|
124
|
-
|
|
125
|
-
#user-auth# Need to add user authentication via email and password. The user should be able to register, log in, and recover their password. Integration with the existing notification system is mandatory.
|
|
72
|
+
Execute all tasks in spec/features/{FEATURE}/tasks.md
|
|
126
73
|
```
|
|
127
74
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
## 🚀 Launching Task Execution
|
|
138
|
-
|
|
139
|
-
After creating the specification and plan, you can proceed with implementation:
|
|
140
|
-
|
|
141
|
-
1. **🎯 Launch task execution**
|
|
142
|
-
```
|
|
143
|
-
Execute all tasks in `spec/features/{FEATURE}/tasks.md`
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
2. **⚡ What happens during execution**
|
|
147
|
-
- AI assistant sequentially executes tasks from the checklist
|
|
148
|
-
- Each completed task is marked as finished
|
|
149
|
-
- When problems arise, the assistant may request clarifications
|
|
150
|
-
- Progress can be tracked by updating checkboxes in `tasks.md`
|
|
151
|
-
|
|
152
|
-
3. **📝 Example for user-auth feature**
|
|
153
|
-
```
|
|
154
|
-
Execute all tasks in `spec/features/user-auth/tasks.md`
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## ✅ What Happens After Task Execution
|
|
158
|
-
|
|
159
|
-
After completing all tasks, automatic verification is launched:
|
|
160
|
-
|
|
161
|
-
1. **🔍 Automatic verification**
|
|
162
|
-
- AI assistant uses the `spec/core/verify.md` template
|
|
163
|
-
- Compares implemented functionality with requirements from `spec.md`
|
|
164
|
-
- Checks compliance with the technical plan from `plan.md`
|
|
165
|
-
|
|
166
|
-
2. **📊 Verification results**
|
|
167
|
-
- A report `spec/features/{FEATURE}/verify-report.md` is created
|
|
168
|
-
- Task statuses in `tasks.md` are updated (✅ completed / ❌ requires refinement)
|
|
169
|
-
- Found discrepancies and recommendations are recorded
|
|
170
|
-
|
|
171
|
-
3. **📋 Verification report content**
|
|
172
|
-
- Summary of completed tasks
|
|
173
|
-
- List of found problems
|
|
174
|
-
- Recommendations for fixes
|
|
175
|
-
- Assessment of feature readiness for production
|
|
176
|
-
|
|
177
|
-
## 🔄 Updating Existing Feature
|
|
75
|
+
```mermaid
|
|
76
|
+
flowchart TD
|
|
77
|
+
A[tasks.md] --> B[Task 1]
|
|
78
|
+
B --> C[Task 2]
|
|
79
|
+
C --> D[Task N]
|
|
80
|
+
D --> E[All Complete]
|
|
81
|
+
E --> F[Auto Verification]
|
|
82
|
+
F --> G[verify-report.md]
|
|
83
|
+
```
|
|
178
84
|
|
|
179
|
-
|
|
85
|
+
### 3️⃣ Update Feature
|
|
180
86
|
|
|
181
|
-
**📝 Update example:**
|
|
182
87
|
```
|
|
183
88
|
Use the template from spec/feature.md.
|
|
184
|
-
#
|
|
89
|
+
#feature-name# New requirements
|
|
185
90
|
```
|
|
186
91
|
|
|
187
|
-
|
|
92
|
+
Overwrites spec.md, plan.md, tasks.md with updated content.
|
|
188
93
|
|
|
189
94
|
## 🛠️ Troubleshooting
|
|
190
95
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
- **✅ Solution:** Check task numbering in `tasks.md` and reorder if necessary
|
|
198
|
-
|
|
199
|
-
**❌ Problem:** Verification doesn't launch automatically
|
|
200
|
-
- **✅ Solution:** Make sure all tasks in `tasks.md` are marked as completed, then manually launch verification:
|
|
201
|
-
```
|
|
202
|
-
Use the template from spec/core/verify.md to verify spec/features/{FEATURE}/
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**❌ Problem:** Conflict when updating existing feature
|
|
206
|
-
- **✅ Solution:** Create a backup of current files before updating or use git to track changes
|
|
96
|
+
| Problem | Solution |
|
|
97
|
+
|---------|----------|
|
|
98
|
+
| No feature folder created | Check format `#feature# context` |
|
|
99
|
+
| Wrong task order | Reorder numbers in tasks.md |
|
|
100
|
+
| Verification not launched | All tasks must be checked, or run manually: `Use template from spec/core/verify.md to verify spec/features/{FEATURE}/` |
|
|
101
|
+
| Update conflicts | Use git to track changes |
|
package/bin/cli.js
CHANGED
|
@@ -7,48 +7,56 @@ import { fileURLToPath } from "url";
|
|
|
7
7
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
8
|
const __dirname = path.dirname(__filename);
|
|
9
9
|
|
|
10
|
+
const DEFAULT_FOLDER = "spec";
|
|
10
11
|
const args = process.argv.slice(2);
|
|
11
12
|
const command = args[0];
|
|
12
13
|
|
|
13
14
|
if (command === "init") {
|
|
14
15
|
const targetDir = process.cwd();
|
|
15
|
-
const folderName = args[1] ||
|
|
16
|
+
const folderName = args[1] || DEFAULT_FOLDER;
|
|
16
17
|
const destinationDir = path.join(targetDir, folderName);
|
|
17
|
-
const
|
|
18
|
+
const templateDir = path.join(__dirname, "..", DEFAULT_FOLDER);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
if (!fs.existsSync(templateDir)) {
|
|
21
|
+
console.error(`❌ Template directory not found: ${templateDir}`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function copyRecursive(src, dest, relative = "") {
|
|
20
26
|
const stat = fs.statSync(src);
|
|
21
|
-
|
|
27
|
+
|
|
22
28
|
if (stat.isDirectory()) {
|
|
23
29
|
if (!fs.existsSync(dest)) {
|
|
24
30
|
fs.mkdirSync(dest, { recursive: true });
|
|
31
|
+
if (relative) {
|
|
32
|
+
console.log(`Created: ${folderName}/${relative}`);
|
|
33
|
+
}
|
|
25
34
|
}
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
|
|
36
|
+
fs.readdirSync(src).forEach(entry => {
|
|
37
|
+
const nextRelative = relative ? `${relative}/${entry}` : entry;
|
|
38
|
+
copyRecursive(path.join(src, entry), path.join(dest, entry), nextRelative);
|
|
28
39
|
});
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (fs.existsSync(dest)) {
|
|
44
|
+
console.log(`Skipped (already exists): ${folderName}/${relative}`);
|
|
45
|
+
return;
|
|
31
46
|
}
|
|
47
|
+
|
|
48
|
+
fs.copyFileSync(src, dest);
|
|
49
|
+
console.log(`Created: ${folderName}/${relative}`);
|
|
32
50
|
}
|
|
33
51
|
|
|
34
|
-
// Create the destination directory if it doesn't exist
|
|
35
52
|
if (!fs.existsSync(destinationDir)) {
|
|
36
53
|
fs.mkdirSync(destinationDir, { recursive: true });
|
|
37
54
|
}
|
|
38
55
|
|
|
39
|
-
|
|
40
|
-
const src = path.join(templatesDir, file);
|
|
41
|
-
const dest = path.join(destinationDir, file);
|
|
42
|
-
|
|
43
|
-
if (!fs.existsSync(dest)) {
|
|
44
|
-
copyRecursive(src, dest);
|
|
45
|
-
console.log(`Created: ${folderName}/${file}`);
|
|
46
|
-
} else {
|
|
47
|
-
console.log(`Skipped (already exists): ${folderName}/${file}`);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
|
|
56
|
+
copyRecursive(templateDir, destinationDir);
|
|
51
57
|
console.log(`✅ Spec Feature initialized in '${folderName}' folder!`);
|
|
52
|
-
|
|
53
|
-
console.log("Usage: npx spec-feature init [folder-name]");
|
|
58
|
+
process.exit(0);
|
|
54
59
|
}
|
|
60
|
+
|
|
61
|
+
console.log("Usage: npx spec-feature init [folder-name]");
|
|
62
|
+
process.exit(1);
|
package/package.json
CHANGED
package/spec/core/hotfix.md
CHANGED
|
@@ -11,6 +11,7 @@ Template automates feature maintenance after release: records hotfixes and synch
|
|
|
11
11
|
|
|
12
12
|
- Work only in the `spec/features/{FEATURE}/` directory: allowed to edit `spec.md`, `plan.md`, and `tasks.md`.
|
|
13
13
|
- Do not create new files in the feature folder (including `hotfix.md` and verification reports).
|
|
14
|
+
- Do not generate application code, configuration snippets, scripts, or patches while documenting the hotfix.
|
|
14
15
|
- Preserve the structure of existing documents: do not delete sections, do not leave empty headers and hints from templates.
|
|
15
16
|
- All changes should consider requirements from specification and plan, maintaining consistency of terms and references.
|
|
16
17
|
- Actual task state must be reflected in `tasks.md`: do not allow desynchronization between checkboxes and actual state.
|
package/spec/core/plan.md
CHANGED
|
@@ -10,6 +10,7 @@ Template helps format the feature implementation plan in the **spec-feature** pr
|
|
|
10
10
|
**General rules**
|
|
11
11
|
|
|
12
12
|
- Work only with specification files within `/spec` directory: automatically create necessary directories and files.
|
|
13
|
+
- Do not generate application code, configuration snippets, scripts, or patches while preparing the implementation plan.
|
|
13
14
|
- Use `spec/core/spec.md` as the specification source on which the plan is formed.
|
|
14
15
|
- Use `spec/features/{FEATURE}/spec.md` as additional context. If the file is unavailable, continue working based on **CONTEXT**.
|
|
15
16
|
- Substitute specific values instead of placeholders (`{FEATURE}`, `{CONTEXT}`, etc.). If a section is not applicable — explicitly write `Not required — reason: <explanation>`.
|
package/spec/core/spec.md
CHANGED
|
@@ -10,6 +10,7 @@ Template helps describe a feature before implementation in the **spec-feature**
|
|
|
10
10
|
**General rules**
|
|
11
11
|
|
|
12
12
|
- Work only with specification files within `/spec` directory: automatically create necessary directories and files.
|
|
13
|
+
- Do not generate application code, configuration snippets, scripts, or patches while preparing the specification.
|
|
13
14
|
- Substitute specific values instead of placeholders (`{FEATURE}`, `{CONTEXT}`, etc.). The final document should not contain hints, examples, or `...` markers.
|
|
14
15
|
- The specification header should contain a clear feature name (adapt the **FEATURE** value if necessary).
|
|
15
16
|
- The structure from the template below needs to be filled with content: theses, lists, and tables are allowed, empty sections are not.
|
package/spec/core/tasks.md
CHANGED
|
@@ -10,12 +10,14 @@ Template helps form a task list for feature implementation in the **spec-feature
|
|
|
10
10
|
**General rules**
|
|
11
11
|
|
|
12
12
|
- Work only with specification files within `/spec` directory: automatically create necessary directories and files.
|
|
13
|
+
- Do not generate application code, configuration snippets, scripts, or patches while preparing the task list.
|
|
13
14
|
- Use `spec/core/spec.md` and `spec/core/plan.md` as base sources of specification and plan when preparing tasks.
|
|
14
15
|
- Use `spec/features/{FEATURE}/spec.md` and `spec/features/{FEATURE}/plan.md` as additional context. If any file is missing, continue working based on available materials and **CONTEXT**.
|
|
15
16
|
- Substitute specific values instead of placeholders (`{FEATURE}`, `{CONTEXT}`, etc.). The final document should not contain hints, examples, or `...` markers.
|
|
16
17
|
- Each task is a checkbox with result formulation and description of mandatory checks/tests.
|
|
17
18
|
- If a direction is not required, explicitly indicate under the corresponding subheading `Not required — reason: <explanation>`.
|
|
18
19
|
- After filling the document, mark self-check checkboxes in the "Instruction execution control" section.
|
|
20
|
+
- Do not start executing tasks until a separate user request explicitly references `spec/features/{FEATURE}/tasks.md`; ignore execution requests without that reference.
|
|
19
21
|
|
|
20
22
|
**What needs to be revealed in tasks**
|
|
21
23
|
|
package/spec/core/verify.md
CHANGED
|
@@ -10,6 +10,7 @@ Template helps format the results of automatic task execution verification and m
|
|
|
10
10
|
**General rules**
|
|
11
11
|
|
|
12
12
|
- Work only with specification files: do not create code and new directories.
|
|
13
|
+
- Do not generate application code, configuration snippets, scripts, or patches during verification.
|
|
13
14
|
- **REQUIRED:** Always create `spec/features/{FEATURE}/verify-report.md` file as the main output of verification process.
|
|
14
15
|
- Use `spec/features/{FEATURE}/spec.md`, `plan.md`, and `tasks.md` as source data for verification.
|
|
15
16
|
- Check tasks sequentially: after successful verification, mark the corresponding checkbox in `spec/features/{FEATURE}/tasks.md` as `[x]`; when discrepancies are found, leave `[ ]` and record details in the report file.
|
package/spec/feature.md
CHANGED
|
@@ -12,11 +12,13 @@ Parameters are passed in one line in the format `#<feature># <context>` without
|
|
|
12
12
|
**General rules**
|
|
13
13
|
|
|
14
14
|
- Work only with specification files in the `spec/features/{FEATURE}` directory: automatically create necessary directories and files within `/spec` folder only.
|
|
15
|
+
- Do not generate application code, configuration snippets, scripts, or patches while preparing specification artifacts.
|
|
15
16
|
- If the **FEATURE** value matches an already existing feature, update its current materials instead of creating a new folder and use the `spec/core/hotfix.md` template when making changes.
|
|
16
17
|
- Within one request, create/update three separate Markdown documents: `spec.md`, `plan.md`, and `tasks.md` in the appropriate directory structure.
|
|
17
18
|
- Automatically create the directory structure `spec/features/{FEATURE}/` if it doesn't exist.
|
|
18
19
|
- All sections from templates must be filled with content: do not leave empty headers, placeholders, or hint comments.
|
|
19
20
|
- Use sequence: first specification, then plan (based on specification), then task list (based on specification and plan).
|
|
21
|
+
- Implementation work starts only after an explicit user request that references `spec/features/{FEATURE}/tasks.md`; ignore requests to execute tasks if they do not contain that reference.
|
|
20
22
|
- Follow KISS, DRY, and YAGNI requirements: solutions should be implementable without excessive complexity and duplication.
|
|
21
23
|
|
|
22
24
|
**Steps**
|
package/ui/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Nuxt Minimal Starter
|
|
2
|
+
|
|
3
|
+
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
Make sure to install dependencies:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# npm
|
|
11
|
+
npm install
|
|
12
|
+
|
|
13
|
+
# pnpm
|
|
14
|
+
pnpm install
|
|
15
|
+
|
|
16
|
+
# yarn
|
|
17
|
+
yarn install
|
|
18
|
+
|
|
19
|
+
# bun
|
|
20
|
+
bun install
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Development Server
|
|
24
|
+
|
|
25
|
+
Start the development server on `http://localhost:3000`:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# npm
|
|
29
|
+
npm run dev
|
|
30
|
+
|
|
31
|
+
# pnpm
|
|
32
|
+
pnpm dev
|
|
33
|
+
|
|
34
|
+
# yarn
|
|
35
|
+
yarn dev
|
|
36
|
+
|
|
37
|
+
# bun
|
|
38
|
+
bun run dev
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Production
|
|
42
|
+
|
|
43
|
+
Build the application for production:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# npm
|
|
47
|
+
npm run build
|
|
48
|
+
|
|
49
|
+
# pnpm
|
|
50
|
+
pnpm build
|
|
51
|
+
|
|
52
|
+
# yarn
|
|
53
|
+
yarn build
|
|
54
|
+
|
|
55
|
+
# bun
|
|
56
|
+
bun run build
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Locally preview production build:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# npm
|
|
63
|
+
npm run preview
|
|
64
|
+
|
|
65
|
+
# pnpm
|
|
66
|
+
pnpm preview
|
|
67
|
+
|
|
68
|
+
# yarn
|
|
69
|
+
yarn preview
|
|
70
|
+
|
|
71
|
+
# bun
|
|
72
|
+
bun run preview
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
package/ui/app/app.vue
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
2
|
+
export default defineNuxtConfig({
|
|
3
|
+
compatibilityDate: '2025-07-15',
|
|
4
|
+
devtools: { enabled: true },
|
|
5
|
+
|
|
6
|
+
modules: [
|
|
7
|
+
'@nuxt/eslint',
|
|
8
|
+
'@nuxt/image',
|
|
9
|
+
'@nuxt/scripts',
|
|
10
|
+
'@nuxt/fonts',
|
|
11
|
+
'@nuxt/icon'
|
|
12
|
+
]
|
|
13
|
+
})
|
package/ui/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ui",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "nuxt build",
|
|
7
|
+
"dev": "nuxt dev",
|
|
8
|
+
"generate": "nuxt generate",
|
|
9
|
+
"preview": "nuxt preview",
|
|
10
|
+
"postinstall": "nuxt prepare"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@nuxt/eslint": "1.9.0",
|
|
14
|
+
"@nuxt/fonts": "0.11.4",
|
|
15
|
+
"@nuxt/icon": "2.1.0",
|
|
16
|
+
"@nuxt/image": "1.11.0",
|
|
17
|
+
"@nuxt/scripts": "0.13.0",
|
|
18
|
+
"@unhead/vue": "^2.0.3",
|
|
19
|
+
"eslint": "^9.0.0",
|
|
20
|
+
"nuxt": "^4.2.0",
|
|
21
|
+
"vue": "^3.5.22",
|
|
22
|
+
"vue-router": "^4.6.3"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
Binary file
|
package/ui/tsconfig.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
// https://nuxt.com/docs/guide/concepts/typescript
|
|
3
|
+
"files": [],
|
|
4
|
+
"references": [
|
|
5
|
+
{
|
|
6
|
+
"path": "./.nuxt/tsconfig.app.json"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"path": "./.nuxt/tsconfig.server.json"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"path": "./.nuxt/tsconfig.shared.json"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "./.nuxt/tsconfig.node.json"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|