specleap-framework 2.1.14 → 2.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "version": "1.0",
4
- "total_questions": 58,
4
+ "total_questions": 93,
5
5
  "checkpoint_interval": 10,
6
6
  "description": "Interactive questionnaire to generate CONTRATO.md in SpecLeap"
7
7
  },
@@ -18,7 +18,11 @@
18
18
  ],
19
19
  "required": true,
20
20
  "help": "nuevo = from scratch | existente = adopt a legacy project into SpecLeap",
21
- "example": "nuevo"
21
+ "example": "nuevo",
22
+ "modes": [
23
+ "mvp",
24
+ "serio"
25
+ ]
22
26
  },
23
27
  {
24
28
  "id": "project.path",
@@ -31,7 +35,11 @@
31
35
  "project.type": "nuevo"
32
36
  },
33
37
  "help": "Absolute or relative path to the legacy project directory",
34
- "example": "/Users/me/my-legacy-project"
38
+ "example": "/Users/me/my-legacy-project",
39
+ "modes": [
40
+ "mvp",
41
+ "serio"
42
+ ]
35
43
  },
36
44
  {
37
45
  "id": "project.name",
@@ -46,8 +54,12 @@
46
54
  },
47
55
  "required": true,
48
56
  "default": null,
49
- "help": "Examples: my-online-store, rest-users-api, admin-dashboard",
50
- "example": "my-project"
57
+ "help": "Examples: task-manager, inventory-app, crm-suite",
58
+ "example": "task-manager",
59
+ "modes": [
60
+ "mvp",
61
+ "serio"
62
+ ]
51
63
  },
52
64
  {
53
65
  "id": "project.display_name",
@@ -62,7 +74,11 @@
62
74
  "required": true,
63
75
  "default": null,
64
76
  "help": "The name users will see. Can have uppercase, spaces and special characters.",
65
- "example": "My Awesome Project"
77
+ "example": "Task Manager Pro",
78
+ "modes": [
79
+ "mvp",
80
+ "serio"
81
+ ]
66
82
  },
67
83
  {
68
84
  "id": "project.responsible",
@@ -73,7 +89,11 @@
73
89
  "required": true,
74
90
  "default": null,
75
91
  "help": "Name of the product owner, tech lead or main person in charge.",
76
- "example": "Jane Doe"
92
+ "example": "Alex Smith",
93
+ "modes": [
94
+ "mvp",
95
+ "serio"
96
+ ]
77
97
  },
78
98
  {
79
99
  "id": "identity.objective",
@@ -86,7 +106,11 @@
86
106
  },
87
107
  "required": true,
88
108
  "help": "Brief description of the main purpose.",
89
- "example": "E-commerce platform for selling artisan products with inventory management and online payments"
109
+ "example": "Web app to manage team tasks with assignments, priorities and time tracking",
110
+ "modes": [
111
+ "mvp",
112
+ "serio"
113
+ ]
90
114
  },
91
115
  {
92
116
  "id": "identity.problem_solved",
@@ -99,7 +123,11 @@
99
123
  },
100
124
  "required": true,
101
125
  "help": "The pain point or need your project addresses.",
102
- "example": "Artisans have no easy way to sell online without technical knowledge or high costs"
126
+ "example": "Teams waste time coordinating tasks across scattered tools (email, chat, spreadsheets) and lack clear visibility into progress",
127
+ "modes": [
128
+ "mvp",
129
+ "serio"
130
+ ]
103
131
  },
104
132
  {
105
133
  "id": "identity.target_audience",
@@ -115,7 +143,11 @@
115
143
  ],
116
144
  "required": true,
117
145
  "help": "personal = just you | team = your team | public = anyone | niche = specific audience",
118
- "example": "public"
146
+ "example": "public",
147
+ "modes": [
148
+ "mvp",
149
+ "serio"
150
+ ]
119
151
  },
120
152
  {
121
153
  "id": "identity.competitors",
@@ -125,8 +157,12 @@
125
157
  "type": "string",
126
158
  "required": false,
127
159
  "default": "",
128
- "help": "Similar products that inspire you.",
129
- "example": "Shopify, WooCommerce, Etsy"
160
+ "help": "If you know similar apps, I'll use them as a reference to suggest features and UX patterns. If none, type `none` or leave blank.",
161
+ "example": "Notion, Trello, Linear",
162
+ "modes": [
163
+ "mvp",
164
+ "serio"
165
+ ]
130
166
  },
131
167
  {
132
168
  "id": "stack.backend.framework",
@@ -144,7 +180,11 @@
144
180
  ],
145
181
  "required": true,
146
182
  "help": "Main server-side framework.",
147
- "example": "laravel"
183
+ "example": "laravel",
184
+ "modes": [
185
+ "mvp",
186
+ "serio"
187
+ ]
148
188
  },
149
189
  {
150
190
  "id": "stack.backend.language",
@@ -161,7 +201,11 @@
161
201
  "python": "Python 3.11",
162
202
  "django": "Python 3.11",
163
203
  "rails": "Ruby 3.2"
164
- }
204
+ },
205
+ "modes": [
206
+ "mvp",
207
+ "serio"
208
+ ]
165
209
  },
166
210
  {
167
211
  "id": "stack.backend.version",
@@ -178,7 +222,11 @@
178
222
  "python": "3.11",
179
223
  "django": "5.x",
180
224
  "rails": "7.x"
181
- }
225
+ },
226
+ "modes": [
227
+ "mvp",
228
+ "serio"
229
+ ]
182
230
  },
183
231
  {
184
232
  "id": "stack.database.engine",
@@ -195,7 +243,11 @@
195
243
  ],
