maxsim-flutter 1.14.0 → 1.15.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.
- package/README.md +7 -63
- package/dist/cli/commands/create.js +7 -4
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/ui/prompts.d.ts +28 -1
- package/dist/cli/ui/prompts.d.ts.map +1 -1
- package/dist/cli/ui/prompts.js +72 -17
- package/dist/cli/ui/prompts.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -366,71 +366,15 @@ scaffold:
|
|
|
366
366
|
|
|
367
367
|
## Contributing
|
|
368
368
|
|
|
369
|
-
|
|
369
|
+
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for:
|
|
370
370
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
### Build
|
|
378
|
-
|
|
379
|
-
```bash
|
|
380
|
-
npm run build # Compile TypeScript to dist/
|
|
381
|
-
npm run dev # Watch mode compilation
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
### Testing
|
|
385
|
-
|
|
386
|
-
```bash
|
|
387
|
-
npm test # Run all tests
|
|
388
|
-
npm run test:watch # Watch mode
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
### Quality checks
|
|
392
|
-
|
|
393
|
-
All of the following must pass before submitting a pull request:
|
|
394
|
-
|
|
395
|
-
```bash
|
|
396
|
-
npm run typecheck # TypeScript type checking (zero errors)
|
|
397
|
-
npm run lint # ESLint (zero errors)
|
|
398
|
-
npm test # All tests pass
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
Auto-fix lint issues:
|
|
402
|
-
|
|
403
|
-
```bash
|
|
404
|
-
npm run lint:fix
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### Project structure
|
|
371
|
+
- Development setup and build instructions
|
|
372
|
+
- How to add a new module (step-by-step walkthrough)
|
|
373
|
+
- Template guidelines and conventions
|
|
374
|
+
- TDD workflow and quality gates
|
|
375
|
+
- Pull request process
|
|
408
376
|
|
|
409
|
-
|
|
410
|
-
src/
|
|
411
|
-
cli/ # CLI entry point, commands (create, add, migrate), interactive prompts
|
|
412
|
-
core/ # Config schema (Zod), project context, environment validator
|
|
413
|
-
scaffold/ # Template rendering engine (Handlebars), file writer, post-processors
|
|
414
|
-
modules/ # Module registry, resolver, composer, and definitions
|
|
415
|
-
ralph/ # PRD generation and story sizing
|
|
416
|
-
claude-setup/ # Generates .claude/ directory for output Flutter projects
|
|
417
|
-
types/ # Shared TypeScript interfaces
|
|
418
|
-
templates/
|
|
419
|
-
core/ # Base Clean Architecture Flutter templates
|
|
420
|
-
modules/ # Per-module Handlebars templates
|
|
421
|
-
claude-plugin/ # Claude Code plugin definition (commands, agents, skills)
|
|
422
|
-
tests/
|
|
423
|
-
unit/ # Unit tests
|
|
424
|
-
integration/ # Integration tests
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
### Commit convention
|
|
428
|
-
|
|
429
|
-
```
|
|
430
|
-
feat: [Story-ID] - Short description
|
|
431
|
-
fix: short description
|
|
432
|
-
chore: short description
|
|
433
|
-
```
|
|
377
|
+
For a deep dive into how the subsystems fit together, see [docs/architecture.md](docs/architecture.md).
|
|
434
378
|
|
|
435
379
|
---
|
|
436
380
|
|
|
@@ -8,7 +8,7 @@ import { createProjectContext } from '../../core/context.js';
|
|
|
8
8
|
import { validateEnvironment } from '../../core/validator.js';
|
|
9
9
|
import { ScaffoldEngine } from '../../scaffold/engine.js';
|
|
10
10
|
import { createSpinner } from '../ui/spinner.js';
|
|
11
|
-
import { promptForProjectCreation, promptForModuleConfig } from '../ui/prompts.js';
|
|
11
|
+
import { promptForProjectCreation, promptForModuleConfig, promptForPreset, getPresetModules } from '../ui/prompts.js';
|
|
12
12
|
const { writeFile, ensureDir } = fsExtra;
|
|
13
13
|
export function createCreateCommand() {
|
|
14
14
|
const cmd = new Command('create');
|
|
@@ -107,9 +107,12 @@ async function runCreate(appName, options) {
|
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
110
|
-
// Interactive
|
|
111
|
-
const
|
|
112
|
-
|
|
110
|
+
// Interactive: preset first, then project details
|
|
111
|
+
const presetId = await promptForPreset();
|
|
112
|
+
const isCustom = presetId === 'custom';
|
|
113
|
+
const answers = await promptForProjectCreation({ projectName: appName }, {
|
|
114
|
+
skipModules: !isCustom,
|
|
115
|
+
defaultModules: getPresetModules(presetId),
|
|
113
116
|
});
|
|
114
117
|
// Build module config: prompt for per-module settings for configurable modules
|
|
115
118
|
const modules = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/ui/prompts.d.ts
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
/** Identifies which preset the user chose. */
|
|
2
|
+
export type PresetId = 'minimal' | 'standard' | 'full' | 'custom';
|
|
3
|
+
/** A named bundle of pre-selected modules. */
|
|
4
|
+
export interface Preset {
|
|
5
|
+
readonly id: PresetId;
|
|
6
|
+
readonly label: string;
|
|
7
|
+
readonly description: string;
|
|
8
|
+
readonly modules: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/** Options for promptForProjectCreation — second parameter (optional). */
|
|
11
|
+
export interface CreateOptions {
|
|
12
|
+
/** When true, skip the module multiselect and use defaultModules instead. */
|
|
13
|
+
skipModules?: boolean;
|
|
14
|
+
/** Modules to return when skipModules is true. */
|
|
15
|
+
defaultModules?: readonly string[];
|
|
16
|
+
}
|
|
17
|
+
export declare const PRESETS: readonly Preset[];
|
|
18
|
+
/**
|
|
19
|
+
* Returns the module IDs for the given preset.
|
|
20
|
+
* For 'custom', returns an empty array (caller shows the multiselect).
|
|
21
|
+
*/
|
|
22
|
+
export declare function getPresetModules(presetId: PresetId): readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Shows a preset selection prompt before the main project creation flow.
|
|
25
|
+
* Returns the chosen PresetId. Exits on cancel.
|
|
26
|
+
*/
|
|
27
|
+
export declare function promptForPreset(): Promise<PresetId>;
|
|
1
28
|
export interface CreateAnswers {
|
|
2
29
|
projectName: string;
|
|
3
30
|
orgId: string;
|
|
@@ -5,7 +32,7 @@ export interface CreateAnswers {
|
|
|
5
32
|
platforms: string[];
|
|
6
33
|
modules: string[];
|
|
7
34
|
}
|
|
8
|
-
export declare function promptForProjectCreation(defaults?: Partial<CreateAnswers
|
|
35
|
+
export declare function promptForProjectCreation(defaults?: Partial<CreateAnswers>, options?: CreateOptions): Promise<CreateAnswers>;
|
|
9
36
|
/**
|
|
10
37
|
* Prompt for module-specific configuration after a module is selected.
|
|
11
38
|
* Returns a config object with `enabled: true` plus any module-specific fields.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/prompts.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElE,8CAA8C;AAC9C,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAyBpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE,CAGtE;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC,CAczD;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EACjC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC,CAoFxB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqC9F"}
|
package/dist/cli/ui/prompts.js
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
import * as p from '@clack/prompts';
|
|
2
|
-
export
|
|
2
|
+
export const PRESETS = [
|
|
3
|
+
{
|
|
4
|
+
id: 'minimal',
|
|
5
|
+
label: 'Minimal',
|
|
6
|
+
description: 'Core only — Clean Architecture skeleton, Riverpod, go_router',
|
|
7
|
+
modules: [],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: 'standard',
|
|
11
|
+
label: 'Standard',
|
|
12
|
+
description: 'Auth + API client + Theme — the typical production starter',
|
|
13
|
+
modules: ['auth', 'api', 'theme'],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: 'full',
|
|
17
|
+
label: 'Full Featured',
|
|
18
|
+
description: 'All 9 modules — kitchen sink for large projects',
|
|
19
|
+
modules: ['auth', 'api', 'theme', 'database', 'i18n', 'push', 'analytics', 'cicd', 'deep-linking'],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 'custom',
|
|
23
|
+
label: 'Custom',
|
|
24
|
+
description: 'Pick modules manually from the full list',
|
|
25
|
+
modules: [],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Returns the module IDs for the given preset.
|
|
30
|
+
* For 'custom', returns an empty array (caller shows the multiselect).
|
|
31
|
+
*/
|
|
32
|
+
export function getPresetModules(presetId) {
|
|
33
|
+
const preset = PRESETS.find((p) => p.id === presetId);
|
|
34
|
+
return preset?.modules ?? [];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Shows a preset selection prompt before the main project creation flow.
|
|
38
|
+
* Returns the chosen PresetId. Exits on cancel.
|
|
39
|
+
*/
|
|
40
|
+
export async function promptForPreset() {
|
|
41
|
+
const result = await p.select({
|
|
42
|
+
message: 'Choose a project preset',
|
|
43
|
+
options: PRESETS.map((preset) => ({
|
|
44
|
+
value: preset.id,
|
|
45
|
+
label: preset.label,
|
|
46
|
+
hint: preset.description,
|
|
47
|
+
})),
|
|
48
|
+
});
|
|
49
|
+
if (p.isCancel(result)) {
|
|
50
|
+
p.cancel('Project creation cancelled.');
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
export async function promptForProjectCreation(defaults, options) {
|
|
3
56
|
const answers = await p.group({
|
|
4
57
|
projectName: () => p.text({
|
|
5
58
|
message: 'Project name',
|
|
@@ -41,22 +94,24 @@ export async function promptForProjectCreation(defaults) {
|
|
|
41
94
|
initialValues: defaults?.platforms ?? ['android', 'ios'],
|
|
42
95
|
required: true,
|
|
43
96
|
}),
|
|
44
|
-
modules: () =>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
97
|
+
modules: () => options?.skipModules
|
|
98
|
+
? Promise.resolve((options.defaultModules ?? []))
|
|
99
|
+
: p.multiselect({
|
|
100
|
+
message: 'Select modules to include',
|
|
101
|
+
options: [
|
|
102
|
+
{ value: 'auth', label: 'Authentication', hint: 'Firebase / Supabase / Custom' },
|
|
103
|
+
{ value: 'api', label: 'API Client', hint: 'Dio + interceptors' },
|
|
104
|
+
{ value: 'theme', label: 'Theme', hint: 'Material 3 + dark mode' },
|
|
105
|
+
{ value: 'database', label: 'Database', hint: 'Drift / Hive / Isar' },
|
|
106
|
+
{ value: 'i18n', label: 'Internationalization', hint: 'ARB + Flutter localizations' },
|
|
107
|
+
{ value: 'push', label: 'Push Notifications', hint: 'Firebase / OneSignal' },
|
|
108
|
+
{ value: 'analytics', label: 'Analytics', hint: 'Service abstraction' },
|
|
109
|
+
{ value: 'cicd', label: 'CI/CD', hint: 'GitHub Actions / GitLab CI' },
|
|
110
|
+
{ value: 'deep-linking', label: 'Deep Linking', hint: 'App links + go_router' },
|
|
111
|
+
],
|
|
112
|
+
initialValues: defaults?.modules ?? [],
|
|
113
|
+
required: false,
|
|
114
|
+
}),
|
|
60
115
|
}, {
|
|
61
116
|
onCancel() {
|
|
62
117
|
p.cancel('Project creation cancelled.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/ui/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/ui/prompts.ts"],"names":[],"mappings":"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"}
|