specifian 0.1.0-beta.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.
Files changed (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +314 -0
  3. package/dist/chunk-774NFJLC.js +267 -0
  4. package/dist/chunk-JY5QLNZ4.js +127 -0
  5. package/dist/cli/index.js +1757 -0
  6. package/dist/client/assets/Assistant-Bold-gm-uSS1B.woff2 +0 -0
  7. package/dist/client/assets/Assistant-Medium-DrcxCXg3.woff2 +0 -0
  8. package/dist/client/assets/Assistant-Regular-DVxZuzxb.woff2 +0 -0
  9. package/dist/client/assets/Assistant-SemiBold-SCI4bEL9.woff2 +0 -0
  10. package/dist/client/assets/ar-SA-G6X2FPQ2-Dd0X68bc.js +10 -0
  11. package/dist/client/assets/arc-OeTCl9Oy.js +1 -0
  12. package/dist/client/assets/architecture-7EHR7CIX-CaxcM-P5.js +1 -0
  13. package/dist/client/assets/architectureDiagram-3BPJPVTR-BIjzr_cP.js +36 -0
  14. package/dist/client/assets/array-BifhSqXX.js +1 -0
  15. package/dist/client/assets/az-AZ-76LH7QW2-CikYmJ_f.js +1 -0
  16. package/dist/client/assets/bg-BG-XCXSNQG7-3zBzA4I3.js +5 -0
  17. package/dist/client/assets/blockDiagram-GPEHLZMM-K767VD5J.js +132 -0
  18. package/dist/client/assets/bn-BD-2XOGV67Q-F99bvhop.js +5 -0
  19. package/dist/client/assets/c4Diagram-AAUBKEIU-Su5ecvGw.js +10 -0
  20. package/dist/client/assets/ca-ES-6MX7JW3Y-tT1B4cci.js +8 -0
  21. package/dist/client/assets/channel-B5WJ2uRW.js +1 -0
  22. package/dist/client/assets/chunk-2J33WTMH-CRsWeOs1.js +1 -0
  23. package/dist/client/assets/chunk-3OPIFGDE-Ba3bqwD7.js +62 -0
  24. package/dist/client/assets/chunk-4BX2VUAB-G5rryZd4.js +1 -0
  25. package/dist/client/assets/chunk-55IACEB6-pY-b07PU.js +1 -0
  26. package/dist/client/assets/chunk-5ZQYHXKU-txrrIoic.js +2 -0
  27. package/dist/client/assets/chunk-6U3AYISY-C6-Mtja1.js +12 -0
  28. package/dist/client/assets/chunk-727SXJPM-B4WReBxI.js +206 -0
  29. package/dist/client/assets/chunk-AQP2D5EJ-C8Hs2uxD.js +231 -0
  30. package/dist/client/assets/chunk-BSJP7CBP-Dc0utuAA.js +1 -0
  31. package/dist/client/assets/chunk-CSCIHK7Q-D5y67sbU.js +124 -0
  32. package/dist/client/assets/chunk-EIO257PC-Bx5t8kU4.js +22 -0
  33. package/dist/client/assets/chunk-FMBD7UC4-RPQDsV4e.js +15 -0
  34. package/dist/client/assets/chunk-K2UTITRG-3wps4yb2.js +35 -0
  35. package/dist/client/assets/chunk-KSCS5N6A-CUZckNfe.js +10 -0
  36. package/dist/client/assets/chunk-L5ZTLDWV-CKWh4nJc.js +1 -0
  37. package/dist/client/assets/chunk-ND2GUHAM-CRxqa1cH.js +1 -0
  38. package/dist/client/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
  39. package/dist/client/assets/chunk-NZK2D7GU-DzyoezBz.js +1 -0
  40. package/dist/client/assets/chunk-O5CBEL6O-DW5LwnUN.js +70 -0
  41. package/dist/client/assets/chunk-QZHKN3VN-D8ZpkZ2T.js +1 -0
  42. package/dist/client/assets/chunk-SRAX5OIU-CiRgnkYo.js +1 -0
  43. package/dist/client/assets/chunk-Z3N5DIM6-D9TMVU7m.js +1 -0
  44. package/dist/client/assets/chunk-ZUYEQ4TG-BzFOpW--.js +7 -0
  45. package/dist/client/assets/chunk-aKtaBQYM.js +1 -0
  46. package/dist/client/assets/classDiagram-4FO5ZUOK-Bu-eJOPP.js +1 -0
  47. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bu-eJOPP.js +1 -0
  48. package/dist/client/assets/cose-bilkent-S5V4N54A-CebQ3rSv.js +1 -0
  49. package/dist/client/assets/cs-CZ-2BRQDIVT-CfiY7B0I.js +11 -0
  50. package/dist/client/assets/cytoscape.esm-h6BdjjI9.js +321 -0
  51. package/dist/client/assets/da-DK-5WZEPLOC-_se7cnqh.js +5 -0
  52. package/dist/client/assets/dagre-BM42HDAG-Dh4U_FZ3.js +4 -0
  53. package/dist/client/assets/dagre-Bx709z4p.js +1 -0
  54. package/dist/client/assets/de-DE-XR44H4JA-8OXIdaPv.js +8 -0
  55. package/dist/client/assets/defaultLocale-C8Fc0cco.js +1 -0
  56. package/dist/client/assets/diagram-2AECGRRQ-x13SPAsu.js +43 -0
  57. package/dist/client/assets/diagram-5GNKFQAL-Dd2ojJwV.js +10 -0
  58. package/dist/client/assets/diagram-KO2AKTUF-B8fPg745.js +3 -0
  59. package/dist/client/assets/diagram-LMA3HP47-BCOXIOSa.js +24 -0
  60. package/dist/client/assets/diagram-OG6HWLK6-koOG8baV.js +24 -0
  61. package/dist/client/assets/directory-open-01563666-D4xXyWb_.js +1 -0
  62. package/dist/client/assets/directory-open-4ed118d0-1i309Asm.js +1 -0
  63. package/dist/client/assets/dist-CkHWSq-9.js +19 -0
  64. package/dist/client/assets/dist-DbpddOpB.js +1 -0
  65. package/dist/client/assets/el-GR-BZB4AONW-DKyQ9Zbj.js +10 -0
  66. package/dist/client/assets/en-B4ZKOASM-C0nvDD-u.js +1 -0
  67. package/dist/client/assets/erDiagram-TEJ5UH35-BEkaZffl.js +85 -0
  68. package/dist/client/assets/es-ES-U4NZUMDT-BP9WJyyE.js +9 -0
  69. package/dist/client/assets/esm-BBZsBR2Q.js +135 -0
  70. package/dist/client/assets/eu-ES-A7QVB2H4-FF8Yo9ZO.js +11 -0
  71. package/dist/client/assets/eventmodeling-FCH6USID-BMNHUh4b.js +1 -0
  72. package/dist/client/assets/fa-IR-HGAKTJCU-9qIByi7w.js +8 -0
  73. package/dist/client/assets/fi-FI-Z5N7JZ37-PJ5NZtDN.js +6 -0
  74. package/dist/client/assets/file-open-002ab408-BHUWm0Sh.js +1 -0
  75. package/dist/client/assets/file-open-7c801643-DZtJT5zp.js +1 -0
  76. package/dist/client/assets/file-save-3189631c-CO9S4HFW.js +1 -0
  77. package/dist/client/assets/file-save-745eba88-Bwdfz6OZ.js +1 -0
  78. package/dist/client/assets/flowDiagram-I6XJVG4X-DyWXWaQw.js +162 -0
  79. package/dist/client/assets/fr-FR-RHASNOE6-jpsFHqOx.js +9 -0
  80. package/dist/client/assets/ganttDiagram-6RSMTGT7-ZyvknnRG.js +292 -0
  81. package/dist/client/assets/gitGraph-WXDBUCRP-Q6znYb8F.js +1 -0
  82. package/dist/client/assets/gitGraphDiagram-PVQCEYII-BduTvbdg.js +106 -0
  83. package/dist/client/assets/gl-ES-HMX3MZ6V-BJfquIk1.js +10 -0
  84. package/dist/client/assets/graphlib-B8gBHxth.js +1 -0
  85. package/dist/client/assets/he-IL-6SHJWFNN-BcKH2buH.js +10 -0
  86. package/dist/client/assets/hi-IN-IWLTKZ5I-CZ6xC-p-.js +4 -0
  87. package/dist/client/assets/hu-HU-A5ZG7DT2-Qdmeb1R8.js +7 -0
  88. package/dist/client/assets/id-ID-SAP4L64H-BF7hTexH.js +10 -0
  89. package/dist/client/assets/image-GAAHSSAO-614nODhe.js +1 -0
  90. package/dist/client/assets/image-blob-reduce.esm-NzmDxm1v.js +2 -0
  91. package/dist/client/assets/index-BM1wVbBu.css +1 -0
  92. package/dist/client/assets/index-CJS5C-21.js +236 -0
  93. package/dist/client/assets/info-J43DQDTF-B0NWKxg9.js +1 -0
  94. package/dist/client/assets/infoDiagram-5YYISTIA-S14LSWq2.js +2 -0
  95. package/dist/client/assets/init-D6jRqBbL.js +1 -0
  96. package/dist/client/assets/ishikawaDiagram-YF4QCWOH-mBgTlJYa.js +70 -0
  97. package/dist/client/assets/it-IT-JPQ66NNP-Cpwr4nh4.js +11 -0
  98. package/dist/client/assets/ja-JP-DBVTYXUO-aRcxqHgI.js +8 -0
  99. package/dist/client/assets/journeyDiagram-JHISSGLW-IqSYFtBk.js +139 -0
  100. package/dist/client/assets/kaa-6HZHGXH3-C3lGQNoX.js +1 -0
  101. package/dist/client/assets/kab-KAB-ZGHBKWFO-BTzCFBfa.js +8 -0
  102. package/dist/client/assets/kanban-definition-UN3LZRKU-56oDzy8w.js +89 -0
  103. package/dist/client/assets/katex-Vhh-h91d.js +257 -0
  104. package/dist/client/assets/kk-KZ-P5N5QNE5-BN2QE2qN.js +1 -0
  105. package/dist/client/assets/km-KH-HSX4SM5Z-ntycs-3y.js +11 -0
  106. package/dist/client/assets/ko-KR-MTYHY66A-z81zH0yV.js +9 -0
  107. package/dist/client/assets/ku-TR-6OUDTVRD-B3Hewbuw.js +9 -0
  108. package/dist/client/assets/line-Dw_ht09V.js +1 -0
  109. package/dist/client/assets/linear-CyOYhOcs.js +1 -0
  110. package/dist/client/assets/lt-LT-XHIRWOB4-A6GRBBpG.js +3 -0
  111. package/dist/client/assets/lv-LV-5QDEKY6T-JE4Th9NB.js +7 -0
  112. package/dist/client/assets/mermaid-parser.core-BLpZ1Xi3.js +4 -0
  113. package/dist/client/assets/mermaid.core-De7CyoQD.js +40 -0
  114. package/dist/client/assets/mindmap-definition-RKZ34NQL-uGJycOYz.js +96 -0
  115. package/dist/client/assets/mr-IN-CRQNXWMA-B9eQuk1Z.js +13 -0
  116. package/dist/client/assets/my-MM-5M5IBNSE-CHlvzYOu.js +1 -0
  117. package/dist/client/assets/nb-NO-T6EIAALU-FdyMoR8J.js +10 -0
  118. package/dist/client/assets/nl-NL-IS3SIHDZ-CcM_lR89.js +8 -0
  119. package/dist/client/assets/nn-NO-6E72VCQL-NsOr1ixK.js +8 -0
  120. package/dist/client/assets/oc-FR-POXYY2M6-ClC5X0pl.js +8 -0
  121. package/dist/client/assets/ordinal-hYBb2elL.js +1 -0
  122. package/dist/client/assets/pa-IN-N4M65BXN-LWsiX5S8.js +4 -0
  123. package/dist/client/assets/packet-YPE3B663-CJHLPqbQ.js +1 -0
  124. package/dist/client/assets/path-BWPyau1x.js +1 -0
  125. package/dist/client/assets/percentages-BXMCSKIN-V9nyH_gb.js +1 -0
  126. package/dist/client/assets/pica-DjQMjoX_.js +2 -0
  127. package/dist/client/assets/pie-LRSECV5Y-BUHMb4Eu.js +1 -0
  128. package/dist/client/assets/pieDiagram-4H26LBE5-GAPDiBah.js +30 -0
  129. package/dist/client/assets/pl-PL-T2D74RX3-Da6GvME-.js +9 -0
  130. package/dist/client/assets/prod-B3A6UDL8.js +149 -0
  131. package/dist/client/assets/prod-DtRVLazd.css +1 -0
  132. package/dist/client/assets/pt-BR-5N22H2LF-DfjURw9w.js +9 -0
  133. package/dist/client/assets/pt-PT-UZXXM6DQ-DwBqhsuh.js +9 -0
  134. package/dist/client/assets/quadrantDiagram-W4KKPZXB-BRcZqGCz.js +7 -0
  135. package/dist/client/assets/radar-GUYGQ44K-D2D556tt.js +1 -0
  136. package/dist/client/assets/requirementDiagram-4Y6WPE33-CX1Co4la.js +84 -0
  137. package/dist/client/assets/ro-RO-JPDTUUEW-CG0iQOM3.js +11 -0
  138. package/dist/client/assets/rough.esm-CSKSodPl.js +1 -0
  139. package/dist/client/assets/roundRect-D01gJrlt.js +1 -0
  140. package/dist/client/assets/ru-RU-B4JR7IUQ-Dg3BF3G-.js +9 -0
  141. package/dist/client/assets/sankeyDiagram-5OEKKPKP-D9ysMket.js +40 -0
  142. package/dist/client/assets/sequenceDiagram-3UESZ5HK-0g_Spb0h.js +162 -0
  143. package/dist/client/assets/si-LK-N5RQ5JYF-CpzQXp0R.js +1 -0
  144. package/dist/client/assets/sk-SK-C5VTKIMK-C6iDRiUH.js +6 -0
  145. package/dist/client/assets/sl-SI-NN7IZMDC-CpsmjUH1.js +6 -0
  146. package/dist/client/assets/src-BViOx7y3.js +1 -0
  147. package/dist/client/assets/stateDiagram-AJRCARHV-r4AmMQTe.js +1 -0
  148. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Ck2vn4J9.js +1 -0
  149. package/dist/client/assets/subset-shared.chunk-CI4ywhrU.js +1 -0
  150. package/dist/client/assets/subset-worker.chunk-7sWn7Ze3.js +1 -0
  151. package/dist/client/assets/sv-SE-XGPEYMSR-B5E6Hc1s.js +10 -0
  152. package/dist/client/assets/ta-IN-2NMHFXQM-DNdbg2NX.js +9 -0
  153. package/dist/client/assets/th-TH-HPSO5L25-CwCFFmIs.js +2 -0
  154. package/dist/client/assets/timeline-definition-PNZ67QCA-BJtGyu1Y.js +120 -0
  155. package/dist/client/assets/tr-TR-DEFEU3FU-D-USnzJt.js +7 -0
  156. package/dist/client/assets/treeView-BLDUP644-CpwJjSVv.js +1 -0
  157. package/dist/client/assets/treemap-LRROVOQU-DKQuF8GY.js +1 -0
  158. package/dist/client/assets/uk-UA-QMV73CPH-BGFyYrZm.js +6 -0
  159. package/dist/client/assets/vennDiagram-CIIHVFJN-BJ7Omwmb.js +34 -0
  160. package/dist/client/assets/vi-VN-M7AON7JQ-BEVYsUmB.js +5 -0
  161. package/dist/client/assets/wardley-L42UT6IY-B6p__8sD.js +1 -0
  162. package/dist/client/assets/wardleyDiagram-YWT4CUSO-BZNv-WBl.js +78 -0
  163. package/dist/client/assets/xychartDiagram-2RQKCTM6-DL9nFgTt.js +7 -0
  164. package/dist/client/assets/zh-CN-LNUGB5OW-Ya4bFRUj.js +10 -0
  165. package/dist/client/assets/zh-HK-E62DVLB3-B_9mh-qR.js +1 -0
  166. package/dist/client/assets/zh-TW-RAJ6MFWO-EeeAfw19.js +9 -0
  167. package/dist/client/index.html +14 -0
  168. package/dist/lintCore-E4ZG4DFJ.js +8 -0
  169. package/dist/store-WLSSJHFW.js +13 -0
  170. package/examples/specs/_.mdx +51 -0
  171. package/examples/specs/_components/ColumnCount.tsx +78 -0
  172. package/examples/specs/_components/StatusBadge.tsx +42 -0
  173. package/examples/specs/_generators/typescript-interface.md +16 -0
  174. package/examples/specs/api/_.mdx +10 -0
  175. package/examples/specs/api/_schema.json +77 -0
  176. package/examples/specs/api/_template.mdx +39 -0
  177. package/examples/specs/api/users-api.mdx +76 -0
  178. package/examples/specs/architecture/_.mdx +10 -0
  179. package/examples/specs/architecture/overview.mdx +45 -0
  180. package/examples/specs/screens/_.mdx +10 -0
  181. package/examples/specs/screens/_template.mdx +29 -0
  182. package/examples/specs/screens/login.excalidraw +282 -0
  183. package/examples/specs/screens/login.mdx +37 -0
  184. package/examples/specs/tables/_.mdx +10 -0
  185. package/examples/specs/tables/_schema.json +82 -0
  186. package/examples/specs/tables/_template.mdx +19 -0
  187. package/examples/specs/tables/posts.mdx +60 -0
  188. package/examples/specs/tables/users.mdx +34 -0
  189. package/package.json +88 -0
@@ -0,0 +1,282 @@
1
+ {
2
+ "type": "excalidraw",
3
+ "version": 2,
4
+ "source": "http://localhost:4400",
5
+ "elements": [
6
+ {
7
+ "id": "frame",
8
+ "type": "rectangle",
9
+ "x": 80,
10
+ "y": 60,
11
+ "width": 360,
12
+ "height": 420,
13
+ "strokeColor": "#1e1e1e",
14
+ "backgroundColor": "transparent",
15
+ "fillStyle": "solid",
16
+ "strokeWidth": 2,
17
+ "roundness": {
18
+ "type": 3
19
+ },
20
+ "version": 2,
21
+ "versionNonce": 85234903,
22
+ "index": "a0",
23
+ "isDeleted": false,
24
+ "strokeStyle": "solid",
25
+ "roughness": 1,
26
+ "opacity": 100,
27
+ "angle": 0,
28
+ "seed": 1,
29
+ "groupIds": [],
30
+ "frameId": null,
31
+ "boundElements": [],
32
+ "updated": 1781158281255,
33
+ "link": null,
34
+ "locked": false
35
+ },
36
+ {
37
+ "id": "title",
38
+ "type": "text",
39
+ "x": 110,
40
+ "y": 100,
41
+ "width": 120,
42
+ "height": 36,
43
+ "text": "ログイン",
44
+ "fontSize": 28,
45
+ "fontFamily": 2,
46
+ "textAlign": "left",
47
+ "verticalAlign": "top",
48
+ "strokeColor": "#1e1e1e",
49
+ "version": 2,
50
+ "versionNonce": 1942816793,
51
+ "index": "a1",
52
+ "isDeleted": false,
53
+ "fillStyle": "solid",
54
+ "strokeWidth": 2,
55
+ "strokeStyle": "solid",
56
+ "roughness": 1,
57
+ "opacity": 100,
58
+ "angle": 0,
59
+ "backgroundColor": "transparent",
60
+ "seed": 1,
61
+ "groupIds": [],
62
+ "frameId": null,
63
+ "roundness": null,
64
+ "boundElements": [],
65
+ "updated": 1781158281255,
66
+ "link": null,
67
+ "locked": false,
68
+ "containerId": null,
69
+ "originalText": "ログイン",
70
+ "autoResize": true,
71
+ "lineHeight": 1.2857142857142858
72
+ },
73
+ {
74
+ "id": "label-email",
75
+ "type": "text",
76
+ "x": 110,
77
+ "y": 170,
78
+ "width": 160,
79
+ "height": 20,
80
+ "text": "メールアドレス",
81
+ "fontSize": 16,
82
+ "fontFamily": 2,
83
+ "strokeColor": "#1e1e1e",
84
+ "version": 2,
85
+ "versionNonce": 1098506743,
86
+ "index": "a2",
87
+ "isDeleted": false,
88
+ "fillStyle": "solid",
89
+ "strokeWidth": 2,
90
+ "strokeStyle": "solid",
91
+ "roughness": 1,
92
+ "opacity": 100,
93
+ "angle": 0,
94
+ "backgroundColor": "transparent",
95
+ "seed": 1,
96
+ "groupIds": [],
97
+ "frameId": null,
98
+ "roundness": null,
99
+ "boundElements": [],
100
+ "updated": 1781158281255,
101
+ "link": null,
102
+ "locked": false,
103
+ "textAlign": "left",
104
+ "verticalAlign": "top",
105
+ "containerId": null,
106
+ "originalText": "メールアドレス",
107
+ "autoResize": true,
108
+ "lineHeight": 1.25
109
+ },
110
+ {
111
+ "id": "input-email",
112
+ "type": "rectangle",
113
+ "x": 110,
114
+ "y": 196,
115
+ "width": 300,
116
+ "height": 44,
117
+ "strokeColor": "#1e1e1e",
118
+ "backgroundColor": "#f8f9fa",
119
+ "fillStyle": "solid",
120
+ "strokeWidth": 1,
121
+ "roundness": {
122
+ "type": 3
123
+ },
124
+ "version": 2,
125
+ "versionNonce": 352754937,
126
+ "index": "a3",
127
+ "isDeleted": false,
128
+ "strokeStyle": "solid",
129
+ "roughness": 1,
130
+ "opacity": 100,
131
+ "angle": 0,
132
+ "seed": 1,
133
+ "groupIds": [],
134
+ "frameId": null,
135
+ "boundElements": [],
136
+ "updated": 1781158281255,
137
+ "link": null,
138
+ "locked": false
139
+ },
140
+ {
141
+ "id": "label-password",
142
+ "type": "text",
143
+ "x": 110,
144
+ "y": 264,
145
+ "width": 120,
146
+ "height": 20,
147
+ "text": "パスワード",
148
+ "fontSize": 16,
149
+ "fontFamily": 2,
150
+ "strokeColor": "#1e1e1e",
151
+ "version": 2,
152
+ "versionNonce": 435718935,
153
+ "index": "a4",
154
+ "isDeleted": false,
155
+ "fillStyle": "solid",
156
+ "strokeWidth": 2,
157
+ "strokeStyle": "solid",
158
+ "roughness": 1,
159
+ "opacity": 100,
160
+ "angle": 0,
161
+ "backgroundColor": "transparent",
162
+ "seed": 1,
163
+ "groupIds": [],
164
+ "frameId": null,
165
+ "roundness": null,
166
+ "boundElements": [],
167
+ "updated": 1781158281255,
168
+ "link": null,
169
+ "locked": false,
170
+ "textAlign": "left",
171
+ "verticalAlign": "top",
172
+ "containerId": null,
173
+ "originalText": "パスワード",
174
+ "autoResize": true,
175
+ "lineHeight": 1.25
176
+ },
177
+ {
178
+ "id": "input-password",
179
+ "type": "rectangle",
180
+ "x": 110,
181
+ "y": 290,
182
+ "width": 300,
183
+ "height": 44,
184
+ "strokeColor": "#1e1e1e",
185
+ "backgroundColor": "#f8f9fa",
186
+ "fillStyle": "solid",
187
+ "strokeWidth": 1,
188
+ "roundness": {
189
+ "type": 3
190
+ },
191
+ "version": 2,
192
+ "versionNonce": 133862873,
193
+ "index": "a5",
194
+ "isDeleted": false,
195
+ "strokeStyle": "solid",
196
+ "roughness": 1,
197
+ "opacity": 100,
198
+ "angle": 0,
199
+ "seed": 1,
200
+ "groupIds": [],
201
+ "frameId": null,
202
+ "boundElements": [],
203
+ "updated": 1781158281255,
204
+ "link": null,
205
+ "locked": false
206
+ },
207
+ {
208
+ "id": "button",
209
+ "type": "rectangle",
210
+ "x": 110,
211
+ "y": 380,
212
+ "width": 300,
213
+ "height": 48,
214
+ "strokeColor": "#1971c2",
215
+ "backgroundColor": "#a5d8ff",
216
+ "fillStyle": "solid",
217
+ "strokeWidth": 2,
218
+ "roundness": {
219
+ "type": 3
220
+ },
221
+ "version": 2,
222
+ "versionNonce": 2063929399,
223
+ "index": "a6",
224
+ "isDeleted": false,
225
+ "strokeStyle": "solid",
226
+ "roughness": 1,
227
+ "opacity": 100,
228
+ "angle": 0,
229
+ "seed": 1,
230
+ "groupIds": [],
231
+ "frameId": null,
232
+ "boundElements": [],
233
+ "updated": 1781158281255,
234
+ "link": null,
235
+ "locked": false
236
+ },
237
+ {
238
+ "id": "button-label",
239
+ "type": "text",
240
+ "x": 230,
241
+ "y": 392,
242
+ "width": 60,
243
+ "height": 24,
244
+ "text": "ログイン",
245
+ "fontSize": 18,
246
+ "fontFamily": 2,
247
+ "textAlign": "center",
248
+ "strokeColor": "#1971c2",
249
+ "version": 2,
250
+ "versionNonce": 1874621113,
251
+ "index": "a7",
252
+ "isDeleted": false,
253
+ "fillStyle": "solid",
254
+ "strokeWidth": 2,
255
+ "strokeStyle": "solid",
256
+ "roughness": 1,
257
+ "opacity": 100,
258
+ "angle": 0,
259
+ "backgroundColor": "transparent",
260
+ "seed": 1,
261
+ "groupIds": [],
262
+ "frameId": null,
263
+ "roundness": null,
264
+ "boundElements": [],
265
+ "updated": 1781158281255,
266
+ "link": null,
267
+ "locked": false,
268
+ "verticalAlign": "top",
269
+ "containerId": null,
270
+ "originalText": "ログイン",
271
+ "autoResize": true,
272
+ "lineHeight": 1.3333333333333333
273
+ }
274
+ ],
275
+ "appState": {
276
+ "gridSize": 20,
277
+ "gridStep": 5,
278
+ "gridModeEnabled": false,
279
+ "viewBackgroundColor": "#ffffff"
280
+ },
281
+ "files": {}
282
+ }
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: ログイン画面
3
+ description: ユーザーが認証情報を入力するメイン画面
4
+ screen:
5
+ route: /login
6
+ fields:
7
+ - { name: メールアドレス, type: email, required: true, description: "ユーザーのメールアドレス" }
8
+ - { name: パスワード, type: password, required: true, description: "アカウントのパスワード" }
9
+ actions:
10
+ - { name: ログイン, description: "認証情報を送信してログイン" }
11
+ - { name: パスワードリセットへ遷移, description: "パスワード忘却フロー" }
12
+ ---
13
+
14
+ # {title}
15
+
16
+ アカウント認証を行う最初の画面。メールアドレスとパスワードを入力し、サーバーで検証します。
17
+
18
+ ## ワイヤーフレーム
19
+
20
+ <Drawing src="screens/login" />
21
+
22
+ ## 画面項目
23
+
24
+ <DataView data={data.screen.fields} />
25
+
26
+ ## 振る舞い
27
+
28
+ - **メールアドレス検証** — RFC 5322 に準拠したフォーマットチェック
29
+ - **パスワード検証** — 最小 8 文字、空白不可
30
+ - **失敗時エラーメッセージ** — メールアドレスまたはパスワードが不正な旨を通知
31
+ - **レート制限** — 10 回失敗後 5 分間ブロック
32
+ - **パスワード忘却** — クリックで `/reset-password` へ遷移
33
+
34
+ ## 関連スペック
35
+
36
+ - [[tables:users]] — ユーザーテーブル定義
37
+ - [[api:users-api]] — ユーザー認証 API
@@ -0,0 +1,10 @@
1
+ ---
2
+ title: テーブル定義
3
+ description: データベーステーブルの一覧と仕様
4
+ ---
5
+
6
+ # テーブル定義
7
+
8
+ プロジェクトで使用するデータベーステーブルの定義をまとめています。各テーブルの構成、主キー、外部キー関係などを記載します。
9
+
10
+ <SpecList category="tables" />
@@ -0,0 +1,82 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "テーブル定義スキーマ",
4
+ "description": "データベーステーブルの仕様を定義するスキーマ",
5
+ "type": "object",
6
+ "required": ["title", "table"],
7
+ "properties": {
8
+ "title": {
9
+ "type": "string",
10
+ "title": "タイトル",
11
+ "description": "テーブルのタイトル"
12
+ },
13
+ "description": {
14
+ "type": "string",
15
+ "title": "説明",
16
+ "description": "テーブルの説明"
17
+ },
18
+ "table": {
19
+ "type": "object",
20
+ "title": "テーブル定義",
21
+ "description": "テーブル定義",
22
+ "required": ["name", "columns"],
23
+ "properties": {
24
+ "name": {
25
+ "type": "string",
26
+ "title": "テーブル名",
27
+ "description": "テーブル名(データベース側の実際の名前)"
28
+ },
29
+ "description": {
30
+ "type": "string",
31
+ "title": "テーブルの説明",
32
+ "description": "テーブルの詳細説明"
33
+ },
34
+ "columns": {
35
+ "type": "array",
36
+ "title": "カラム",
37
+ "minItems": 1,
38
+ "description": "カラムリスト",
39
+ "items": {
40
+ "type": "object",
41
+ "required": ["name", "type"],
42
+ "properties": {
43
+ "name": {
44
+ "type": "string",
45
+ "title": "カラム名",
46
+ "description": "カラム名"
47
+ },
48
+ "type": {
49
+ "type": "string",
50
+ "title": "型",
51
+ "description": "データ型(bigint、varchar など)"
52
+ },
53
+ "nullable": {
54
+ "type": "boolean",
55
+ "title": "NULL 許可",
56
+ "description": "NULL を許可するか"
57
+ },
58
+ "primaryKey": {
59
+ "type": "boolean",
60
+ "title": "主キー",
61
+ "description": "主キーであるか"
62
+ },
63
+ "default": {
64
+ "type": "string",
65
+ "title": "デフォルト値",
66
+ "description": "デフォルト値"
67
+ },
68
+ "description": {
69
+ "type": "string",
70
+ "title": "説明",
71
+ "description": "カラムの説明"
72
+ }
73
+ },
74
+ "additionalProperties": true
75
+ }
76
+ }
77
+ },
78
+ "additionalProperties": true
79
+ }
80
+ },
81
+ "additionalProperties": true
82
+ }
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: 新しいテーブル
3
+ description: テーブルの説明
4
+ table:
5
+ name: table_name
6
+ description: テーブルの説明
7
+ columns:
8
+ - { name: id, type: bigint, primaryKey: true, description: 主キー }
9
+ - { name: created_at, type: timestamp, nullable: false, description: 作成日時 }
10
+ - { name: updated_at, type: timestamp, nullable: false, description: 更新日時 }
11
+ ---
12
+
13
+ # {title}
14
+
15
+ <TableDefinition data={data.table} />
16
+
17
+ ## 補足説明
18
+
19
+ テーブルの設計意図や特殊な取り扱いについて、ここに記載します。
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: posts テーブル
3
+ description: ユーザーが投稿したコンテンツを管理するテーブル
4
+ table:
5
+ name: posts
6
+ description: ユーザー投稿情報
7
+ columns:
8
+ - name: id
9
+ type: bigint
10
+ primaryKey: true
11
+ description: 主キー
12
+ - name: user_id
13
+ type: bigint
14
+ nullable: false
15
+ description: ユーザー ID(users テーブルへの外部キー)
16
+ - name: title
17
+ type: varchar(200)
18
+ nullable: false
19
+ description: 投稿タイトル
20
+ - name: body
21
+ type: text
22
+ nullable: false
23
+ description: 投稿本文
24
+ - name: status
25
+ type: varchar(20)
26
+ nullable: false
27
+ default: "'draft'"
28
+ description: 投稿ステータス(draft / published / archived)
29
+ - name: published_at
30
+ type: timestamp
31
+ nullable: true
32
+ description: 公開日時(公開前は NULL)
33
+ - name: created_at
34
+ type: timestamp
35
+ nullable: false
36
+ description: 作成日時
37
+ - name: updated_at
38
+ type: timestamp
39
+ nullable: false
40
+ description: 更新日時
41
+ primaryKey: false
42
+ ---
43
+
44
+ # {title}
45
+
46
+ ユーザーが投稿したコンテンツを管理するテーブル。ブログ記事やニュース投稿などに対応します。
47
+
48
+ <TableDefinition data={data.table} />
49
+
50
+ ## 設計メモ
51
+
52
+ - user_id は [[tables:users]] テーブルへの外部キーです
53
+ - status のデフォルト値は 'draft' で、自動公開は行われません
54
+ - published_at は公開予定日時の指定にも使えます
55
+ - 論理削除が必要な場合は、status を 'archived' にして対応してください
56
+
57
+ ## 関連スペック
58
+
59
+ - [[tables:users]] — 投稿者情報(user_id で参照)
60
+ - [[api:posts-api]] — 投稿管理 API
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: users テーブル
3
+ description: ユーザーアカウント情報を管理するテーブル
4
+ table:
5
+ name: users
6
+ description: ユーザーアカウント情報
7
+ columns:
8
+ - { name: id, type: bigint, primaryKey: true, description: 主キー }
9
+ - { name: email, type: varchar(255), nullable: false, description: メールアドレス(ユニーク制約) }
10
+ - { name: name, type: varchar(100), nullable: true, description: ユーザー名 }
11
+ - { name: role, type: varchar(20), nullable: false, default: "'member'", description: ロール(admin / moderator / member) }
12
+ - { name: created_at, type: timestamp, nullable: false, description: 作成日時 }
13
+ - { name: updated_at, type: timestamp, nullable: false, description: 更新日時 }
14
+ ---
15
+
16
+ # {title}
17
+
18
+ ユーザーアカウント情報を管理するメインテーブル。認証とアクセス制御に使用されます。
19
+
20
+ <TableDefinition data={data.table} />
21
+
22
+ <ColumnCount table={data.table} />
23
+
24
+ ## 設計メモ
25
+
26
+ - メールアドレスはユニーク制約を設定し、重複登録を防止しています
27
+ - 論理削除(soft delete)は実装せず、物理削除を前提としています
28
+ - role はアプリケーションレベルで検証を行い、不正な値が入らないようにしてください
29
+ - created_at / updated_at は自動タイムスタンプ管理を推奨します
30
+
31
+ ## 関連スペック
32
+
33
+ - [[tables:posts]] — 投稿テーブル(user_id で参照)
34
+ - [[api:users-api]] — ユーザー管理 API
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "specifian",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "Spec-as-code documentation tool: render and edit local MDX specs with front-matter as structured design data",
5
+ "keywords": [
6
+ "documentation",
7
+ "mdx",
8
+ "specification",
9
+ "design-docs",
10
+ "frontmatter",
11
+ "wiki",
12
+ "scaffolding",
13
+ "mcp"
14
+ ],
15
+ "author": "Kengo Asamizu",
16
+ "type": "module",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/rabitarochan/specifian.git"
20
+ },
21
+ "license": "MIT",
22
+ "publishConfig": {
23
+ "registry": "https://registry.npmjs.org/",
24
+ "access": "public"
25
+ },
26
+ "engines": {
27
+ "node": ">=20"
28
+ },
29
+ "bin": {
30
+ "specifian": "./dist/cli/index.js"
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "examples"
35
+ ],
36
+ "scripts": {
37
+ "dev": "concurrently -k \"npm:dev:server\" \"npm:dev:client\"",
38
+ "dev:server": "node --watch --import tsx src/cli/index.ts serve --dir examples/specs --port 4399",
39
+ "dev:client": "vite",
40
+ "build": "tsup && vite build",
41
+ "typecheck": "tsc --noEmit",
42
+ "start": "node dist/cli/index.js serve --dir examples/specs",
43
+ "prepublishOnly": "npm run typecheck && npm run build",
44
+ "publish:beta": "npm version prerelease --preid=beta && npm publish --tag beta"
45
+ },
46
+ "dependencies": {
47
+ "@mdx-js/mdx": "^3.1.0",
48
+ "@modelcontextprotocol/sdk": "^1.29.0",
49
+ "@scaffdog/engine": "^4.1.0",
50
+ "ajv": "^8.17.1",
51
+ "remark-frontmatter": "^5.0.0",
52
+ "remark-gfm": "^4.0.0",
53
+ "zod": "^3.25.0",
54
+ "chokidar": "^3.6.0",
55
+ "commander": "^12.1.0",
56
+ "express": "^4.21.2",
57
+ "gray-matter": "^4.0.3",
58
+ "open": "^10.1.0",
59
+ "ws": "^8.18.0"
60
+ },
61
+ "devDependencies": {
62
+ "@codemirror/lang-markdown": "^6.3.1",
63
+ "@excalidraw/excalidraw": "^0.18.1",
64
+ "@mdx-js/react": "^3.1.0",
65
+ "@types/d3-force": "^3.0.10",
66
+ "@types/express": "^4.17.21",
67
+ "@types/node": "^20.17.9",
68
+ "@types/react": "^18.3.12",
69
+ "@types/react-dom": "^18.3.1",
70
+ "@types/ws": "^8.5.13",
71
+ "@uiw/react-codemirror": "^4.23.6",
72
+ "@vitejs/plugin-react": "^6.0.2",
73
+ "concurrently": "^9.1.0",
74
+ "d3-force": "^3.0.0",
75
+ "mermaid": "^11.4.1",
76
+ "react": "^18.3.1",
77
+ "react-dom": "^18.3.1",
78
+ "react-router-dom": "^6.28.0",
79
+ "remark-mdx-frontmatter": "^5.0.0",
80
+ "sucrase": "^3.35.0",
81
+ "tsup": "^8.3.5",
82
+ "tsx": "^4.19.2",
83
+ "typescript": "^5.7.2",
84
+ "unist-util-visit": "^5.0.0",
85
+ "vite": "^8.0.16",
86
+ "yaml": "^2.6.1"
87
+ }
88
+ }