196
244
  "required": true,
197
245
  "help": "Main database for the project.",
198
- "example": "postgresql"
246
+ "example": "postgresql",
247
+ "modes": [
248
+ "mvp",
249
+ "serio"
250
+ ]
199
251
  },
200
252
  {
201
253
  "id": "stack.database.version",
@@ -211,7 +263,11 @@
211
263
  "mysql": "8.0",
212
264
  "mongodb": "7.x",
213
265
  "sqlite": "3.x"
214
- }
266
+ },
267
+ "modes": [
268
+ "mvp",
269
+ "serio"
270
+ ]
215
271
  },
216
272
  {
217
273
  "id": "stack.frontend.framework",
@@ -229,7 +285,11 @@
229
285
  ],
230
286
  "required": true,
231
287
  "help": "ninguno = backend/API only without visual interface.",
232
- "example": "react"
288
+ "example": "react",
289
+ "modes": [
290
+ "mvp",
291
+ "serio"
292
+ ]
233
293
  },
234
294
  {
235
295
  "id": "stack.frontend.language",
@@ -246,7 +306,11 @@
246
306
  "stack.frontend.framework": "none"
247
307
  },
248
308
  "help": "TypeScript is recommended for medium/large projects.",
249
- "example": "typescript"
309
+ "example": "typescript",
310
+ "modes": [
311
+ "mvp",
312
+ "serio"
313
+ ]
250
314
  },
251
315
  {
252
316
  "id": "stack.frontend.build_tool",
@@ -265,7 +329,11 @@
265
329
  "stack.frontend.framework": "none"
266
330
  },
267
331
  "help": "Vite is the fastest and most modern (recommended).",
268
- "example": "vite"
332
+ "example": "vite",
333
+ "modes": [
334
+ "mvp",
335
+ "serio"
336
+ ]
269
337
  },
270
338
  {
271
339
  "id": "stack.frontend.ui_library",
@@ -286,7 +354,11 @@
286
354
  "stack.frontend.framework": "none"
287
355
  },
288
356
  "help": "Tailwind is utility-first and very popular today.",
289
- "example": "tailwind"
357
+ "example": "tailwind",
358
+ "modes": [
359
+ "mvp",
360
+ "serio"
361
+ ]
290
362
  },
291
363
  {
292
364
  "id": "stack.devops.hosting",
@@ -305,7 +377,11 @@
305
377
  ],
306
378
  "required": true,
307
379
  "help": "Hosting/cloud provider.",
308
- "example": "digitalocean"
380
+ "example": "digitalocean",
381
+ "modes": [
382
+ "mvp",
383
+ "serio"
384
+ ]
309
385
  },
310
386
  {
311
387
  "id": "stack.devops.ci_cd",
@@ -321,7 +397,11 @@
321
397
  ],
322
398
  "required": true,
323
399
  "help": "Continuous integration and automated deployment system.",
324
- "example": "github-actions"
400
+ "example": "github-actions",
401
+ "modes": [
402
+ "mvp",
403
+ "serio"
404
+ ]
325
405
  },
326
406
  {
327
407
  "id": "stack.devops.containers",
@@ -336,7 +416,11 @@
336
416
  ],
337
417
  "required": true,
338
418
  "help": "Docker for development, Kubernetes for scalable production.",
339
- "example": "docker"
419
+ "example": "docker",
420
+ "modes": [
421
+ "mvp",
422
+ "serio"
423
+ ]
340
424
  },
341
425
  {
342
426
  "id": "features.core",
@@ -351,7 +435,11 @@
351
435
  },
352
436
  "required": true,
353
437
  "help": "The ESSENTIAL features the MVP MUST have.",
354
- "example": "User authentication, Dashboard, Product management, Shopping cart, Checkout"
438
+ "example": "User authentication, Dashboard, CRUD for main entities, Search and filters, Notifications",
439
+ "modes": [
440
+ "mvp",
441
+ "serio"
442
+ ]
355
443
  },
356
444
  {
357
445
  "id": "features.secondary",
@@ -367,7 +455,11 @@
367
455
  "required": false,
368
456
  "default": [],
369
457
  "help": "Desirable but non-critical features for the MVP.",
370
- "example": "Live chat, Review system, Personalized recommendations"
458
+ "example": "CSV export, Dark mode, Keyboard shortcuts, External integrations",
459
+ "modes": [
460
+ "mvp",
461
+ "serio"
462
+ ]
371
463
  },
372
464
  {
373
465
  "id": "features.auth.enabled",
@@ -377,7 +469,11 @@
377
469
  "type": "boolean",
378
470
  "required": true,
379
471
  "help": "Should users be able to sign up and log in?",
380
- "example": "yes"
472
+ "example": "yes",
473
+ "modes": [
474
+ "mvp",
475
+ "serio"
476
+ ]
381
477
  },
382
478
  {
383
479
  "id": "features.auth.methods",
@@ -397,7 +493,11 @@
397
493
  },
398
494
  "required": false,
399
495
  "help": "email_password is the minimum. OAuth adds social login.",
400
- "example": "email_password, oauth_google"
496
+ "example": "email_password, oauth_google",
497
+ "modes": [
498
+ "mvp",
499
+ "serio"
500
+ ]
401
501
  },
402
502
  {
403
503
  "id": "features.auth.two_factor",
@@ -411,7 +511,11 @@
411
511
  "required": false,
412
512
  "default": false,
413
513
  "help": "Extra security via SMS code or authenticator app.",
414
- "example": "no"
514
+ "example": "no",
515
+ "modes": [
516
+ "mvp",
517
+ "serio"
518
+ ]
415
519
  },
416
520
  {
417
521
  "id": "users.registration",
@@ -421,7 +525,11 @@
421
525
  "type": "boolean",
422
526
  "required": true,
423
527
  "help": "If false, users must be created manually by an admin.",
424
- "example": "yes"
528
+ "example": "yes",
529
+ "modes": [
530
+ "mvp",
531
+ "serio"
532
+ ]
425
533
  },
426
534
  {
427
535
  "id": "users.roles",
@@ -436,7 +544,11 @@
436
544
  },
437
545
  "required": true,
438
546
  "help": "Types of users with different permissions.",
439
- "example": "admin, user, guest"
547
+ "example": "admin, user, guest",
548
+ "modes": [
549
+ "mvp",
550
+ "serio"
551
+ ]
440
552
  },
441
553
  {
442
554
  "id": "features.admin_panel.enabled",
@@ -446,7 +558,11 @@
446
558
  "type": "boolean",
447
559
  "required": true,
448
560
  "help": "Interface to manage users, content and configuration.",
449
- "example": "yes"
561
+ "example": "yes",
562
+ "modes": [
563
+ "mvp",
564
+ "serio"
565
+ ]
450
566
  },
451
567
  {
452
568
  "id": "features.admin_panel.level",
@@ -464,7 +580,11 @@
464
580
  },
465
581
  "required": false,
466
582
  "help": "completo = full CRUD | básico = view-only | ninguno = no panel",
467
- "example": "completo"
583
+ "example": "completo",
584
+ "modes": [
585
+ "mvp",
586
+ "serio"
587
+ ]
468
588
  },
469
589
  {
470
590
  "id": "features.file_uploads.enabled",
@@ -474,7 +594,11 @@
474
594
  "type": "boolean",
475
595
  "required": true,
476
596
  "help": "Can users upload files?",
477
- "example": "yes"
597
+ "example": "yes",
598
+ "modes": [
599
+ "mvp",
600
+ "serio"
601
+ ]
478
602
  },
479
603
  {
480
604
  "id": "features.file_uploads.storage",
@@ -493,7 +617,11 @@
493
617
  },
494
618
  "required": false,
495
619
  "help": "local = on the server | s3/cloudinary = cloud storage",
496
- "example": "s3"
620
+ "example": "s3",
621
+ "modes": [
622
+ "mvp",
623
+ "serio"
624
+ ]
497
625
  },
498
626
  {
499
627
  "id": "features.payments.enabled",
@@ -503,7 +631,11 @@
503
631
  "type": "boolean",
504
632
  "required": true,
505
633
  "help": "Will users pay inside the platform?",
506
- "example": "yes"
634
+ "example": "yes",
635
+ "modes": [
636
+ "mvp",
637
+ "serio"
638
+ ]
507
639
  },
508
640
  {
509
641
  "id": "features.payments.providers",
@@ -523,7 +655,11 @@
523
655
  },
524
656
  "required": false,
525
657
  "help": "Stripe is the most widely used and complete.",
526
- "example": "stripe, paypal"
658
+ "example": "stripe, paypal",
659
+ "modes": [
660
+ "mvp",
661
+ "serio"
662
+ ]
527
663
  },
528
664
  {
529
665
  "id": "features.notifications.email",
@@ -533,7 +669,11 @@
533
669
  "type": "boolean",
534
670
  "required": true,
535
671
  "help": "Automated emails (welcome, password reset, etc.).",
536
- "example": "yes"
672
+ "example": "yes",
673
+ "modes": [
674
+ "mvp",
675
+ "serio"
676
+ ]
537
677
  },
538
678
  {
539
679
  "id": "features.notifications.push",
@@ -543,7 +683,11 @@
543
683
  "type": "boolean",
544
684
  "required": true,
545
685
  "help": "Browser or mobile app notifications.",
546
- "example": "no"
686
+ "example": "no",
687
+ "modes": [
688
+ "mvp",
689
+ "serio"
690
+ ]
547
691
  },
548
692
  {
549
693
  "id": "features.notifications.in_app",
@@ -553,7 +697,11 @@
553
697
  "type": "boolean",
554
698
  "required": true,
555
699
  "help": "Notifications inside the interface (bell icon with counter).",
556
- "example": "yes"
700
+ "example": "yes",
701
+ "modes": [
702
+ "mvp",
703
+ "serio"
704
+ ]
557
705
  },
558
706
  {
559
707
  "id": "design.visual_style",
@@ -570,7 +718,11 @@
570
718
  ],
571
719
  "required": true,
572
720
  "help": "Overall aesthetic of the interface.",
573
- "example": "modern"
721
+ "example": "modern",
722
+ "modes": [
723
+ "mvp",
724
+ "serio"
725
+ ]
574
726
  },
575
727
  {
576
728
  "id": "design.primary_color",
@@ -584,7 +736,11 @@
584
736
  "required": false,
585
737
  "default": "#3B82F6",
586
738
  "help": "Main brand color (buttons, links, etc.).",
587
- "example": "#3B82F6"
739
+ "example": "#3B82F6",
740
+ "modes": [
741
+ "mvp",
742
+ "serio"
743
+ ]
588
744
  },
589
745
  {
590
746
  "id": "design.dark_mode",
@@ -594,7 +750,11 @@
594
750
  "type": "boolean",
595
751
  "required": true,
596
752
  "help": "Alternative dark theme.",
597
- "example": "no"
753
+ "example": "no",
754
+ "modes": [
755
+ "mvp",
756
+ "serio"
757
+ ]
598
758
  },
599
759
  {
600
760
  "id": "design.responsive",
@@ -604,7 +764,11 @@
604
764
  "type": "boolean",
605
765
  "required": true,
606
766
  "help": "Adapts to all screen sizes.",
607
- "example": "yes"
767
+ "example": "yes",
768
+ "modes": [
769
+ "mvp",
770
+ "serio"
771
+ ]
608
772
  },
609
773
  {
610
774
  "id": "architecture.pattern",
@@ -621,7 +785,11 @@
621
785
  ],
622
786
  "required": true,
623
787
  "help": "mvc = Model-View-Controller (Laravel default) | ddd = Domain-Driven Design",
624
- "example": "mvc"
788
+ "example": "mvc",
789
+ "modes": [
790
+ "mvp",
791
+ "serio"
792
+ ]
625
793
  },
626
794
  {
627
795
  "id": "architecture.separation",
@@ -636,7 +804,11 @@
636
804
  ],
637
805
  "required": true,
638
806
  "help": "monolith = all together | separated = API + frontend separated | microservices = independent services",
639
- "example": "separated"
807
+ "example": "separated",
808
+ "modes": [
809
+ "mvp",
810
+ "serio"
811
+ ]
640
812
  },
641
813
  {
642
814
  "id": "deployment.ssl",
@@ -646,7 +818,11 @@
646
818
  "type": "boolean",
647
819
  "required": true,
648
820
  "help": "Always recommended for production.",
649
- "example": "yes"
821
+ "example": "yes",
822
+ "modes": [
823
+ "mvp",
824
+ "serio"
825
+ ]
650
826
  },
651
827
  {
652
828
  "id": "deployment.custom_domain",
@@ -657,7 +833,11 @@
657
833
  "required": false,
658
834
  "default": "",
659
835
  "help": "Example: www.mystore.com",
660
- "example": "www.myproject.com"
836
+ "example": "www.myproject.com",
837
+ "modes": [
838
+ "mvp",
839
+ "serio"
840
+ ]
661
841
  },
662
842
  {
663
843
  "id": "deployment.environments",
@@ -672,7 +852,11 @@
672
852
  },
673
853
  "required": true,
674
854
  "help": "Typically: development, staging, production",
675
- "example": "development, staging, production"
855
+ "example": "development, staging, production",
856
+ "modes": [
857
+ "mvp",
858
+ "serio"
859
+ ]
676
860
  },
677
861
  {
678
862
  "id": "security.level",
@@ -687,7 +871,11 @@
687
871
  ],
688
872
  "required": true,
689
873
  "help": "básico = standard | medio = + auditing | alto = + end-to-end encryption",
690
- "example": "medio"
874
+ "example": "medio",
875
+ "modes": [
876
+ "mvp",
877
+ "serio"
878
+ ]
691
879
  },
692
880
  {
693
881
  "id": "security.gdpr_compliant",
@@ -697,7 +885,11 @@
697
885
  "type": "boolean",
698
886
  "required": true,
699
887
  "help": "Required if you have users in Europe.",
700
- "example": "yes"
888
+ "example": "yes",
889
+ "modes": [
890
+ "mvp",
891
+ "serio"
892
+ ]
701
893
  },
702
894
  {
703
895
  "id": "security.sensitive_data",
@@ -707,7 +899,11 @@
707
899
  "type": "boolean",
708
900
  "required": true,
709
901
  "help": "Requires extra security and regulatory compliance.",
710
- "example": "no"
902
+ "example": "no",
903
+ "modes": [
904
+ "mvp",
905
+ "serio"
906
+ ]
711
907
  },
712
908
  {
713
909
  "id": "performance.load_time_target",
@@ -723,7 +919,11 @@
723
919
  ],
724
920
  "required": true,
725
921
  "help": "Initial load time of the main page.",
726
- "example": "< 2s"
922
+ "example": "< 2s",
923
+ "modes": [
924
+ "mvp",
925
+ "serio"
926
+ ]
727
927
  },
728
928
  {
729
929
  "id": "performance.api_response_target",
@@ -739,7 +939,11 @@
739
939
  ],
740
940
  "required": true,
741
941
  "help": "Response time of critical endpoints.",
742
- "example": "< 200ms"
942
+ "example": "< 200ms",
943
+ "modes": [
944
+ "mvp",
945
+ "serio"
946
+ ]
743
947
  },
744
948
  {
745
949
  "id": "performance.concurrent_users",
@@ -753,7 +957,11 @@
753
957
  },
754
958
  "required": true,
755
959
  "help": "How many simultaneous users you expect at launch.",
756
- "example": "100"
960
+ "example": "100",
961
+ "modes": [
962
+ "mvp",
963
+ "serio"
964
+ ]
757
965
  },
758
966
  {
759
967
  "id": "testing.unit",
@@ -763,7 +971,11 @@
763
971
  "type": "boolean",
764
972
  "required": true,
765
973
  "help": "Tests for individual functions and classes.",
766
- "example": "yes"
974
+ "example": "yes",
975
+ "modes": [
976
+ "mvp",
977
+ "serio"
978
+ ]
767
979
  },
768
980
  {
769
981
  "id": "testing.integration",
@@ -773,7 +985,11 @@
773
985
  "type": "boolean",
774
986
  "required": true,
775
987
  "help": "Tests for interaction between modules/APIs.",
776
- "example": "yes"
988
+ "example": "yes",
989
+ "modes": [
990
+ "mvp",
991
+ "serio"
992
+ ]
777
993
  },
778
994
  {
779
995
  "id": "testing.e2e",
@@ -783,7 +999,11 @@
783
999
  "type": "boolean",
784
1000
  "required": true,
785
1001
  "help": "Tests for full user flows (Playwright, Cypress).",
786
- "example": "no"
1002
+ "example": "no",
1003
+ "modes": [
1004
+ "mvp",
1005
+ "serio"
1006
+ ]
787
1007
  },
788
1008
  {
789
1009
  "id": "testing.coverage_target",
@@ -798,7 +1018,11 @@
798
1018
  "required": false,
799
1019
  "default": 0,
800
1020
  "help": "Percentage of code covered by tests. 80% is a good target.",
801
- "example": "80"
1021
+ "example": "80",
1022
+ "modes": [
1023
+ "mvp",
1024
+ "serio"
1025
+ ]
802
1026
  },
803
1027
  {
804
1028
  "id": "constraints.time_limit",
@@ -809,7 +1033,11 @@
809
1033
  "required": false,
810
1034
  "default": "",
811
1035
  "help": "Examples: 2 weeks, 3 months, none",
812
- "example": "3 months"
1036
+ "example": "3 months",
1037
+ "modes": [
1038
+ "mvp",
1039
+ "serio"
1040
+ ]
813
1041
  },
814
1042
  {
815
1043
  "id": "constraints.out_of_scope",
@@ -825,7 +1053,589 @@
825
1053
  "required": false,
826
1054
  "default": [],
827
1055
  "help": "Features explicitly excluded from the project.",
828
- "example": "Social media integration, Native mobile app, Multi-language support"
1056
+ "example": "Social media integration, Native mobile app, Multi-language support",
1057
+ "modes": [
1058
+ "mvp",
1059
+ "serio"
1060
+ ]
1061
+ },
1062
+ {
1063
+ "id": "governance.product_owner",
1064
+ "section": "Governance",
1065
+ "text": "Who is the Product Owner?",
1066
+ "type": "string",
1067
+ "required": true,
1068
+ "modes": [
1069
+ "serio"
1070
+ ],
1071
+ "help": "Person responsible for backlog, priorities and product vision. Provide name and email.",
1072
+ "example": "Maria Garcia - maria@company.com",
1073
+ "number": 59
1074
+ },
1075
+ {
1076
+ "id": "governance.tech_lead",
1077
+ "section": "Governance",
1078
+ "text": "Who is the Tech Lead?",
1079
+ "type": "string",
1080
+ "required": true,
1081
+ "modes": [
1082
+ "serio"
1083
+ ],
1084
+ "help": "Person responsible for technical decisions, architecture and code review.",
1085
+ "example": "Alex Smith - alex@company.com",
1086
+ "number": 60
1087
+ },
1088
+ {
1089
+ "id": "governance.release_approver",
1090
+ "section": "Governance",
1091
+ "text": "Who approves a production release?",
1092
+ "type": "string",
1093
+ "required": true,
1094
+ "modes": [
1095
+ "serio"
1096
+ ],
1097
+ "help": "Roles or names with authority to approve production deploys.",
1098
+ "example": "Tech Lead + Product Owner",
1099
+ "number": 61
1100
+ },
1101
+ {
1102
+ "id": "governance.security_approver",
1103
+ "section": "Governance",
1104
+ "text": "Mandatory Security/InfoSec approval? If yes, who?",
1105
+ "type": "string",
1106
+ "required": false,
1107
+ "modes": [
1108
+ "serio"
1109
+ ],
1110
+ "help": "If your org requires security review for releases or sensitive features, name the role/team. Otherwise type 'none'.",
1111
+ "example": "InfoSec Team - security@company.com",
1112
+ "default": "ninguno",
1113
+ "number": 62
1114
+ },
1115
+ {
1116
+ "id": "governance.legal_approver",
1117
+ "section": "Governance",
1118
+ "text": "Mandatory Legal/Compliance approval? If yes, who?",
1119
+ "type": "string",
1120
+ "required": false,
1121
+ "modes": [
1122
+ "serio"
1123
+ ],
1124
+ "help": "Useful if you handle personal data, contracts or specific regulations. Otherwise type 'none'.",
1125
+ "example": "Legal Dept - legal@company.com",
1126
+ "default": "ninguno",
1127
+ "number": 63
1128
+ },
1129
+ {
1130
+ "id": "departments.list",
1131
+ "section": "Departments Involved",
1132
+ "text": "Departments involved (comma-separated)",
1133
+ "type": "multiselect",
1134
+ "required": true,
1135
+ "modes": [
1136
+ "serio"
1137
+ ],
1138
+ "help": "Functional areas that use, feed or depend on the product.",
1139
+ "example": "Sales, Support, Operations",
1140
+ "options": [
1141
+ "Sales",
1142
+ "Marketing",
1143
+ "HR",
1144
+ "Accounting",
1145
+ "IT",
1146
+ "Support",
1147
+ "Operations",
1148
+ "Product",
1149
+ "Design",
1150
+ "Legal",
1151
+ "other"
1152
+ ],
1153
+ "number": 64
1154
+ },
1155
+ {
1156
+ "id": "departments.key_contacts",
1157
+ "section": "Departments Involved",
1158
+ "text": "Key contacts per department",
1159
+ "type": "text",
1160
+ "required": false,
1161
+ "modes": [
1162
+ "serio"
1163
+ ],
1164
+ "help": "One line per department with person and role. Helps identify whom to consult for decisions in each area.",
1165
+ "example": "Sales: Anna Lee (Sales Ops); Support: John Roe (Lead)",
1166
+ "default": "",
1167
+ "number": 65
1168
+ },
1169
+ {
1170
+ "id": "departments.dependencies",
1171
+ "section": "Departments Involved",
1172
+ "text": "Critical inter-department dependencies (optional)",
1173
+ "type": "text",
1174
+ "required": false,
1175
+ "modes": [
1176
+ "serio"
1177
+ ],
1178
+ "help": "Workflows where one team's progress depends on another. Useful to anticipate blockers.",
1179
+ "example": "Marketing needs the Sales API for campaign dashboards",
1180
+ "default": "",
1181
+ "number": 66
1182
+ },
1183
+ {
1184
+ "id": "integrations.sso",
1185
+ "section": "Enterprise Integrations",
1186
+ "text": "SSO/SAML/LDAP? (select all that apply)",
1187
+ "type": "multiselect",
1188
+ "required": true,
1189
+ "modes": [
1190
+ "serio"
1191
+ ],
1192
+ "help": "Corporate identity systems the product must support for login.",
1193
+ "example": "Google Workspace, Okta",
1194
+ "options": [
1195
+ "none",
1196
+ "Google Workspace",
1197
+ "Microsoft AD/Entra",
1198
+ "Okta",
1199
+ "Auth0",
1200
+ "Generic SAML",
1201
+ "LDAP",
1202
+ "other"
1203
+ ],
1204
+ "number": 67
1205
+ },
1206
+ {
1207
+ "id": "integrations.erp",
1208
+ "section": "Enterprise Integrations",
1209
+ "text": "ERP integration?",
1210
+ "type": "string",
1211
+ "required": false,
1212
+ "modes": [
1213
+ "serio"
1214
+ ],
1215
+ "help": "Enterprise resource planning system to sync data with. Type 'none' if not applicable.",
1216
+ "example": "SAP S/4HANA",
1217
+ "default": "ninguno",
1218
+ "number": 68
1219
+ },
1220
+ {
1221
+ "id": "integrations.crm",
1222
+ "section": "Enterprise Integrations",
1223
+ "text": "CRM integration?",
1224
+ "type": "string",
1225
+ "required": false,
1226
+ "modes": [
1227
+ "serio"
1228
+ ],
1229
+ "help": "CRM to sync contacts, opportunities, etc. Type 'none' if not applicable.",
1230
+ "example": "HubSpot",
1231
+ "default": "ninguno",
1232
+ "number": 69
1233
+ },
1234
+ {
1235
+ "id": "integrations.bi",
1236
+ "section": "Enterprise Integrations",
1237
+ "text": "BI / Data Warehouse integration?",
1238
+ "type": "string",
1239
+ "required": false,
1240
+ "modes": [
1241
+ "serio"
1242
+ ],
1243
+ "help": "Analytics platform or data warehouse for reporting. Type 'none' if not applicable.",
1244
+ "example": "Snowflake + Tableau",
1245
+ "default": "ninguno",
1246
+ "number": 70
1247
+ },
1248
+ {
1249
+ "id": "integrations.payroll",
1250
+ "section": "Enterprise Integrations",
1251
+ "text": "Payroll / HR systems integration? (optional)",
1252
+ "type": "string",
1253
+ "required": false,
1254
+ "modes": [
1255
+ "serio"
1256
+ ],
1257
+ "help": "Only applies if the product interacts with payroll or HR. Type 'none' if not applicable.",
1258
+ "example": "Workday",
1259
+ "default": "ninguno",
1260
+ "number": 71
1261
+ },
1262
+ {
1263
+ "id": "sla.uptime_target",
1264
+ "section": "SLAs & Resilience",
1265
+ "text": "Uptime target",
1266
+ "type": "select",
1267
+ "required": true,
1268
+ "modes": [
1269
+ "serio"
1270
+ ],
1271
+ "help": "Minimum committed availability. More nines = higher cost and redundancy investment.",
1272
+ "example": "99.9%",
1273
+ "options": [
1274
+ "99.0%",
1275
+ "99.5%",
1276
+ "99.9%",
1277
+ "99.95%",
1278
+ "99.99%"
1279
+ ],
1280
+ "number": 72
1281
+ },
1282
+ {
1283
+ "id": "sla.rto",
1284
+ "section": "SLAs & Resilience",
1285
+ "text": "RTO (Recovery Time Objective)",
1286
+ "type": "select",
1287
+ "required": true,
1288
+ "modes": [
1289
+ "serio"
1290
+ ],
1291
+ "help": "Maximum acceptable time to restore service after a major incident.",
1292
+ "example": "< 4h",
1293
+ "options": [
1294
+ "< 1h",
1295
+ "< 4h",
1296
+ "< 24h",
1297
+ "< 72h"
1298
+ ],
1299
+ "number": 73
1300
+ },
1301
+ {
1302
+ "id": "sla.rpo",
1303
+ "section": "SLAs & Resilience",
1304
+ "text": "RPO (Recovery Point Objective)",
1305
+ "type": "select",
1306
+ "required": true,
1307
+ "modes": [
1308
+ "serio"
1309
+ ],
1310
+ "help": "Maximum amount of data you can afford to lose in an incident.",
1311
+ "example": "< 1h",
1312
+ "options": [
1313
+ "< 15min",
1314
+ "< 1h",
1315
+ "< 24h",
1316
+ "< 7d"
1317
+ ],
1318
+ "number": 74
1319
+ },
1320
+ {
1321
+ "id": "sla.disaster_recovery",
1322
+ "section": "SLAs & Resilience",
1323
+ "text": "Disaster Recovery strategy",
1324
+ "type": "select",
1325
+ "required": true,
1326
+ "modes": [
1327
+ "serio"
1328
+ ],
1329
+ "help": "How you recover if the primary region/provider goes down. Cost and complexity grow to the right.",
1330
+ "example": "hot-standby",
1331
+ "options": [
1332
+ "none",
1333
+ "backup-restore",
1334
+ "hot-standby",
1335
+ "multi-region active-passive",
1336
+ "multi-region active-active"
1337
+ ],
1338
+ "number": 75
1339
+ },
1340
+ {
1341
+ "id": "sla.on_call",
1342
+ "section": "SLAs & Resilience",
1343
+ "text": "24/7 on-call team? If yes, what tooling?",
1344
+ "type": "string",
1345
+ "required": false,
1346
+ "modes": [
1347
+ "serio"
1348
+ ],
1349
+ "help": "If you have on-call rotation, specify the tool (PagerDuty, Opsgenie, etc.). Otherwise type 'no'.",
1350
+ "example": "PagerDuty",
1351
+ "default": "no",
1352
+ "number": 76
1353
+ },
1354
+ {
1355
+ "id": "compliance.frameworks",
1356
+ "section": "Compliance",
1357
+ "text": "Applicable compliance frameworks (select all that apply)",
1358
+ "type": "multiselect",
1359
+ "required": true,
1360
+ "modes": [
1361
+ "serio"
1362
+ ],
1363
+ "help": "Regulatory frameworks the product must comply with. Determines controls, audits and documentation required.",
1364
+ "example": "GDPR, SOC2",
1365
+ "options": [
1366
+ "none",
1367
+ "GDPR",
1368
+ "HIPAA",
1369
+ "PCI-DSS",
1370
+ "SOC2",
1371
+ "ISO27001",
1372
+ "FedRAMP",
1373
+ "other"
1374
+ ],
1375
+ "number": 77
1376
+ },
1377
+ {
1378
+ "id": "compliance.dpo",
1379
+ "section": "Compliance",
1380
+ "text": "DPO designated? (required if GDPR applies)",
1381
+ "type": "string",
1382
+ "required": false,
1383
+ "modes": [
1384
+ "serio"
1385
+ ],
1386
+ "help": "Data Protection Officer. Mandatory under GDPR for large-scale processing. Provide name and email, or 'none'.",
1387
+ "example": "Sam Taylor - dpo@company.com",
1388
+ "default": "ninguno",
1389
+ "number": 78
1390
+ },
1391
+ {
1392
+ "id": "compliance.audit_log_retention",
1393
+ "section": "Compliance",
1394
+ "text": "Audit log retention",
1395
+ "type": "select",
1396
+ "required": true,
1397
+ "modes": [
1398
+ "serio"
1399
+ ],
1400
+ "help": "Minimum period you retain activity logs for audit. Longer = higher storage cost.",
1401
+ "example": "1 year",
1402
+ "options": [
1403
+ "30 days",
1404
+ "90 days",
1405
+ "1 year",
1406
+ "7 years",
1407
+ "indefinite"
1408
+ ],
1409
+ "number": 79
1410
+ },
1411
+ {
1412
+ "id": "compliance.data_residency",
1413
+ "section": "Compliance",
1414
+ "text": "Data residency",
1415
+ "type": "select",
1416
+ "required": true,
1417
+ "modes": [
1418
+ "serio"
1419
+ ],
1420
+ "help": "Where data can be stored. GDPR and other frameworks may impose geographic restrictions.",
1421
+ "example": "EU only",
1422
+ "options": [
1423
+ "any",
1424
+ "EU only",
1425
+ "US only",
1426
+ "per-customer multi-region"
1427
+ ],
1428
+ "number": 80
1429
+ },
1430
+ {
1431
+ "id": "roadmap.phases",
1432
+ "section": "Roadmap by Phases",
1433
+ "text": "Project phases",
1434
+ "type": "text",
1435
+ "required": true,
1436
+ "modes": [
1437
+ "serio"
1438
+ ],
1439
+ "help": "List phases with estimated duration and main deliverables for each.",
1440
+ "example": "Phase 1 (3mo): MVP with auth, dashboard, core CRUD. Phase 2 (2mo): SSO + CRM integrations. Phase 3 (2mo): multi-tenant + i18n.",
1441
+ "number": 81
1442
+ },
1443
+ {
1444
+ "id": "roadmap.milestones",
1445
+ "section": "Roadmap by Phases",
1446
+ "text": "Critical milestones with dates",
1447
+ "type": "text",
1448
+ "required": true,
1449
+ "modes": [
1450
+ "serio"
1451
+ ],
1452
+ "help": "Key dates: launches, stakeholder demos, audits, legal compliance dates, etc.",
1453
+ "example": "2026-06-30: investor demo. 2026-09-15: closed beta launch. 2026-12-01: public GA.",
1454
+ "number": 82
1455
+ },
1456
+ {
1457
+ "id": "roadmap.cross_team_deps",
1458
+ "section": "Roadmap by Phases",
1459
+ "text": "Cross-team dependencies (optional)",
1460
+ "type": "text",
1461
+ "required": false,
1462
+ "modes": [
1463
+ "serio"
1464
+ ],
1465
+ "help": "Blockers depending on other teams: pending external APIs, hardware, data, legal approvals, etc.",
1466
+ "example": "Data team prepares scoring model before Phase 2. Legal approves terms before beta.",
1467
+ "default": "",
1468
+ "number": 83
1469
+ },
1470
+ {
1471
+ "id": "release.feature_flags",
1472
+ "section": "Release Processes",
1473
+ "text": "Do you use feature flags? If yes, what tooling?",
1474
+ "type": "string",
1475
+ "required": false,
1476
+ "modes": [
1477
+ "serio"
1478
+ ],
1479
+ "help": "Feature flags let you deploy disabled code and enable it selectively. Specify tooling (LaunchDarkly, Unleash, in-house) or 'no'.",
1480
+ "example": "LaunchDarkly",
1481
+ "default": "no",
1482
+ "number": 84
1483
+ },
1484
+ {
1485
+ "id": "release.deploy_strategy",
1486
+ "section": "Release Processes",
1487
+ "text": "Deploy strategy",
1488
+ "type": "select",
1489
+ "required": true,
1490
+ "modes": [
1491
+ "serio"
1492
+ ],
1493
+ "help": "standard = brief downtime | blue-green = zero downtime, double infra | canary = gradual user % | rolling = node by node",
1494
+ "example": "blue-green",
1495
+ "options": [
1496
+ "standard",
1497
+ "blue-green",
1498
+ "canary",
1499
+ "rolling"
1500
+ ],
1501
+ "number": 85
1502
+ },
1503
+ {
1504
+ "id": "release.rollback_strategy",
1505
+ "section": "Release Processes",
1506
+ "text": "Automated rollback plan?",
1507
+ "type": "string",
1508
+ "required": true,
1509
+ "modes": [
1510
+ "serio"
1511
+ ],
1512
+ "help": "How you revert a faulty release: auto-rollback on metric, manual button, redeploy previous version, etc.",
1513
+ "example": "auto-rollback if error rate > 1% for 5min",
1514
+ "number": 86
1515
+ },
1516
+ {
1517
+ "id": "observability.apm_logs_metrics",
1518
+ "section": "Observability",
1519
+ "text": "Observability stack (APM, logs, metrics)",
1520
+ "type": "multiselect",
1521
+ "required": true,
1522
+ "modes": [
1523
+ "serio"
1524
+ ],
1525
+ "help": "Tools used to monitor the system in production.",
1526
+ "example": "Datadog, Sentry",
1527
+ "options": [
1528
+ "Datadog",
1529
+ "New Relic",
1530
+ "Sentry",
1531
+ "Grafana",
1532
+ "ELK/OpenSearch",
1533
+ "Splunk",
1534
+ "CloudWatch",
1535
+ "none",
1536
+ "other"
1537
+ ],
1538
+ "number": 87
1539
+ },
1540
+ {
1541
+ "id": "observability.alerting",
1542
+ "section": "Observability",
1543
+ "text": "Alerting system",
1544
+ "type": "string",
1545
+ "required": true,
1546
+ "modes": [
1547
+ "serio"
1548
+ ],
1549
+ "help": "Where critical alerts are sent: PagerDuty, Opsgenie, Slack, email, etc.",
1550
+ "example": "PagerDuty + Slack #incidents",
1551
+ "number": 88
1552
+ },
1553
+ {
1554
+ "id": "observability.dashboards",
1555
+ "section": "Observability",
1556
+ "text": "Public dashboards for stakeholders?",
1557
+ "type": "boolean",
1558
+ "required": true,
1559
+ "modes": [
1560
+ "serio"
1561
+ ],
1562
+ "help": "Whether non-technical stakeholders (business, execs) will view operational metrics.",
1563
+ "example": "yes",
1564
+ "number": 89
1565
+ },
1566
+ {
1567
+ "id": "multi.languages",
1568
+ "section": "Multi-X (language, tenant, region)",
1569
+ "text": "Supported languages (comma-separated)",
1570
+ "type": "array",
1571
+ "required": true,
1572
+ "modes": [
1573
+ "serio"
1574
+ ],
1575
+ "help": "ISO codes of languages the product must support. If only one, indicate just that.",
1576
+ "example": "en, es, fr",
1577
+ "validation": {
1578
+ "min_items": 1,
1579
+ "max_items": 20,
1580
+ "separator": ","
1581
+ },
1582
+ "number": 90
1583
+ },
1584
+ {
1585
+ "id": "multi.tenant",
1586
+ "section": "Multi-X (language, tenant, region)",
1587
+ "text": "Multi-tenant?",
1588
+ "type": "select",
1589
+ "required": true,
1590
+ "modes": [
1591
+ "serio"
1592
+ ],
1593
+ "help": "Determines how data of different customers is isolated. Impacts architecture, deployment and compliance.",
1594
+ "example": "single-DB shared (tenant_id)",
1595
+ "options": [
1596
+ "no (single-tenant)",
1597
+ "single-DB shared (tenant_id)",
1598
+ "single-DB per tenant",
1599
+ "multi-DB (DB per tenant)"
1600
+ ],
1601
+ "number": 91
1602
+ },
1603
+ {
1604
+ "id": "multi.regions",
1605
+ "section": "Multi-X (language, tenant, region)",
1606
+ "text": "Multi-region?",
1607
+ "type": "select",
1608
+ "required": true,
1609
+ "modes": [
1610
+ "serio"
1611
+ ],
1612
+ "help": "Whether the system runs in one region or several. Multi-region improves latency and resilience but complicates replication.",
1613
+ "example": "single region",
1614
+ "options": [
1615
+ "single region",
1616
+ "multi-region active-passive",
1617
+ "multi-region active-active"
1618
+ ],
1619
+ "number": 92
1620
+ },
1621
+ {
1622
+ "id": "multi.i18n_strategy",
1623
+ "section": "Multi-X (language, tenant, region)",
1624
+ "text": "i18n strategy",
1625
+ "type": "select",
1626
+ "required": true,
1627
+ "modes": [
1628
+ "serio"
1629
+ ],
1630
+ "help": "How translations are stored and served. Each strategy has tradeoffs in workflow and performance.",
1631
+ "example": "JSON files per language",
1632
+ "options": [
1633
+ "JSON files per language",
1634
+ "gettext / PO files",
1635
+ "database",
1636
+ "external service (Phrase, Lokalise)"
1637
+ ],
1638
+ "number": 93
829
1639
  }
830
1640
  ]
831
1641
  }