create-ginko 0.4.0 → 0.5.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 (1685) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +15 -8
  3. package/index.mjs +115 -44
  4. package/package.json +6 -1
  5. package/presets/gastro/app/pages/index.vue +6 -4
  6. package/presets/gastro-de/app/pages/index.vue +6 -4
  7. package/template-files.mjs +377 -0
  8. package/templates/blog/.env.example +8 -0
  9. package/templates/blog/.github/screenshots/home-dark.png +0 -0
  10. package/templates/blog/.github/screenshots/home-light.png +0 -0
  11. package/templates/blog/.github/workflows/ci.yml +27 -0
  12. package/templates/blog/DESIGN.md +197 -0
  13. package/templates/blog/LICENSE +21 -0
  14. package/templates/blog/MEDIA.md +29 -0
  15. package/templates/blog/NOTES.md +16 -0
  16. package/templates/blog/README.md +274 -0
  17. package/templates/blog/app/app.config.ts +29 -0
  18. package/templates/blog/app/app.vue +7 -0
  19. package/templates/blog/app/assets/css/main.css +18 -0
  20. package/templates/blog/app/assets/css/tokens.css +400 -0
  21. package/templates/blog/app/components/InitialsAvatar.vue +18 -0
  22. package/templates/blog/app/components/ProseBody.vue +13 -0
  23. package/templates/blog/app/components/block/Cards.vue +54 -0
  24. package/templates/blog/app/components/block/Cta.vue +26 -0
  25. package/templates/blog/app/components/block/Empty.vue +26 -0
  26. package/templates/blog/app/components/block/Features.vue +24 -0
  27. package/templates/blog/app/components/block/Hero.vue +47 -0
  28. package/templates/blog/app/components/block/PageHeader.vue +21 -0
  29. package/templates/blog/app/components/block/Section.vue +31 -0
  30. package/templates/blog/app/components/blog/Byline.vue +22 -0
  31. package/templates/blog/app/components/blog/PostList.vue +33 -0
  32. package/templates/blog/app/components/blog/TagList.vue +17 -0
  33. package/templates/blog/app/components/home/LatestPost.vue +31 -0
  34. package/templates/blog/app/components/people/List.vue +41 -0
  35. package/templates/blog/app/components/site/Contact.vue +38 -0
  36. package/templates/blog/app/components/site/Footer.vue +81 -0
  37. package/templates/blog/app/components/site/FooterStatus.vue +24 -0
  38. package/templates/blog/app/components/site/Header.vue +52 -0
  39. package/templates/blog/app/components/site/LanguageSwitch.vue +34 -0
  40. package/templates/blog/app/components/site/Logo.vue +17 -0
  41. package/templates/blog/app/components/site/NavLink.vue +19 -0
  42. package/templates/blog/app/components/site/NavSheet.vue +63 -0
  43. package/templates/blog/app/components/site/Notice.vue +21 -0
  44. package/templates/blog/app/components/site/PageCta.vue +14 -0
  45. package/templates/blog/app/components/site/SkipLink.vue +15 -0
  46. package/templates/blog/app/components/site/ThemeToggle.vue +28 -0
  47. package/templates/blog/app/components/ui/button/Button.vue +30 -0
  48. package/templates/blog/app/components/ui/button/index.ts +44 -0
  49. package/templates/blog/app/components/ui/sheet/Sheet.vue +16 -0
  50. package/templates/blog/app/components/ui/sheet/SheetClose.vue +13 -0
  51. package/templates/blog/app/components/ui/sheet/SheetContent.vue +54 -0
  52. package/templates/blog/app/components/ui/sheet/SheetDescription.vue +23 -0
  53. package/templates/blog/app/components/ui/sheet/SheetOverlay.vue +22 -0
  54. package/templates/blog/app/components/ui/sheet/SheetTitle.vue +23 -0
  55. package/templates/blog/app/components/ui/sheet/SheetTrigger.vue +13 -0
  56. package/templates/blog/app/components/ui/sheet/index.ts +7 -0
  57. package/templates/blog/app/composables/useBlog.ts +103 -0
  58. package/templates/blog/app/composables/usePageSeo.ts +50 -0
  59. package/templates/blog/app/composables/useSiteAppConfig.ts +79 -0
  60. package/templates/blog/app/error.vue +35 -0
  61. package/templates/blog/app/layouts/default.vue +23 -0
  62. package/templates/blog/app/lib/utils.ts +26 -0
  63. package/templates/blog/app/pages/about/[slug].vue +48 -0
  64. package/templates/blog/app/pages/index.vue +54 -0
  65. package/templates/blog/app/pages/legal/[slug].vue +46 -0
  66. package/templates/blog/app/pages/news/[slug].vue +94 -0
  67. package/templates/blog/app/pages/news/index.vue +54 -0
  68. package/templates/blog/app/pages/news/tags/[tag].vue +41 -0
  69. package/templates/blog/app/pages/team.vue +40 -0
  70. package/templates/blog/app/routes.ts +31 -0
  71. package/templates/blog/app/utils/telHref.ts +3 -0
  72. package/templates/blog/components.json +21 -0
  73. package/templates/blog/content/home.de.md +4 -0
  74. package/templates/blog/content/home.md +4 -0
  75. package/templates/blog/content/legal/1.privacy.de.md +30 -0
  76. package/templates/blog/content/legal/1.privacy.md +30 -0
  77. package/templates/blog/content/legal/2.terms.de.md +22 -0
  78. package/templates/blog/content/legal/2.terms.md +23 -0
  79. package/templates/blog/content/legal/3.imprint.de.md +14 -0
  80. package/templates/blog/content/legal/3.imprint.md +15 -0
  81. package/templates/blog/content/notices/1.sample.de.md +3 -0
  82. package/templates/blog/content/notices/1.sample.md +4 -0
  83. package/templates/blog/content/people/1.ida-wren.de.md +4 -0
  84. package/templates/blog/content/people/1.ida-wren.md +5 -0
  85. package/templates/blog/content/people/2.tom-marsh.de.md +4 -0
  86. package/templates/blog/content/people/2.tom-marsh.md +5 -0
  87. package/templates/blog/content/posts/counting-street-trees.de.md +24 -0
  88. package/templates/blog/content/posts/counting-street-trees.md +25 -0
  89. package/templates/blog/content/posts/forest-at-the-end-of-the-line.de.md +26 -0
  90. package/templates/blog/content/posts/forest-at-the-end-of-the-line.md +28 -0
  91. package/templates/blog/content/posts/lichen-on-the-old-bridge.de.md +11 -0
  92. package/templates/blog/content/posts/lichen-on-the-old-bridge.md +14 -0
  93. package/templates/blog/content/posts/owls-in-the-old-cemetery.de.md +22 -0
  94. package/templates/blog/content/posts/owls-in-the-old-cemetery.md +23 -0
  95. package/templates/blog/content/posts/rock-pools-at-low-tide.de.md +25 -0
  96. package/templates/blog/content/posts/rock-pools-at-low-tide.md +26 -0
  97. package/templates/blog/content/posts/rock-pools.jpg +0 -0
  98. package/templates/blog/content/posts/swifts-over-the-car-park.de.md +22 -0
  99. package/templates/blog/content/posts/swifts-over-the-car-park.md +23 -0
  100. package/templates/blog/content/posts/ten-minute-notebook.de.md +36 -0
  101. package/templates/blog/content/posts/ten-minute-notebook.md +38 -0
  102. package/templates/blog/content/posts/why-we-keep-field-notes.de.md +24 -0
  103. package/templates/blog/content/posts/why-we-keep-field-notes.md +25 -0
  104. package/templates/blog/content/posts/winter-birds-by-the-bike-shed.de.md +22 -0
  105. package/templates/blog/content/posts/winter-birds-by-the-bike-shed.md +23 -0
  106. package/templates/blog/content/site.md +4 -0
  107. package/templates/blog/eslint.config.mjs +12 -0
  108. package/templates/blog/eslint.tailwind.mjs +33 -0
  109. package/templates/blog/ginko.config.ts +59 -0
  110. package/templates/blog/gitignore +7 -0
  111. package/templates/blog/i18n/blog/de.json +18 -0
  112. package/templates/blog/i18n/blog/en.json +18 -0
  113. package/templates/blog/i18n/de.json +31 -0
  114. package/templates/blog/i18n/en.json +27 -0
  115. package/templates/blog/i18n/people/de.json +6 -0
  116. package/templates/blog/i18n/people/en.json +6 -0
  117. package/templates/blog/i18n/site/de.json +39 -0
  118. package/templates/blog/i18n/site/en.json +39 -0
  119. package/templates/blog/modules/feature-messages.ts +19 -0
  120. package/templates/blog/modules/feeds/index.ts +22 -0
  121. package/templates/blog/modules/feeds/routes.ts +13 -0
  122. package/templates/blog/modules/page-paths/index.ts +26 -0
  123. package/templates/blog/modules/page-paths/paths.ts +48 -0
  124. package/templates/blog/nuxt.config.ts +27 -0
  125. package/templates/blog/package.json +57 -0
  126. package/templates/blog/pnpm-workspace.yaml +6 -0
  127. package/templates/blog/public/media/forest-path.jpg +0 -0
  128. package/templates/blog/public/media/notebook.jpg +0 -0
  129. package/templates/blog/server/middleware/news-feed.ts +37 -0
  130. package/templates/blog/server/plugins/font-preload.ts +17 -0
  131. package/templates/blog/site-url.ts +21 -0
  132. package/templates/blog/tsconfig.json +9 -0
  133. package/templates/blog.json +11 -0
  134. package/templates/company/.env.example +8 -0
  135. package/templates/company/.github/screenshots/home-dark.png +0 -0
  136. package/templates/company/.github/screenshots/home-light.png +0 -0
  137. package/templates/company/.github/workflows/ci.yml +27 -0
  138. package/templates/company/DESIGN.md +197 -0
  139. package/templates/company/LICENSE +21 -0
  140. package/templates/company/MEDIA.md +32 -0
  141. package/templates/company/NOTES.md +19 -0
  142. package/templates/company/README.md +254 -0
  143. package/templates/company/app/app.config.ts +33 -0
  144. package/templates/company/app/app.vue +7 -0
  145. package/templates/company/app/assets/css/main.css +22 -0
  146. package/templates/company/app/assets/css/tokens.css +400 -0
  147. package/templates/company/app/bricks/logos-quotes.ts +47 -0
  148. package/templates/company/app/bricks/pages.ts +38 -0
  149. package/templates/company/app/bricks/services.ts +64 -0
  150. package/templates/company/app/components/InitialsAvatar.vue +18 -0
  151. package/templates/company/app/components/ProseBody.vue +13 -0
  152. package/templates/company/app/components/ServiceLine.vue +15 -0
  153. package/templates/company/app/components/block/Cards.vue +54 -0
  154. package/templates/company/app/components/block/Cta.vue +26 -0
  155. package/templates/company/app/components/block/Empty.vue +26 -0
  156. package/templates/company/app/components/block/Features.vue +24 -0
  157. package/templates/company/app/components/block/Hero.vue +47 -0
  158. package/templates/company/app/components/block/Logos.vue +22 -0
  159. package/templates/company/app/components/block/PageHeader.vue +21 -0
  160. package/templates/company/app/components/block/Quote.vue +19 -0
  161. package/templates/company/app/components/block/Section.vue +31 -0
  162. package/templates/company/app/components/blog/Byline.vue +22 -0
  163. package/templates/company/app/components/blog/PostList.vue +33 -0
  164. package/templates/company/app/components/blog/TagList.vue +17 -0
  165. package/templates/company/app/components/downloads/FileButton.vue +21 -0
  166. package/templates/company/app/components/downloads/List.vue +37 -0
  167. package/templates/company/app/components/event/Upcoming.vue +25 -0
  168. package/templates/company/app/components/jobs/List.vue +26 -0
  169. package/templates/company/app/components/people/List.vue +41 -0
  170. package/templates/company/app/components/people/TeamContact.vue +37 -0
  171. package/templates/company/app/components/site/Contact.vue +38 -0
  172. package/templates/company/app/components/site/Footer.vue +81 -0
  173. package/templates/company/app/components/site/Header.vue +52 -0
  174. package/templates/company/app/components/site/LanguageSwitch.vue +34 -0
  175. package/templates/company/app/components/site/Logo.vue +17 -0
  176. package/templates/company/app/components/site/NavLink.vue +19 -0
  177. package/templates/company/app/components/site/NavSheet.vue +63 -0
  178. package/templates/company/app/components/site/Notice.vue +21 -0
  179. package/templates/company/app/components/site/SkipLink.vue +15 -0
  180. package/templates/company/app/components/site/ThemeToggle.vue +28 -0
  181. package/templates/company/app/components/ui/button/Button.vue +30 -0
  182. package/templates/company/app/components/ui/button/index.ts +44 -0
  183. package/templates/company/app/components/ui/sheet/Sheet.vue +16 -0
  184. package/templates/company/app/components/ui/sheet/SheetClose.vue +13 -0
  185. package/templates/company/app/components/ui/sheet/SheetContent.vue +54 -0
  186. package/templates/company/app/components/ui/sheet/SheetDescription.vue +23 -0
  187. package/templates/company/app/components/ui/sheet/SheetOverlay.vue +22 -0
  188. package/templates/company/app/components/ui/sheet/SheetTitle.vue +23 -0
  189. package/templates/company/app/components/ui/sheet/SheetTrigger.vue +13 -0
  190. package/templates/company/app/components/ui/sheet/index.ts +7 -0
  191. package/templates/company/app/composables/useBlog.ts +103 -0
  192. package/templates/company/app/composables/useDownloads.ts +54 -0
  193. package/templates/company/app/composables/useEvents.ts +182 -0
  194. package/templates/company/app/composables/useJobs.ts +108 -0
  195. package/templates/company/app/composables/usePageSeo.ts +50 -0
  196. package/templates/company/app/composables/useServiceLine.ts +10 -0
  197. package/templates/company/app/composables/useServices.ts +93 -0
  198. package/templates/company/app/composables/useSiteAppConfig.ts +79 -0
  199. package/templates/company/app/error.vue +35 -0
  200. package/templates/company/app/layouts/default.vue +23 -0
  201. package/templates/company/app/lib/utils.ts +26 -0
  202. package/templates/company/app/pages/[...slug].vue +36 -0
  203. package/templates/company/app/pages/downloads.vue +20 -0
  204. package/templates/company/app/pages/events/[slug].vue +106 -0
  205. package/templates/company/app/pages/events/index.vue +20 -0
  206. package/templates/company/app/pages/index.vue +84 -0
  207. package/templates/company/app/pages/jobs/[slug].vue +63 -0
  208. package/templates/company/app/pages/jobs/index.vue +36 -0
  209. package/templates/company/app/pages/legal/[slug].vue +46 -0
  210. package/templates/company/app/pages/news/[slug].vue +94 -0
  211. package/templates/company/app/pages/news/index.vue +54 -0
  212. package/templates/company/app/pages/news/tags/[tag].vue +41 -0
  213. package/templates/company/app/pages/services/[slug].vue +90 -0
  214. package/templates/company/app/pages/services/index.vue +18 -0
  215. package/templates/company/app/pages/team.vue +40 -0
  216. package/templates/company/app/routes.ts +33 -0
  217. package/templates/company/app/utils/telHref.ts +3 -0
  218. package/templates/company/components.json +21 -0
  219. package/templates/company/content/downloads/hk-centrifugal-pumps.de.md +4 -0
  220. package/templates/company/content/downloads/hk-centrifugal-pumps.md +7 -0
  221. package/templates/company/content/downloads/pumping-stations.de.md +4 -0
  222. package/templates/company/content/downloads/pumping-stations.md +7 -0
  223. package/templates/company/content/downloads/ts-submersible-pumps.de.md +4 -0
  224. package/templates/company/content/downloads/ts-submersible-pumps.md +7 -0
  225. package/templates/company/content/events/1.municipal-water-forum.de.md +9 -0
  226. package/templates/company/content/events/1.municipal-water-forum.md +14 -0
  227. package/templates/company/content/events/2.pump-days-north.de.md +7 -0
  228. package/templates/company/content/events/2.pump-days-north.md +12 -0
  229. package/templates/company/content/events/3.industrial-water-expo.de.md +7 -0
  230. package/templates/company/content/events/3.industrial-water-expo.md +12 -0
  231. package/templates/company/content/home.de.md +6 -0
  232. package/templates/company/content/home.md +7 -0
  233. package/templates/company/content/jobs/apprenticeship-industrial-mechanic.de.md +22 -0
  234. package/templates/company/content/jobs/apprenticeship-industrial-mechanic.md +26 -0
  235. package/templates/company/content/jobs/sales-engineer.de.md +25 -0
  236. package/templates/company/content/jobs/sales-engineer.md +29 -0
  237. package/templates/company/content/jobs/service-technician.de.md +25 -0
  238. package/templates/company/content/jobs/service-technician.md +29 -0
  239. package/templates/company/content/jobs/summer-internship-assembly.de.md +8 -0
  240. package/templates/company/content/jobs/summer-internship-assembly.md +14 -0
  241. package/templates/company/content/legal/1.privacy.de.md +18 -0
  242. package/templates/company/content/legal/1.privacy.md +20 -0
  243. package/templates/company/content/legal/2.terms.de.md +19 -0
  244. package/templates/company/content/legal/2.terms.md +21 -0
  245. package/templates/company/content/legal/3.imprint.de.md +16 -0
  246. package/templates/company/content/legal/3.imprint.md +18 -0
  247. package/templates/company/content/logos/1.public-works.md +6 -0
  248. package/templates/company/content/logos/2.water-board.md +6 -0
  249. package/templates/company/content/logos/3.brewery.md +6 -0
  250. package/templates/company/content/logos/4.treatment-works.md +6 -0
  251. package/templates/company/content/notices/1.municipal-water-forum.de.md +3 -0
  252. package/templates/company/content/notices/1.municipal-water-forum.md +4 -0
  253. package/templates/company/content/pages/1.about.de.md +19 -0
  254. package/templates/company/content/pages/1.about.md +20 -0
  255. package/templates/company/content/people/1.katrin-albers.de.md +4 -0
  256. package/templates/company/content/people/1.katrin-albers.md +7 -0
  257. package/templates/company/content/people/2.tobias-brandt.de.md +4 -0
  258. package/templates/company/content/people/2.tobias-brandt.md +7 -0
  259. package/templates/company/content/people/3.miriam-ostendorf.de.md +4 -0
  260. package/templates/company/content/people/3.miriam-ostendorf.md +7 -0
  261. package/templates/company/content/people/4.sabine-krueger.de.md +4 -0
  262. package/templates/company/content/people/4.sabine-krueger.md +7 -0
  263. package/templates/company/content/posts/apprentices-start.de.md +12 -0
  264. package/templates/company/content/posts/apprentices-start.md +14 -0
  265. package/templates/company/content/posts/saturday-service.de.md +12 -0
  266. package/templates/company/content/posts/saturday-service.md +14 -0
  267. package/templates/company/content/posts/treatment-works-pumps.de.md +20 -0
  268. package/templates/company/content/posts/treatment-works-pumps.md +23 -0
  269. package/templates/company/content/posts/ts-pumps-atex.de.md +12 -0
  270. package/templates/company/content/posts/ts-pumps-atex.md +14 -0
  271. package/templates/company/content/quotes/1.public-works.de.md +4 -0
  272. package/templates/company/content/quotes/1.public-works.md +5 -0
  273. package/templates/company/content/quotes/2.brewery.de.md +4 -0
  274. package/templates/company/content/quotes/2.brewery.md +5 -0
  275. package/templates/company/content/serviceLine.de.md +3 -0
  276. package/templates/company/content/serviceLine.md +5 -0
  277. package/templates/company/content/services/1.hk-centrifugal-pumps.de.md +31 -0
  278. package/templates/company/content/services/1.hk-centrifugal-pumps.md +35 -0
  279. package/templates/company/content/services/2.ts-submersible-pumps.de.md +26 -0
  280. package/templates/company/content/services/2.ts-submersible-pumps.md +30 -0
  281. package/templates/company/content/services/3.pumping-stations.de.md +29 -0
  282. package/templates/company/content/services/3.pumping-stations.md +33 -0
  283. package/templates/company/content/services/4.pump-check.de.md +25 -0
  284. package/templates/company/content/services/4.pump-check.md +30 -0
  285. package/templates/company/content/services/5.repair-and-overhaul.de.md +20 -0
  286. package/templates/company/content/services/5.repair-and-overhaul.md +23 -0
  287. package/templates/company/content/site.de.md +3 -0
  288. package/templates/company/content/site.md +12 -0
  289. package/templates/company/eslint.config.mjs +12 -0
  290. package/templates/company/eslint.tailwind.mjs +33 -0
  291. package/templates/company/ginko.config.ts +98 -0
  292. package/templates/company/gitignore +7 -0
  293. package/templates/company/i18n/blog/de.json +18 -0
  294. package/templates/company/i18n/blog/en.json +18 -0
  295. package/templates/company/i18n/de.json +60 -0
  296. package/templates/company/i18n/downloads/de.json +6 -0
  297. package/templates/company/i18n/downloads/en.json +6 -0
  298. package/templates/company/i18n/en.json +58 -0
  299. package/templates/company/i18n/events/de.json +20 -0
  300. package/templates/company/i18n/events/en.json +20 -0
  301. package/templates/company/i18n/jobs/de.json +35 -0
  302. package/templates/company/i18n/jobs/en.json +35 -0
  303. package/templates/company/i18n/people/de.json +6 -0
  304. package/templates/company/i18n/people/en.json +6 -0
  305. package/templates/company/i18n/services/de.json +20 -0
  306. package/templates/company/i18n/services/en.json +20 -0
  307. package/templates/company/i18n/site/de.json +39 -0
  308. package/templates/company/i18n/site/en.json +39 -0
  309. package/templates/company/modules/feature-messages.ts +19 -0
  310. package/templates/company/modules/feeds/index.ts +22 -0
  311. package/templates/company/modules/feeds/routes.ts +13 -0
  312. package/templates/company/modules/page-paths/index.ts +26 -0
  313. package/templates/company/modules/page-paths/paths.ts +48 -0
  314. package/templates/company/nuxt.config.ts +29 -0
  315. package/templates/company/package.json +64 -0
  316. package/templates/company/pnpm-workspace.yaml +6 -0
  317. package/templates/company/public/logos/customer-four.svg +6 -0
  318. package/templates/company/public/logos/customer-one.svg +5 -0
  319. package/templates/company/public/logos/customer-three.svg +5 -0
  320. package/templates/company/public/logos/customer-two.svg +4 -0
  321. package/templates/company/public/media/pipework.jpg +0 -0
  322. package/templates/company/public/media/process-pumps.jpg +0 -0
  323. package/templates/company/public/media/pump-check.jpg +0 -0
  324. package/templates/company/public/media/treatment-works.jpg +0 -0
  325. package/templates/company/public/media/works-hall.jpg +0 -0
  326. package/templates/company/public/sheets/hk-centrifugal-pumps.pdf +0 -0
  327. package/templates/company/public/sheets/pumping-stations.pdf +0 -0
  328. package/templates/company/public/sheets/ts-submersible-pumps.pdf +0 -0
  329. package/templates/company/server/middleware/news-feed.ts +37 -0
  330. package/templates/company/server/plugins/font-preload.ts +17 -0
  331. package/templates/company/site-url.ts +21 -0
  332. package/templates/company/tsconfig.json +9 -0
  333. package/templates/company.json +18 -0
  334. package/templates/docs/.env.example +9 -0
  335. package/templates/docs/.github/screenshots/home-light.png +0 -0
  336. package/templates/docs/.github/screenshots/page-dark.png +0 -0
  337. package/templates/docs/.github/workflows/ci.yml +27 -0
  338. package/templates/docs/DESIGN.md +77 -0
  339. package/templates/docs/LICENSE +21 -0
  340. package/templates/docs/MEDIA.md +14 -0
  341. package/templates/docs/NOTES.md +18 -0
  342. package/templates/docs/README.md +255 -0
  343. package/templates/docs/app/app.config.ts +26 -0
  344. package/templates/docs/app/assets/css/main.css +14 -0
  345. package/templates/docs/content/changelog/v1-6-0.de.md +13 -0
  346. package/templates/docs/content/changelog/v1-6-0.md +18 -0
  347. package/templates/docs/content/changelog/v2-0-0.de.md +14 -0
  348. package/templates/docs/content/changelog/v2-0-0.md +19 -0
  349. package/templates/docs/content/changelog/v2-1-0.de.md +9 -0
  350. package/templates/docs/content/changelog/v2-1-0.md +14 -0
  351. package/templates/docs/content/docs/1.introduction.de.md +32 -0
  352. package/templates/docs/content/docs/1.introduction.md +31 -0
  353. package/templates/docs/content/docs/10.incidents-and-checks.de.md +82 -0
  354. package/templates/docs/content/docs/10.incidents-and-checks.md +81 -0
  355. package/templates/docs/content/docs/11.error-codes.de.md +36 -0
  356. package/templates/docs/content/docs/11.error-codes.md +35 -0
  357. package/templates/docs/content/docs/2.getting-started.de.md +57 -0
  358. package/templates/docs/content/docs/2.getting-started.md +56 -0
  359. package/templates/docs/content/docs/3.authentication.de.md +55 -0
  360. package/templates/docs/content/docs/3.authentication.md +54 -0
  361. package/templates/docs/content/docs/4.pagination.de.md +45 -0
  362. package/templates/docs/content/docs/4.pagination.md +44 -0
  363. package/templates/docs/content/docs/5.errors-and-retries.de.md +69 -0
  364. package/templates/docs/content/docs/5.errors-and-retries.md +66 -0
  365. package/templates/docs/content/docs/6.webhooks.de.md +53 -0
  366. package/templates/docs/content/docs/6.webhooks.md +52 -0
  367. package/templates/docs/content/docs/7.upgrading-to-v2.md +73 -0
  368. package/templates/docs/content/docs/8.client.de.md +57 -0
  369. package/templates/docs/content/docs/8.client.md +56 -0
  370. package/templates/docs/content/docs/9.monitors.de.md +96 -0
  371. package/templates/docs/content/docs/9.monitors.md +95 -0
  372. package/templates/docs/content/home.de.md +47 -0
  373. package/templates/docs/content/home.md +54 -0
  374. package/templates/docs/eslint.config.mjs +7 -0
  375. package/templates/docs/ginko.config.ts +36 -0
  376. package/templates/docs/gitignore +7 -0
  377. package/templates/docs/i18n/de.json +5 -0
  378. package/templates/docs/i18n/en.json +5 -0
  379. package/templates/docs/nuxt.config.ts +18 -0
  380. package/templates/docs/package.json +42 -0
  381. package/templates/docs/pnpm-workspace.yaml +6 -0
  382. package/templates/docs/public/favicon.svg +1 -0
  383. package/templates/docs/public/logo-dark.svg +1 -0
  384. package/templates/docs/public/logo.svg +1 -0
  385. package/templates/docs/site-url.ts +21 -0
  386. package/templates/docs/tsconfig.json +9 -0
  387. package/templates/docs.json +7 -0
  388. package/templates/events/.env.example +8 -0
  389. package/templates/events/.github/screenshots/home-dark.png +0 -0
  390. package/templates/events/.github/screenshots/home-light.png +0 -0
  391. package/templates/events/.github/workflows/ci.yml +27 -0
  392. package/templates/events/DESIGN.md +197 -0
  393. package/templates/events/LICENSE +21 -0
  394. package/templates/events/MEDIA.md +32 -0
  395. package/templates/events/NOTES.md +13 -0
  396. package/templates/events/README.md +247 -0
  397. package/templates/events/app/app.config.ts +30 -0
  398. package/templates/events/app/app.vue +7 -0
  399. package/templates/events/app/assets/css/main.css +22 -0
  400. package/templates/events/app/assets/css/tokens.css +400 -0
  401. package/templates/events/app/bricks/logos-quotes.ts +47 -0
  402. package/templates/events/app/bricks/pages.ts +38 -0
  403. package/templates/events/app/components/InitialsAvatar.vue +18 -0
  404. package/templates/events/app/components/ProseBody.vue +13 -0
  405. package/templates/events/app/components/block/Cards.vue +54 -0
  406. package/templates/events/app/components/block/Cta.vue +26 -0
  407. package/templates/events/app/components/block/Empty.vue +26 -0
  408. package/templates/events/app/components/block/Faq.vue +19 -0
  409. package/templates/events/app/components/block/Features.vue +24 -0
  410. package/templates/events/app/components/block/Gallery.vue +81 -0
  411. package/templates/events/app/components/block/Hero.vue +47 -0
  412. package/templates/events/app/components/block/Logos.vue +22 -0
  413. package/templates/events/app/components/block/PageHeader.vue +21 -0
  414. package/templates/events/app/components/block/Quote.vue +19 -0
  415. package/templates/events/app/components/block/Section.vue +31 -0
  416. package/templates/events/app/components/event/Programme.vue +16 -0
  417. package/templates/events/app/components/event/Upcoming.vue +25 -0
  418. package/templates/events/app/components/pages/Top.vue +11 -0
  419. package/templates/events/app/components/session/NowNext.vue +54 -0
  420. package/templates/events/app/components/session/Programme.vue +40 -0
  421. package/templates/events/app/components/session/Row.vue +61 -0
  422. package/templates/events/app/components/session/Speakers.vue +28 -0
  423. package/templates/events/app/components/site/Contact.vue +38 -0
  424. package/templates/events/app/components/site/Footer.vue +81 -0
  425. package/templates/events/app/components/site/Header.vue +52 -0
  426. package/templates/events/app/components/site/LanguageSwitch.vue +34 -0
  427. package/templates/events/app/components/site/Lightbox.vue +62 -0
  428. package/templates/events/app/components/site/Logo.vue +17 -0
  429. package/templates/events/app/components/site/NavLink.vue +19 -0
  430. package/templates/events/app/components/site/NavSheet.vue +63 -0
  431. package/templates/events/app/components/site/Notice.vue +21 -0
  432. package/templates/events/app/components/site/SkipLink.vue +15 -0
  433. package/templates/events/app/components/site/ThemeToggle.vue +28 -0
  434. package/templates/events/app/components/ui/accordion/Accordion.vue +16 -0
  435. package/templates/events/app/components/ui/accordion/AccordionContent.vue +26 -0
  436. package/templates/events/app/components/ui/accordion/AccordionItem.vue +24 -0
  437. package/templates/events/app/components/ui/accordion/AccordionTrigger.vue +35 -0
  438. package/templates/events/app/components/ui/accordion/index.ts +5 -0
  439. package/templates/events/app/components/ui/button/Button.vue +30 -0
  440. package/templates/events/app/components/ui/button/index.ts +44 -0
  441. package/templates/events/app/components/ui/sheet/Sheet.vue +16 -0
  442. package/templates/events/app/components/ui/sheet/SheetClose.vue +13 -0
  443. package/templates/events/app/components/ui/sheet/SheetContent.vue +54 -0
  444. package/templates/events/app/components/ui/sheet/SheetDescription.vue +23 -0
  445. package/templates/events/app/components/ui/sheet/SheetOverlay.vue +22 -0
  446. package/templates/events/app/components/ui/sheet/SheetTitle.vue +23 -0
  447. package/templates/events/app/components/ui/sheet/SheetTrigger.vue +13 -0
  448. package/templates/events/app/components/ui/sheet/index.ts +7 -0
  449. package/templates/events/app/composables/useEvents.ts +182 -0
  450. package/templates/events/app/composables/usePageSeo.ts +50 -0
  451. package/templates/events/app/composables/useSessions.ts +111 -0
  452. package/templates/events/app/composables/useSiteAppConfig.ts +79 -0
  453. package/templates/events/app/error.vue +35 -0
  454. package/templates/events/app/layouts/default.vue +23 -0
  455. package/templates/events/app/lib/utils.ts +26 -0
  456. package/templates/events/app/pages/[...slug].vue +36 -0
  457. package/templates/events/app/pages/events/[slug].vue +106 -0
  458. package/templates/events/app/pages/events/index.vue +20 -0
  459. package/templates/events/app/pages/faq.vue +39 -0
  460. package/templates/events/app/pages/index.vue +134 -0
  461. package/templates/events/app/pages/legal/[slug].vue +46 -0
  462. package/templates/events/app/pages/programme.vue +42 -0
  463. package/templates/events/app/pages/speakers/[slug].vue +62 -0
  464. package/templates/events/app/pages/speakers/index.vue +31 -0
  465. package/templates/events/app/routes.ts +31 -0
  466. package/templates/events/app/utils/sessions.ts +64 -0
  467. package/templates/events/app/utils/telHref.ts +3 -0
  468. package/templates/events/components.json +21 -0
  469. package/templates/events/content/events/1.open-data-days.de.md +9 -0
  470. package/templates/events/content/events/1.open-data-days.md +19 -0
  471. package/templates/events/content/events/2.open-data-meetup.de.md +7 -0
  472. package/templates/events/content/events/2.open-data-meetup.md +14 -0
  473. package/templates/events/content/events/3.last-edition.de.md +5 -0
  474. package/templates/events/content/events/3.last-edition.md +12 -0
  475. package/templates/events/content/events/4.next-edition.de.md +5 -0
  476. package/templates/events/content/events/4.next-edition.md +13 -0
  477. package/templates/events/content/faq/1.getting-there.de.md +4 -0
  478. package/templates/events/content/faq/1.getting-there.md +4 -0
  479. package/templates/events/content/faq/2.accessibility.de.md +4 -0
  480. package/templates/events/content/faq/2.accessibility.md +4 -0
  481. package/templates/events/content/faq/3.tickets.de.md +4 -0
  482. package/templates/events/content/faq/3.tickets.md +4 -0
  483. package/templates/events/content/faq/4.food.de.md +4 -0
  484. package/templates/events/content/faq/4.food.md +4 -0
  485. package/templates/events/content/faq/5.code-of-conduct.de.md +4 -0
  486. package/templates/events/content/faq/5.code-of-conduct.md +4 -0
  487. package/templates/events/content/faq/6.language.de.md +4 -0
  488. package/templates/events/content/faq/6.language.md +4 -0
  489. package/templates/events/content/faq/7.recordings.de.md +4 -0
  490. package/templates/events/content/faq/7.recordings.md +4 -0
  491. package/templates/events/content/faq/8.ticket-transfer.de.md +4 -0
  492. package/templates/events/content/faq/8.ticket-transfer.md +4 -0
  493. package/templates/events/content/gallery.de.md +9 -0
  494. package/templates/events/content/gallery.md +12 -0
  495. package/templates/events/content/home.de.md +6 -0
  496. package/templates/events/content/home.md +7 -0
  497. package/templates/events/content/legal/1.privacy.de.md +19 -0
  498. package/templates/events/content/legal/1.privacy.md +20 -0
  499. package/templates/events/content/legal/2.terms.de.md +19 -0
  500. package/templates/events/content/legal/2.terms.md +20 -0
  501. package/templates/events/content/legal/3.imprint.de.md +19 -0
  502. package/templates/events/content/legal/3.imprint.md +20 -0
  503. package/templates/events/content/logos/1.kaltenegger-it.md +6 -0
  504. package/templates/events/content/logos/2.nordlicht-hosting.md +6 -0
  505. package/templates/events/content/logos/3.hallgarten-stiftung.md +6 -0
  506. package/templates/events/content/logos/4.kanalcafe.md +6 -0
  507. package/templates/events/content/notices/1.ticket-sales.de.md +3 -0
  508. package/templates/events/content/notices/1.ticket-sales.md +4 -0
  509. package/templates/events/content/pages/1.venue.de.md +36 -0
  510. package/templates/events/content/pages/1.venue.md +37 -0
  511. package/templates/events/content/pages/2.code-of-conduct.de.md +25 -0
  512. package/templates/events/content/pages/2.code-of-conduct.md +25 -0
  513. package/templates/events/content/pages/3.sponsoring.de.md +17 -0
  514. package/templates/events/content/pages/3.sponsoring.md +17 -0
  515. package/templates/events/content/people/1.lena-hofer.de.md +4 -0
  516. package/templates/events/content/people/1.lena-hofer.md +6 -0
  517. package/templates/events/content/people/2.tobias-wagner.de.md +4 -0
  518. package/templates/events/content/people/2.tobias-wagner.md +6 -0
  519. package/templates/events/content/people/3.amira-haddad.de.md +4 -0
  520. package/templates/events/content/people/3.amira-haddad.md +6 -0
  521. package/templates/events/content/people/4.jonas-leitner.de.md +4 -0
  522. package/templates/events/content/people/4.jonas-leitner.md +6 -0
  523. package/templates/events/content/people/5.sophie-brunner.de.md +4 -0
  524. package/templates/events/content/people/5.sophie-brunner.md +6 -0
  525. package/templates/events/content/people/6.david-okafor.de.md +4 -0
  526. package/templates/events/content/people/6.david-okafor.md +6 -0
  527. package/templates/events/content/people/7.katrin-moser.de.md +4 -0
  528. package/templates/events/content/people/7.katrin-moser.md +6 -0
  529. package/templates/events/content/people/8.nina-pichler.de.md +4 -0
  530. package/templates/events/content/people/8.nina-pichler.md +6 -0
  531. package/templates/events/content/people/9.felix-gruber.de.md +3 -0
  532. package/templates/events/content/people/9.felix-gruber.md +5 -0
  533. package/templates/events/content/sessions/balcony-sensors.de.md +4 -0
  534. package/templates/events/content/sessions/balcony-sensors.md +10 -0
  535. package/templates/events/content/sessions/budget-stories.de.md +4 -0
  536. package/templates/events/content/sessions/budget-stories.md +11 -0
  537. package/templates/events/content/sessions/closing.de.md +4 -0
  538. package/templates/events/content/sessions/closing.md +11 -0
  539. package/templates/events/content/sessions/doors-open.de.md +3 -0
  540. package/templates/events/content/sessions/doors-open.md +9 -0
  541. package/templates/events/content/sessions/honest-charts.de.md +4 -0
  542. package/templates/events/content/sessions/honest-charts.md +11 -0
  543. package/templates/events/content/sessions/keynote-city.de.md +4 -0
  544. package/templates/events/content/sessions/keynote-city.md +11 -0
  545. package/templates/events/content/sessions/lightning-talks.de.md +4 -0
  546. package/templates/events/content/sessions/lightning-talks.md +10 -0
  547. package/templates/events/content/sessions/lunch-1.de.md +3 -0
  548. package/templates/events/content/sessions/lunch-1.md +9 -0
  549. package/templates/events/content/sessions/lunch-2.de.md +3 -0
  550. package/templates/events/content/sessions/lunch-2.md +9 -0
  551. package/templates/events/content/sessions/next-edition-keynote.de.md +3 -0
  552. package/templates/events/content/sessions/next-edition-keynote.md +9 -0
  553. package/templates/events/content/sessions/open-data-schools.de.md +4 -0
  554. package/templates/events/content/sessions/open-data-schools.md +11 -0
  555. package/templates/events/content/sessions/open-statistics.de.md +4 -0
  556. package/templates/events/content/sessions/open-statistics.md +11 -0
  557. package/templates/events/content/sessions/panel-who-pays.de.md +4 -0
  558. package/templates/events/content/sessions/panel-who-pays.md +11 -0
  559. package/templates/events/content/sessions/privacy-line.de.md +4 -0
  560. package/templates/events/content/sessions/privacy-line.md +11 -0
  561. package/templates/events/content/sessions/readable-metadata.de.md +4 -0
  562. package/templates/events/content/sessions/readable-metadata.md +11 -0
  563. package/templates/events/content/sessions/transport-data.de.md +4 -0
  564. package/templates/events/content/sessions/transport-data.md +11 -0
  565. package/templates/events/content/sessions/welcome.de.md +3 -0
  566. package/templates/events/content/sessions/welcome.md +10 -0
  567. package/templates/events/content/sessions/workshop-charts.de.md +4 -0
  568. package/templates/events/content/sessions/workshop-charts.md +11 -0
  569. package/templates/events/content/sessions/workshop-clean-data.de.md +4 -0
  570. package/templates/events/content/sessions/workshop-clean-data.md +11 -0
  571. package/templates/events/content/sessions/workshop-portal.de.md +4 -0
  572. package/templates/events/content/sessions/workshop-portal.md +11 -0
  573. package/templates/events/content/site.md +10 -0
  574. package/templates/events/eslint.config.mjs +12 -0
  575. package/templates/events/eslint.tailwind.mjs +33 -0
  576. package/templates/events/ginko.config.ts +75 -0
  577. package/templates/events/gitignore +7 -0
  578. package/templates/events/i18n/de.json +37 -0
  579. package/templates/events/i18n/en.json +37 -0
  580. package/templates/events/i18n/events/de.json +20 -0
  581. package/templates/events/i18n/events/en.json +20 -0
  582. package/templates/events/i18n/faq/de.json +6 -0
  583. package/templates/events/i18n/faq/en.json +6 -0
  584. package/templates/events/i18n/gallery/de.json +8 -0
  585. package/templates/events/i18n/gallery/en.json +8 -0
  586. package/templates/events/i18n/sessions/de.json +33 -0
  587. package/templates/events/i18n/sessions/en.json +33 -0
  588. package/templates/events/i18n/site/de.json +39 -0
  589. package/templates/events/i18n/site/en.json +39 -0
  590. package/templates/events/modules/feature-messages.ts +19 -0
  591. package/templates/events/modules/feeds/index.ts +22 -0
  592. package/templates/events/modules/feeds/routes.ts +13 -0
  593. package/templates/events/modules/page-paths/index.ts +26 -0
  594. package/templates/events/modules/page-paths/paths.ts +48 -0
  595. package/templates/events/nuxt.config.ts +27 -0
  596. package/templates/events/package.json +61 -0
  597. package/templates/events/pnpm-workspace.yaml +6 -0
  598. package/templates/events/public/logos/hallgarten-stiftung.svg +4 -0
  599. package/templates/events/public/logos/kaltenegger-it.svg +4 -0
  600. package/templates/events/public/logos/kanalcafe.svg +4 -0
  601. package/templates/events/public/logos/nordlicht-hosting.svg +4 -0
  602. package/templates/events/public/media/coffee-break.jpg +0 -0
  603. package/templates/events/public/media/hero.jpg +0 -0
  604. package/templates/events/public/media/talk.jpg +0 -0
  605. package/templates/events/public/media/venue.jpg +0 -0
  606. package/templates/events/public/media/workshop-tables.jpg +0 -0
  607. package/templates/events/server/plugins/font-preload.ts +17 -0
  608. package/templates/events/site-url.ts +21 -0
  609. package/templates/events/tsconfig.json +9 -0
  610. package/templates/events.json +18 -0
  611. package/templates/local-business/.env.example +8 -0
  612. package/templates/local-business/.github/screenshots/home-dark.png +0 -0
  613. package/templates/local-business/.github/screenshots/home-light.png +0 -0
  614. package/templates/local-business/.github/workflows/ci.yml +27 -0
  615. package/templates/local-business/DESIGN.md +197 -0
  616. package/templates/local-business/LICENSE +21 -0
  617. package/templates/local-business/MEDIA.md +27 -0
  618. package/templates/local-business/NOTES.md +31 -0
  619. package/templates/local-business/README.md +256 -0
  620. package/templates/local-business/app/app.config.ts +32 -0
  621. package/templates/local-business/app/app.vue +7 -0
  622. package/templates/local-business/app/assets/css/main.css +18 -0
  623. package/templates/local-business/app/assets/css/tokens.css +400 -0
  624. package/templates/local-business/app/bricks/pages.ts +38 -0
  625. package/templates/local-business/app/bricks/services.ts +64 -0
  626. package/templates/local-business/app/components/InitialsAvatar.vue +18 -0
  627. package/templates/local-business/app/components/ProseBody.vue +13 -0
  628. package/templates/local-business/app/components/block/Cards.vue +54 -0
  629. package/templates/local-business/app/components/block/Cta.vue +26 -0
  630. package/templates/local-business/app/components/block/Empty.vue +26 -0
  631. package/templates/local-business/app/components/block/Faq.vue +19 -0
  632. package/templates/local-business/app/components/block/Features.vue +24 -0
  633. package/templates/local-business/app/components/block/Gallery.vue +81 -0
  634. package/templates/local-business/app/components/block/Hero.vue +47 -0
  635. package/templates/local-business/app/components/block/PageHeader.vue +21 -0
  636. package/templates/local-business/app/components/block/Section.vue +31 -0
  637. package/templates/local-business/app/components/hours/Table.vue +119 -0
  638. package/templates/local-business/app/components/hours/Today.vue +55 -0
  639. package/templates/local-business/app/components/people/List.vue +41 -0
  640. package/templates/local-business/app/components/services/Actions.vue +18 -0
  641. package/templates/local-business/app/components/site/Contact.vue +38 -0
  642. package/templates/local-business/app/components/site/Footer.vue +81 -0
  643. package/templates/local-business/app/components/site/FooterStatus.vue +9 -0
  644. package/templates/local-business/app/components/site/Header.vue +52 -0
  645. package/templates/local-business/app/components/site/LanguageSwitch.vue +34 -0
  646. package/templates/local-business/app/components/site/Lightbox.vue +62 -0
  647. package/templates/local-business/app/components/site/Logo.vue +17 -0
  648. package/templates/local-business/app/components/site/NavLink.vue +19 -0
  649. package/templates/local-business/app/components/site/NavSheet.vue +63 -0
  650. package/templates/local-business/app/components/site/Notice.vue +21 -0
  651. package/templates/local-business/app/components/site/SkipLink.vue +15 -0
  652. package/templates/local-business/app/components/site/ThemeToggle.vue +28 -0
  653. package/templates/local-business/app/components/ui/accordion/Accordion.vue +16 -0
  654. package/templates/local-business/app/components/ui/accordion/AccordionContent.vue +26 -0
  655. package/templates/local-business/app/components/ui/accordion/AccordionItem.vue +24 -0
  656. package/templates/local-business/app/components/ui/accordion/AccordionTrigger.vue +35 -0
  657. package/templates/local-business/app/components/ui/accordion/index.ts +5 -0
  658. package/templates/local-business/app/components/ui/button/Button.vue +30 -0
  659. package/templates/local-business/app/components/ui/button/index.ts +44 -0
  660. package/templates/local-business/app/components/ui/sheet/Sheet.vue +16 -0
  661. package/templates/local-business/app/components/ui/sheet/SheetClose.vue +13 -0
  662. package/templates/local-business/app/components/ui/sheet/SheetContent.vue +54 -0
  663. package/templates/local-business/app/components/ui/sheet/SheetDescription.vue +23 -0
  664. package/templates/local-business/app/components/ui/sheet/SheetOverlay.vue +22 -0
  665. package/templates/local-business/app/components/ui/sheet/SheetTitle.vue +23 -0
  666. package/templates/local-business/app/components/ui/sheet/SheetTrigger.vue +13 -0
  667. package/templates/local-business/app/components/ui/sheet/index.ts +7 -0
  668. package/templates/local-business/app/components/visit/Book.vue +46 -0
  669. package/templates/local-business/app/composables/useHours.ts +81 -0
  670. package/templates/local-business/app/composables/usePageSeo.ts +50 -0
  671. package/templates/local-business/app/composables/useServices.ts +93 -0
  672. package/templates/local-business/app/composables/useSiteAppConfig.ts +79 -0
  673. package/templates/local-business/app/composables/useVisit.ts +19 -0
  674. package/templates/local-business/app/error.vue +35 -0
  675. package/templates/local-business/app/layouts/default.vue +23 -0
  676. package/templates/local-business/app/lib/utils.ts +26 -0
  677. package/templates/local-business/app/pages/[...slug].vue +36 -0
  678. package/templates/local-business/app/pages/contact.vue +62 -0
  679. package/templates/local-business/app/pages/faq.vue +39 -0
  680. package/templates/local-business/app/pages/index.vue +114 -0
  681. package/templates/local-business/app/pages/legal/[slug].vue +46 -0
  682. package/templates/local-business/app/pages/services/[slug].vue +90 -0
  683. package/templates/local-business/app/pages/services/index.vue +18 -0
  684. package/templates/local-business/app/pages/team.vue +40 -0
  685. package/templates/local-business/app/routes.ts +31 -0
  686. package/templates/local-business/app/utils/hours.ts +58 -0
  687. package/templates/local-business/app/utils/telHref.ts +3 -0
  688. package/templates/local-business/components.json +21 -0
  689. package/templates/local-business/content/faq/1.prescription.de.md +4 -0
  690. package/templates/local-business/content/faq/1.prescription.md +4 -0
  691. package/templates/local-business/content/faq/2.insurance.de.md +4 -0
  692. package/templates/local-business/content/faq/2.insurance.md +4 -0
  693. package/templates/local-business/content/faq/3.bring.de.md +4 -0
  694. package/templates/local-business/content/faq/3.bring.md +4 -0
  695. package/templates/local-business/content/faq/4.cancel.de.md +4 -0
  696. package/templates/local-business/content/faq/4.cancel.md +4 -0
  697. package/templates/local-business/content/faq/5.sessions.de.md +4 -0
  698. package/templates/local-business/content/faq/5.sessions.md +4 -0
  699. package/templates/local-business/content/faq/6.payment.de.md +4 -0
  700. package/templates/local-business/content/faq/6.payment.md +4 -0
  701. package/templates/local-business/content/gallery.de.md +7 -0
  702. package/templates/local-business/content/gallery.md +9 -0
  703. package/templates/local-business/content/home.de.md +5 -0
  704. package/templates/local-business/content/home.md +7 -0
  705. package/templates/local-business/content/hourPlans/1.summer-hours.de.md +3 -0
  706. package/templates/local-business/content/hourPlans/1.summer-hours.md +31 -0
  707. package/templates/local-business/content/hours.de.md +5 -0
  708. package/templates/local-business/content/hours.md +40 -0
  709. package/templates/local-business/content/legal/1.privacy.de.md +39 -0
  710. package/templates/local-business/content/legal/1.privacy.md +38 -0
  711. package/templates/local-business/content/legal/2.terms.de.md +22 -0
  712. package/templates/local-business/content/legal/2.terms.md +22 -0
  713. package/templates/local-business/content/legal/3.imprint.de.md +17 -0
  714. package/templates/local-business/content/legal/3.imprint.md +17 -0
  715. package/templates/local-business/content/notices/1.courtyard-works.de.md +3 -0
  716. package/templates/local-business/content/notices/1.courtyard-works.md +4 -0
  717. package/templates/local-business/content/pages/1.about.de.md +23 -0
  718. package/templates/local-business/content/pages/1.about.md +24 -0
  719. package/templates/local-business/content/people/1.anna-hofer.de.md +4 -0
  720. package/templates/local-business/content/people/1.anna-hofer.md +5 -0
  721. package/templates/local-business/content/people/2.lukas-brandstaetter.de.md +4 -0
  722. package/templates/local-business/content/people/2.lukas-brandstaetter.md +5 -0
  723. package/templates/local-business/content/people/3.mira-kovac.de.md +4 -0
  724. package/templates/local-business/content/people/3.mira-kovac.md +5 -0
  725. package/templates/local-business/content/people/4.elisabeth-gruber.de.md +4 -0
  726. package/templates/local-business/content/people/4.elisabeth-gruber.md +5 -0
  727. package/templates/local-business/content/services/1.physiotherapy.de.md +22 -0
  728. package/templates/local-business/content/services/1.physiotherapy.md +25 -0
  729. package/templates/local-business/content/services/2.manual-therapy.de.md +11 -0
  730. package/templates/local-business/content/services/2.manual-therapy.md +15 -0
  731. package/templates/local-business/content/services/3.sports-physiotherapy.de.md +18 -0
  732. package/templates/local-business/content/services/3.sports-physiotherapy.md +22 -0
  733. package/templates/local-business/content/services/4.lymphatic-drainage.de.md +18 -0
  734. package/templates/local-business/content/services/4.lymphatic-drainage.md +22 -0
  735. package/templates/local-business/content/services/5.massage.de.md +11 -0
  736. package/templates/local-business/content/services/5.massage.md +14 -0
  737. package/templates/local-business/content/services/6.home-visits.de.md +11 -0
  738. package/templates/local-business/content/services/6.home-visits.md +12 -0
  739. package/templates/local-business/content/site.de.md +3 -0
  740. package/templates/local-business/content/site.md +11 -0
  741. package/templates/local-business/content/visit.de.md +6 -0
  742. package/templates/local-business/content/visit.md +7 -0
  743. package/templates/local-business/eslint.config.mjs +12 -0
  744. package/templates/local-business/eslint.tailwind.mjs +33 -0
  745. package/templates/local-business/ginko.config.ts +97 -0
  746. package/templates/local-business/gitignore +7 -0
  747. package/templates/local-business/i18n/de.json +49 -0
  748. package/templates/local-business/i18n/en.json +49 -0
  749. package/templates/local-business/i18n/faq/de.json +6 -0
  750. package/templates/local-business/i18n/faq/en.json +6 -0
  751. package/templates/local-business/i18n/gallery/de.json +8 -0
  752. package/templates/local-business/i18n/gallery/en.json +8 -0
  753. package/templates/local-business/i18n/hours/de.json +27 -0
  754. package/templates/local-business/i18n/hours/en.json +27 -0
  755. package/templates/local-business/i18n/people/de.json +6 -0
  756. package/templates/local-business/i18n/people/en.json +6 -0
  757. package/templates/local-business/i18n/services/de.json +20 -0
  758. package/templates/local-business/i18n/services/en.json +20 -0
  759. package/templates/local-business/i18n/site/de.json +39 -0
  760. package/templates/local-business/i18n/site/en.json +39 -0
  761. package/templates/local-business/modules/feature-messages.ts +19 -0
  762. package/templates/local-business/modules/feeds/index.ts +22 -0
  763. package/templates/local-business/modules/feeds/routes.ts +13 -0
  764. package/templates/local-business/modules/page-paths/index.ts +26 -0
  765. package/templates/local-business/modules/page-paths/paths.ts +48 -0
  766. package/templates/local-business/nuxt.config.ts +29 -0
  767. package/templates/local-business/package.json +62 -0
  768. package/templates/local-business/pnpm-workspace.yaml +6 -0
  769. package/templates/local-business/public/media/massage.jpg +0 -0
  770. package/templates/local-business/public/media/treatment-room.jpg +0 -0
  771. package/templates/local-business/server/plugins/font-preload.ts +17 -0
  772. package/templates/local-business/site-url.ts +21 -0
  773. package/templates/local-business/tsconfig.json +9 -0
  774. package/templates/local-business.json +11 -0
  775. package/templates/nonprofit/.env.example +8 -0
  776. package/templates/nonprofit/.github/screenshots/home-dark.png +0 -0
  777. package/templates/nonprofit/.github/screenshots/home-light.png +0 -0
  778. package/templates/nonprofit/.github/workflows/ci.yml +27 -0
  779. package/templates/nonprofit/DESIGN.md +197 -0
  780. package/templates/nonprofit/LICENSE +21 -0
  781. package/templates/nonprofit/MEDIA.md +34 -0
  782. package/templates/nonprofit/NOTES.md +18 -0
  783. package/templates/nonprofit/README.md +227 -0
  784. package/templates/nonprofit/app/app.config.ts +34 -0
  785. package/templates/nonprofit/app/app.vue +7 -0
  786. package/templates/nonprofit/app/assets/css/main.css +35 -0
  787. package/templates/nonprofit/app/assets/css/tokens.css +400 -0
  788. package/templates/nonprofit/app/bricks/logos-quotes.ts +47 -0
  789. package/templates/nonprofit/app/bricks/pages.ts +38 -0
  790. package/templates/nonprofit/app/bricks/projects.ts +114 -0
  791. package/templates/nonprofit/app/components/InitialsAvatar.vue +18 -0
  792. package/templates/nonprofit/app/components/ProseBody.vue +13 -0
  793. package/templates/nonprofit/app/components/block/Cards.vue +54 -0
  794. package/templates/nonprofit/app/components/block/Cta.vue +26 -0
  795. package/templates/nonprofit/app/components/block/Empty.vue +26 -0
  796. package/templates/nonprofit/app/components/block/Features.vue +24 -0
  797. package/templates/nonprofit/app/components/block/Hero.vue +47 -0
  798. package/templates/nonprofit/app/components/block/Logos.vue +22 -0
  799. package/templates/nonprofit/app/components/block/PageHeader.vue +21 -0
  800. package/templates/nonprofit/app/components/block/Quote.vue +19 -0
  801. package/templates/nonprofit/app/components/block/Section.vue +31 -0
  802. package/templates/nonprofit/app/components/blog/Byline.vue +22 -0
  803. package/templates/nonprofit/app/components/blog/PostList.vue +33 -0
  804. package/templates/nonprofit/app/components/blog/TagList.vue +17 -0
  805. package/templates/nonprofit/app/components/downloads/FileButton.vue +21 -0
  806. package/templates/nonprofit/app/components/downloads/List.vue +37 -0
  807. package/templates/nonprofit/app/components/event/Next.vue +24 -0
  808. package/templates/nonprofit/app/components/event/Upcoming.vue +25 -0
  809. package/templates/nonprofit/app/components/pages/Top.vue +19 -0
  810. package/templates/nonprofit/app/components/people/List.vue +41 -0
  811. package/templates/nonprofit/app/components/people/TeamContact.vue +7 -0
  812. package/templates/nonprofit/app/components/site/Contact.vue +38 -0
  813. package/templates/nonprofit/app/components/site/Footer.vue +81 -0
  814. package/templates/nonprofit/app/components/site/Header.vue +52 -0
  815. package/templates/nonprofit/app/components/site/LanguageSwitch.vue +34 -0
  816. package/templates/nonprofit/app/components/site/Logo.vue +17 -0
  817. package/templates/nonprofit/app/components/site/NavLink.vue +19 -0
  818. package/templates/nonprofit/app/components/site/NavSheet.vue +63 -0
  819. package/templates/nonprofit/app/components/site/Notice.vue +21 -0
  820. package/templates/nonprofit/app/components/site/SkipLink.vue +15 -0
  821. package/templates/nonprofit/app/components/site/ThemeToggle.vue +28 -0
  822. package/templates/nonprofit/app/components/ui/button/Button.vue +30 -0
  823. package/templates/nonprofit/app/components/ui/button/index.ts +44 -0
  824. package/templates/nonprofit/app/components/ui/sheet/Sheet.vue +16 -0
  825. package/templates/nonprofit/app/components/ui/sheet/SheetClose.vue +13 -0
  826. package/templates/nonprofit/app/components/ui/sheet/SheetContent.vue +54 -0
  827. package/templates/nonprofit/app/components/ui/sheet/SheetDescription.vue +23 -0
  828. package/templates/nonprofit/app/components/ui/sheet/SheetOverlay.vue +22 -0
  829. package/templates/nonprofit/app/components/ui/sheet/SheetTitle.vue +23 -0
  830. package/templates/nonprofit/app/components/ui/sheet/SheetTrigger.vue +13 -0
  831. package/templates/nonprofit/app/components/ui/sheet/index.ts +7 -0
  832. package/templates/nonprofit/app/composables/useBlog.ts +103 -0
  833. package/templates/nonprofit/app/composables/useDownloads.ts +54 -0
  834. package/templates/nonprofit/app/composables/useEvents.ts +182 -0
  835. package/templates/nonprofit/app/composables/usePageSeo.ts +50 -0
  836. package/templates/nonprofit/app/composables/useProjects.ts +31 -0
  837. package/templates/nonprofit/app/composables/useSiteAppConfig.ts +79 -0
  838. package/templates/nonprofit/app/error.vue +35 -0
  839. package/templates/nonprofit/app/layouts/default.vue +23 -0
  840. package/templates/nonprofit/app/lib/utils.ts +26 -0
  841. package/templates/nonprofit/app/pages/[...slug].vue +36 -0
  842. package/templates/nonprofit/app/pages/downloads.vue +20 -0
  843. package/templates/nonprofit/app/pages/events/[slug].vue +106 -0
  844. package/templates/nonprofit/app/pages/events/index.vue +20 -0
  845. package/templates/nonprofit/app/pages/index.vue +64 -0
  846. package/templates/nonprofit/app/pages/legal/[slug].vue +46 -0
  847. package/templates/nonprofit/app/pages/news/[slug].vue +94 -0
  848. package/templates/nonprofit/app/pages/news/index.vue +54 -0
  849. package/templates/nonprofit/app/pages/news/tags/[tag].vue +41 -0
  850. package/templates/nonprofit/app/pages/projects/[slug].vue +49 -0
  851. package/templates/nonprofit/app/pages/projects/index.vue +24 -0
  852. package/templates/nonprofit/app/pages/team.vue +40 -0
  853. package/templates/nonprofit/app/routes.ts +32 -0
  854. package/templates/nonprofit/app/utils/telHref.ts +3 -0
  855. package/templates/nonprofit/components.json +21 -0
  856. package/templates/nonprofit/content/downloads/annual-report.ar.md +4 -0
  857. package/templates/nonprofit/content/downloads/annual-report.de.md +4 -0
  858. package/templates/nonprofit/content/downloads/annual-report.fr.md +4 -0
  859. package/templates/nonprofit/content/downloads/annual-report.md +7 -0
  860. package/templates/nonprofit/content/events/1.winter-clean-up.ar.md +9 -0
  861. package/templates/nonprofit/content/events/1.winter-clean-up.de.md +9 -0
  862. package/templates/nonprofit/content/events/1.winter-clean-up.fr.md +9 -0
  863. package/templates/nonprofit/content/events/1.winter-clean-up.md +14 -0
  864. package/templates/nonprofit/content/events/2.members-meeting.ar.md +9 -0
  865. package/templates/nonprofit/content/events/2.members-meeting.de.md +9 -0
  866. package/templates/nonprofit/content/events/2.members-meeting.fr.md +9 -0
  867. package/templates/nonprofit/content/events/2.members-meeting.md +15 -0
  868. package/templates/nonprofit/content/events/3.spring-clean-up.ar.md +9 -0
  869. package/templates/nonprofit/content/events/3.spring-clean-up.de.md +9 -0
  870. package/templates/nonprofit/content/events/3.spring-clean-up.fr.md +9 -0
  871. package/templates/nonprofit/content/events/3.spring-clean-up.md +14 -0
  872. package/templates/nonprofit/content/home.ar.md +6 -0
  873. package/templates/nonprofit/content/home.de.md +6 -0
  874. package/templates/nonprofit/content/home.fr.md +6 -0
  875. package/templates/nonprofit/content/home.md +7 -0
  876. package/templates/nonprofit/content/legal/1.privacy.ar.md +18 -0
  877. package/templates/nonprofit/content/legal/1.privacy.de.md +18 -0
  878. package/templates/nonprofit/content/legal/1.privacy.fr.md +18 -0
  879. package/templates/nonprofit/content/legal/1.privacy.md +20 -0
  880. package/templates/nonprofit/content/legal/2.terms.ar.md +17 -0
  881. package/templates/nonprofit/content/legal/2.terms.de.md +17 -0
  882. package/templates/nonprofit/content/legal/2.terms.fr.md +17 -0
  883. package/templates/nonprofit/content/legal/2.terms.md +19 -0
  884. package/templates/nonprofit/content/legal/3.imprint.ar.md +16 -0
  885. package/templates/nonprofit/content/legal/3.imprint.de.md +16 -0
  886. package/templates/nonprofit/content/legal/3.imprint.fr.md +16 -0
  887. package/templates/nonprofit/content/legal/3.imprint.md +18 -0
  888. package/templates/nonprofit/content/logos/1.partner-one.md +6 -0
  889. package/templates/nonprofit/content/logos/2.partner-two.md +6 -0
  890. package/templates/nonprofit/content/logos/3.partner-three.md +6 -0
  891. package/templates/nonprofit/content/notices/1.annual-report-online.ar.md +3 -0
  892. package/templates/nonprofit/content/notices/1.annual-report-online.de.md +3 -0
  893. package/templates/nonprofit/content/notices/1.annual-report-online.fr.md +3 -0
  894. package/templates/nonprofit/content/notices/1.annual-report-online.md +4 -0
  895. package/templates/nonprofit/content/pages/1.about.ar.md +21 -0
  896. package/templates/nonprofit/content/pages/1.about.de.md +21 -0
  897. package/templates/nonprofit/content/pages/1.about.fr.md +21 -0
  898. package/templates/nonprofit/content/pages/1.about.md +21 -0
  899. package/templates/nonprofit/content/pages/2.get-involved.ar.md +19 -0
  900. package/templates/nonprofit/content/pages/2.get-involved.de.md +19 -0
  901. package/templates/nonprofit/content/pages/2.get-involved.fr.md +19 -0
  902. package/templates/nonprofit/content/pages/2.get-involved.md +20 -0
  903. package/templates/nonprofit/content/pages/3.donate.ar.md +26 -0
  904. package/templates/nonprofit/content/pages/3.donate.de.md +26 -0
  905. package/templates/nonprofit/content/pages/3.donate.fr.md +26 -0
  906. package/templates/nonprofit/content/pages/3.donate.md +27 -0
  907. package/templates/nonprofit/content/people/1.jana-becker.ar.md +4 -0
  908. package/templates/nonprofit/content/people/1.jana-becker.de.md +4 -0
  909. package/templates/nonprofit/content/people/1.jana-becker.fr.md +4 -0
  910. package/templates/nonprofit/content/people/1.jana-becker.md +5 -0
  911. package/templates/nonprofit/content/people/2.yusuf-demir.ar.md +4 -0
  912. package/templates/nonprofit/content/people/2.yusuf-demir.de.md +4 -0
  913. package/templates/nonprofit/content/people/2.yusuf-demir.fr.md +4 -0
  914. package/templates/nonprofit/content/people/2.yusuf-demir.md +5 -0
  915. package/templates/nonprofit/content/people/3.claire-martin.ar.md +4 -0
  916. package/templates/nonprofit/content/people/3.claire-martin.de.md +4 -0
  917. package/templates/nonprofit/content/people/3.claire-martin.fr.md +4 -0
  918. package/templates/nonprofit/content/people/3.claire-martin.md +5 -0
  919. package/templates/nonprofit/content/people/4.lukas-hoffmann.ar.md +4 -0
  920. package/templates/nonprofit/content/people/4.lukas-hoffmann.de.md +4 -0
  921. package/templates/nonprofit/content/people/4.lukas-hoffmann.fr.md +4 -0
  922. package/templates/nonprofit/content/people/4.lukas-hoffmann.md +6 -0
  923. package/templates/nonprofit/content/posts/a-home-for-our-tools.ar.md +10 -0
  924. package/templates/nonprofit/content/posts/a-home-for-our-tools.de.md +10 -0
  925. package/templates/nonprofit/content/posts/a-home-for-our-tools.fr.md +10 -0
  926. package/templates/nonprofit/content/posts/a-home-for-our-tools.md +12 -0
  927. package/templates/nonprofit/content/posts/autumn-clean-up.ar.md +20 -0
  928. package/templates/nonprofit/content/posts/autumn-clean-up.de.md +20 -0
  929. package/templates/nonprofit/content/posts/autumn-clean-up.fr.md +20 -0
  930. package/templates/nonprofit/content/posts/autumn-clean-up.md +23 -0
  931. package/templates/nonprofit/content/posts/hedge-planting-plan.md +12 -0
  932. package/templates/nonprofit/content/posts/water-tests-with-schools.ar.md +16 -0
  933. package/templates/nonprofit/content/posts/water-tests-with-schools.de.md +16 -0
  934. package/templates/nonprofit/content/posts/water-tests-with-schools.fr.md +16 -0
  935. package/templates/nonprofit/content/posts/water-tests-with-schools.md +18 -0
  936. package/templates/nonprofit/content/posts/winter-clean-up.ar.md +14 -0
  937. package/templates/nonprofit/content/posts/winter-clean-up.de.md +14 -0
  938. package/templates/nonprofit/content/posts/winter-clean-up.fr.md +14 -0
  939. package/templates/nonprofit/content/posts/winter-clean-up.md +16 -0
  940. package/templates/nonprofit/content/projects/1.clean-banks.ar.md +9 -0
  941. package/templates/nonprofit/content/projects/1.clean-banks.de.md +9 -0
  942. package/templates/nonprofit/content/projects/1.clean-banks.fr.md +9 -0
  943. package/templates/nonprofit/content/projects/1.clean-banks.md +10 -0
  944. package/templates/nonprofit/content/projects/2.water-tests.ar.md +9 -0
  945. package/templates/nonprofit/content/projects/2.water-tests.de.md +9 -0
  946. package/templates/nonprofit/content/projects/2.water-tests.fr.md +9 -0
  947. package/templates/nonprofit/content/projects/2.water-tests.md +10 -0
  948. package/templates/nonprofit/content/projects/3.hedge-campaign.ar.md +10 -0
  949. package/templates/nonprofit/content/projects/3.hedge-campaign.de.md +10 -0
  950. package/templates/nonprofit/content/projects/3.hedge-campaign.fr.md +10 -0
  951. package/templates/nonprofit/content/projects/3.hedge-campaign.md +13 -0
  952. package/templates/nonprofit/content/projects/4.gloves-appeal.md +9 -0
  953. package/templates/nonprofit/content/quotes/1.volunteer.ar.md +4 -0
  954. package/templates/nonprofit/content/quotes/1.volunteer.de.md +4 -0
  955. package/templates/nonprofit/content/quotes/1.volunteer.fr.md +4 -0
  956. package/templates/nonprofit/content/quotes/1.volunteer.md +5 -0
  957. package/templates/nonprofit/content/quotes/2.teacher.ar.md +4 -0
  958. package/templates/nonprofit/content/quotes/2.teacher.de.md +4 -0
  959. package/templates/nonprofit/content/quotes/2.teacher.fr.md +4 -0
  960. package/templates/nonprofit/content/quotes/2.teacher.md +5 -0
  961. package/templates/nonprofit/content/site.ar.md +3 -0
  962. package/templates/nonprofit/content/site.de.md +3 -0
  963. package/templates/nonprofit/content/site.fr.md +3 -0
  964. package/templates/nonprofit/content/site.md +11 -0
  965. package/templates/nonprofit/eslint.config.mjs +12 -0
  966. package/templates/nonprofit/eslint.tailwind.mjs +33 -0
  967. package/templates/nonprofit/ginko.config.ts +77 -0
  968. package/templates/nonprofit/gitignore +7 -0
  969. package/templates/nonprofit/i18n/ar.json +37 -0
  970. package/templates/nonprofit/i18n/blog/ar.json +18 -0
  971. package/templates/nonprofit/i18n/blog/de.json +18 -0
  972. package/templates/nonprofit/i18n/blog/en.json +18 -0
  973. package/templates/nonprofit/i18n/blog/fr.json +18 -0
  974. package/templates/nonprofit/i18n/de.json +37 -0
  975. package/templates/nonprofit/i18n/downloads/ar.json +6 -0
  976. package/templates/nonprofit/i18n/downloads/de.json +6 -0
  977. package/templates/nonprofit/i18n/downloads/en.json +6 -0
  978. package/templates/nonprofit/i18n/downloads/fr.json +6 -0
  979. package/templates/nonprofit/i18n/en.json +37 -0
  980. package/templates/nonprofit/i18n/events/ar.json +20 -0
  981. package/templates/nonprofit/i18n/events/de.json +20 -0
  982. package/templates/nonprofit/i18n/events/en.json +20 -0
  983. package/templates/nonprofit/i18n/events/fr.json +20 -0
  984. package/templates/nonprofit/i18n/fr.json +37 -0
  985. package/templates/nonprofit/i18n/people/ar.json +6 -0
  986. package/templates/nonprofit/i18n/people/de.json +6 -0
  987. package/templates/nonprofit/i18n/people/en.json +6 -0
  988. package/templates/nonprofit/i18n/people/fr.json +6 -0
  989. package/templates/nonprofit/i18n/projects/ar.json +7 -0
  990. package/templates/nonprofit/i18n/projects/de.json +7 -0
  991. package/templates/nonprofit/i18n/projects/en.json +7 -0
  992. package/templates/nonprofit/i18n/projects/fr.json +7 -0
  993. package/templates/nonprofit/i18n/site/ar.json +39 -0
  994. package/templates/nonprofit/i18n/site/de.json +39 -0
  995. package/templates/nonprofit/i18n/site/en.json +39 -0
  996. package/templates/nonprofit/i18n/site/fr.json +39 -0
  997. package/templates/nonprofit/modules/feature-messages.ts +19 -0
  998. package/templates/nonprofit/modules/feeds/index.ts +22 -0
  999. package/templates/nonprofit/modules/feeds/routes.ts +13 -0
  1000. package/templates/nonprofit/modules/page-paths/index.ts +26 -0
  1001. package/templates/nonprofit/modules/page-paths/paths.ts +48 -0
  1002. package/templates/nonprofit/nuxt.config.ts +36 -0
  1003. package/templates/nonprofit/package.json +63 -0
  1004. package/templates/nonprofit/pnpm-workspace.yaml +6 -0
  1005. package/templates/nonprofit/public/files/annual-report-2025.pdf +0 -0
  1006. package/templates/nonprofit/public/logos/partner-one.svg +5 -0
  1007. package/templates/nonprofit/public/logos/partner-three.svg +5 -0
  1008. package/templates/nonprofit/public/logos/partner-two.svg +4 -0
  1009. package/templates/nonprofit/public/media/bank-clean-up.jpg +0 -0
  1010. package/templates/nonprofit/public/media/forest-stream.jpg +0 -0
  1011. package/templates/nonprofit/public/media/green-bank.jpg +0 -0
  1012. package/templates/nonprofit/public/media/planting.jpg +0 -0
  1013. package/templates/nonprofit/public/media/river-town.jpg +0 -0
  1014. package/templates/nonprofit/public/media/workshop.jpg +0 -0
  1015. package/templates/nonprofit/server/middleware/news-feed.ts +37 -0
  1016. package/templates/nonprofit/server/plugins/font-preload.ts +17 -0
  1017. package/templates/nonprofit/site-url.ts +21 -0
  1018. package/templates/nonprofit/tsconfig.json +9 -0
  1019. package/templates/nonprofit.json +20 -0
  1020. package/templates/portfolio/.env.example +8 -0
  1021. package/templates/portfolio/.github/screenshots/home-dark.png +0 -0
  1022. package/templates/portfolio/.github/screenshots/home-light.png +0 -0
  1023. package/templates/portfolio/.github/workflows/ci.yml +27 -0
  1024. package/templates/portfolio/DESIGN.md +197 -0
  1025. package/templates/portfolio/LICENSE +21 -0
  1026. package/templates/portfolio/MEDIA.md +35 -0
  1027. package/templates/portfolio/NOTES.md +18 -0
  1028. package/templates/portfolio/README.md +267 -0
  1029. package/templates/portfolio/app/app.config.ts +27 -0
  1030. package/templates/portfolio/app/app.vue +7 -0
  1031. package/templates/portfolio/app/assets/css/main.css +56 -0
  1032. package/templates/portfolio/app/assets/css/tokens.css +400 -0
  1033. package/templates/portfolio/app/bricks/pages.ts +38 -0
  1034. package/templates/portfolio/app/bricks/projects.ts +114 -0
  1035. package/templates/portfolio/app/components/InitialsAvatar.vue +18 -0
  1036. package/templates/portfolio/app/components/ProseBody.vue +13 -0
  1037. package/templates/portfolio/app/components/StartProject.vue +15 -0
  1038. package/templates/portfolio/app/components/block/Cards.vue +54 -0
  1039. package/templates/portfolio/app/components/block/Cta.vue +26 -0
  1040. package/templates/portfolio/app/components/block/Empty.vue +26 -0
  1041. package/templates/portfolio/app/components/block/Features.vue +24 -0
  1042. package/templates/portfolio/app/components/block/Gallery.vue +81 -0
  1043. package/templates/portfolio/app/components/block/Hero.vue +47 -0
  1044. package/templates/portfolio/app/components/block/PageHeader.vue +21 -0
  1045. package/templates/portfolio/app/components/block/Section.vue +31 -0
  1046. package/templates/portfolio/app/components/blog/Byline.vue +22 -0
  1047. package/templates/portfolio/app/components/blog/PostList.vue +33 -0
  1048. package/templates/portfolio/app/components/blog/TagList.vue +17 -0
  1049. package/templates/portfolio/app/components/pages/Top.vue +12 -0
  1050. package/templates/portfolio/app/components/people/List.vue +41 -0
  1051. package/templates/portfolio/app/components/people/TeamContact.vue +9 -0
  1052. package/templates/portfolio/app/components/projects/Body.vue +62 -0
  1053. package/templates/portfolio/app/components/projects/List.vue +38 -0
  1054. package/templates/portfolio/app/components/site/Contact.vue +38 -0
  1055. package/templates/portfolio/app/components/site/Footer.vue +81 -0
  1056. package/templates/portfolio/app/components/site/Header.vue +52 -0
  1057. package/templates/portfolio/app/components/site/LanguageSwitch.vue +34 -0
  1058. package/templates/portfolio/app/components/site/Lightbox.vue +62 -0
  1059. package/templates/portfolio/app/components/site/Logo.vue +17 -0
  1060. package/templates/portfolio/app/components/site/NavLink.vue +19 -0
  1061. package/templates/portfolio/app/components/site/NavSheet.vue +63 -0
  1062. package/templates/portfolio/app/components/site/Notice.vue +21 -0
  1063. package/templates/portfolio/app/components/site/SkipLink.vue +15 -0
  1064. package/templates/portfolio/app/components/site/ThemeToggle.vue +28 -0
  1065. package/templates/portfolio/app/components/ui/button/Button.vue +30 -0
  1066. package/templates/portfolio/app/components/ui/button/index.ts +44 -0
  1067. package/templates/portfolio/app/components/ui/sheet/Sheet.vue +16 -0
  1068. package/templates/portfolio/app/components/ui/sheet/SheetClose.vue +13 -0
  1069. package/templates/portfolio/app/components/ui/sheet/SheetContent.vue +54 -0
  1070. package/templates/portfolio/app/components/ui/sheet/SheetDescription.vue +23 -0
  1071. package/templates/portfolio/app/components/ui/sheet/SheetOverlay.vue +22 -0
  1072. package/templates/portfolio/app/components/ui/sheet/SheetTitle.vue +23 -0
  1073. package/templates/portfolio/app/components/ui/sheet/SheetTrigger.vue +13 -0
  1074. package/templates/portfolio/app/components/ui/sheet/index.ts +7 -0
  1075. package/templates/portfolio/app/composables/useBlog.ts +103 -0
  1076. package/templates/portfolio/app/composables/usePageSeo.ts +50 -0
  1077. package/templates/portfolio/app/composables/useProjectJsonLd.ts +26 -0
  1078. package/templates/portfolio/app/composables/useProjects.ts +31 -0
  1079. package/templates/portfolio/app/composables/useSiteAppConfig.ts +79 -0
  1080. package/templates/portfolio/app/composables/useStartProject.ts +12 -0
  1081. package/templates/portfolio/app/error.vue +35 -0
  1082. package/templates/portfolio/app/layouts/default.vue +23 -0
  1083. package/templates/portfolio/app/lib/utils.ts +26 -0
  1084. package/templates/portfolio/app/pages/[...slug].vue +36 -0
  1085. package/templates/portfolio/app/pages/index.vue +60 -0
  1086. package/templates/portfolio/app/pages/legal/[slug].vue +46 -0
  1087. package/templates/portfolio/app/pages/news/[slug].vue +94 -0
  1088. package/templates/portfolio/app/pages/news/index.vue +54 -0
  1089. package/templates/portfolio/app/pages/news/tags/[tag].vue +41 -0
  1090. package/templates/portfolio/app/pages/projects/[slug].vue +49 -0
  1091. package/templates/portfolio/app/pages/projects/index.vue +24 -0
  1092. package/templates/portfolio/app/pages/team.vue +40 -0
  1093. package/templates/portfolio/app/routes.ts +30 -0
  1094. package/templates/portfolio/app/utils/telHref.ts +3 -0
  1095. package/templates/portfolio/components.json +21 -0
  1096. package/templates/portfolio/content/home.de.md +4 -0
  1097. package/templates/portfolio/content/home.md +4 -0
  1098. package/templates/portfolio/content/legal/1.privacy.de.md +19 -0
  1099. package/templates/portfolio/content/legal/1.privacy.md +21 -0
  1100. package/templates/portfolio/content/legal/2.imprint.de.md +15 -0
  1101. package/templates/portfolio/content/legal/2.imprint.md +17 -0
  1102. package/templates/portfolio/content/notices/1.holm-chair.de.md +3 -0
  1103. package/templates/portfolio/content/notices/1.holm-chair.md +4 -0
  1104. package/templates/portfolio/content/pages/1.how-we-work.de.md +23 -0
  1105. package/templates/portfolio/content/pages/1.how-we-work.md +23 -0
  1106. package/templates/portfolio/content/people/1.maren-holt.de.md +4 -0
  1107. package/templates/portfolio/content/people/1.maren-holt.md +6 -0
  1108. package/templates/portfolio/content/people/2.ole-petersen.de.md +4 -0
  1109. package/templates/portfolio/content/people/2.ole-petersen.md +6 -0
  1110. package/templates/portfolio/content/posts/full-size-drawings.de.md +11 -0
  1111. package/templates/portfolio/content/posts/full-size-drawings.md +13 -0
  1112. package/templates/portfolio/content/posts/lime-plaster.de.md +11 -0
  1113. package/templates/portfolio/content/posts/lime-plaster.md +13 -0
  1114. package/templates/portfolio/content/projects/1.attic-flat-ottensen.de.md +19 -0
  1115. package/templates/portfolio/content/projects/1.attic-flat-ottensen.md +22 -0
  1116. package/templates/portfolio/content/projects/2.elbsand-vases.de.md +18 -0
  1117. package/templates/portfolio/content/projects/2.elbsand-vases.md +21 -0
  1118. package/templates/portfolio/content/projects/3.werftblick-entrance-hall.de.md +18 -0
  1119. package/templates/portfolio/content/projects/3.werftblick-entrance-hall.md +22 -0
  1120. package/templates/portfolio/content/projects/4.holm-chair.de.md +18 -0
  1121. package/templates/portfolio/content/projects/4.holm-chair.md +21 -0
  1122. package/templates/portfolio/content/site.md +13 -0
  1123. package/templates/portfolio/eslint.config.mjs +12 -0
  1124. package/templates/portfolio/eslint.tailwind.mjs +33 -0
  1125. package/templates/portfolio/ginko.config.ts +70 -0
  1126. package/templates/portfolio/gitignore +7 -0
  1127. package/templates/portfolio/i18n/blog/de.json +18 -0
  1128. package/templates/portfolio/i18n/blog/en.json +18 -0
  1129. package/templates/portfolio/i18n/de.json +47 -0
  1130. package/templates/portfolio/i18n/en.json +47 -0
  1131. package/templates/portfolio/i18n/gallery/de.json +8 -0
  1132. package/templates/portfolio/i18n/gallery/en.json +8 -0
  1133. package/templates/portfolio/i18n/people/de.json +6 -0
  1134. package/templates/portfolio/i18n/people/en.json +6 -0
  1135. package/templates/portfolio/i18n/projects/de.json +7 -0
  1136. package/templates/portfolio/i18n/projects/en.json +7 -0
  1137. package/templates/portfolio/i18n/site/de.json +39 -0
  1138. package/templates/portfolio/i18n/site/en.json +39 -0
  1139. package/templates/portfolio/modules/feature-messages.ts +19 -0
  1140. package/templates/portfolio/modules/feeds/index.ts +22 -0
  1141. package/templates/portfolio/modules/feeds/routes.ts +13 -0
  1142. package/templates/portfolio/modules/page-paths/index.ts +26 -0
  1143. package/templates/portfolio/modules/page-paths/paths.ts +48 -0
  1144. package/templates/portfolio/nuxt.config.ts +30 -0
  1145. package/templates/portfolio/package.json +60 -0
  1146. package/templates/portfolio/pnpm-workspace.yaml +6 -0
  1147. package/templates/portfolio/public/media/attic-light.jpg +0 -0
  1148. package/templates/portfolio/public/media/ceramic-vases.jpg +0 -0
  1149. package/templates/portfolio/public/media/concrete-stair.jpg +0 -0
  1150. package/templates/portfolio/public/media/material-samples.jpg +0 -0
  1151. package/templates/portfolio/public/media/oak-chair.jpg +0 -0
  1152. package/templates/portfolio/public/media/workshop-drawings.jpg +0 -0
  1153. package/templates/portfolio/server/middleware/news-feed.ts +37 -0
  1154. package/templates/portfolio/server/plugins/font-preload.ts +17 -0
  1155. package/templates/portfolio/site-url.ts +21 -0
  1156. package/templates/portfolio/tsconfig.json +9 -0
  1157. package/templates/portfolio.json +11 -0
  1158. package/templates/restaurant/.env.example +8 -0
  1159. package/templates/restaurant/.github/screenshots/home-dark.png +0 -0
  1160. package/templates/restaurant/.github/screenshots/home-light.png +0 -0
  1161. package/templates/restaurant/.github/workflows/ci.yml +27 -0
  1162. package/templates/restaurant/DESIGN.md +197 -0
  1163. package/templates/restaurant/LICENSE +21 -0
  1164. package/templates/restaurant/MEDIA.md +37 -0
  1165. package/templates/restaurant/README.md +249 -0
  1166. package/templates/restaurant/app/app.config.ts +33 -0
  1167. package/templates/restaurant/app/app.vue +7 -0
  1168. package/templates/restaurant/app/assets/css/main.css +20 -0
  1169. package/templates/restaurant/app/assets/css/tokens.css +400 -0
  1170. package/templates/restaurant/app/bricks/pages.ts +38 -0
  1171. package/templates/restaurant/app/components/InitialsAvatar.vue +18 -0
  1172. package/templates/restaurant/app/components/ProseBody.vue +13 -0
  1173. package/templates/restaurant/app/components/block/Cards.vue +54 -0
  1174. package/templates/restaurant/app/components/block/Cta.vue +26 -0
  1175. package/templates/restaurant/app/components/block/Empty.vue +26 -0
  1176. package/templates/restaurant/app/components/block/Features.vue +24 -0
  1177. package/templates/restaurant/app/components/block/Gallery.vue +81 -0
  1178. package/templates/restaurant/app/components/block/Hero.vue +47 -0
  1179. package/templates/restaurant/app/components/block/PageHeader.vue +21 -0
  1180. package/templates/restaurant/app/components/block/Section.vue +31 -0
  1181. package/templates/restaurant/app/components/event/Upcoming.vue +25 -0
  1182. package/templates/restaurant/app/components/hours/Table.vue +119 -0
  1183. package/templates/restaurant/app/components/hours/Today.vue +55 -0
  1184. package/templates/restaurant/app/components/menu/AllergenKey.vue +17 -0
  1185. package/templates/restaurant/app/components/menu/Allergens.vue +24 -0
  1186. package/templates/restaurant/app/components/menu/Diet.vue +16 -0
  1187. package/templates/restaurant/app/components/menu/Dish.vue +30 -0
  1188. package/templates/restaurant/app/components/menu/LunchDays.vue +42 -0
  1189. package/templates/restaurant/app/components/site/Contact.vue +38 -0
  1190. package/templates/restaurant/app/components/site/Footer.vue +81 -0
  1191. package/templates/restaurant/app/components/site/FooterStatus.vue +9 -0
  1192. package/templates/restaurant/app/components/site/Header.vue +52 -0
  1193. package/templates/restaurant/app/components/site/LanguageSwitch.vue +34 -0
  1194. package/templates/restaurant/app/components/site/Lightbox.vue +62 -0
  1195. package/templates/restaurant/app/components/site/Logo.vue +17 -0
  1196. package/templates/restaurant/app/components/site/NavLink.vue +19 -0
  1197. package/templates/restaurant/app/components/site/NavSheet.vue +63 -0
  1198. package/templates/restaurant/app/components/site/Notice.vue +21 -0
  1199. package/templates/restaurant/app/components/site/SkipLink.vue +15 -0
  1200. package/templates/restaurant/app/components/site/ThemeToggle.vue +28 -0
  1201. package/templates/restaurant/app/components/ui/button/Button.vue +30 -0
  1202. package/templates/restaurant/app/components/ui/button/index.ts +44 -0
  1203. package/templates/restaurant/app/components/ui/sheet/Sheet.vue +16 -0
  1204. package/templates/restaurant/app/components/ui/sheet/SheetClose.vue +13 -0
  1205. package/templates/restaurant/app/components/ui/sheet/SheetContent.vue +54 -0
  1206. package/templates/restaurant/app/components/ui/sheet/SheetDescription.vue +23 -0
  1207. package/templates/restaurant/app/components/ui/sheet/SheetOverlay.vue +22 -0
  1208. package/templates/restaurant/app/components/ui/sheet/SheetTitle.vue +23 -0
  1209. package/templates/restaurant/app/components/ui/sheet/SheetTrigger.vue +13 -0
  1210. package/templates/restaurant/app/components/ui/sheet/index.ts +7 -0
  1211. package/templates/restaurant/app/composables/useEvents.ts +182 -0
  1212. package/templates/restaurant/app/composables/useHours.ts +81 -0
  1213. package/templates/restaurant/app/composables/useMenu.ts +76 -0
  1214. package/templates/restaurant/app/composables/usePageSeo.ts +50 -0
  1215. package/templates/restaurant/app/composables/useSiteAppConfig.ts +79 -0
  1216. package/templates/restaurant/app/error.vue +35 -0
  1217. package/templates/restaurant/app/layouts/default.vue +23 -0
  1218. package/templates/restaurant/app/layouts/print.vue +9 -0
  1219. package/templates/restaurant/app/lib/utils.ts +26 -0
  1220. package/templates/restaurant/app/pages/[...slug].vue +36 -0
  1221. package/templates/restaurant/app/pages/events/[slug].vue +106 -0
  1222. package/templates/restaurant/app/pages/events/index.vue +20 -0
  1223. package/templates/restaurant/app/pages/gallery.vue +17 -0
  1224. package/templates/restaurant/app/pages/index.vue +163 -0
  1225. package/templates/restaurant/app/pages/legal/[slug].vue +46 -0
  1226. package/templates/restaurant/app/pages/lunch.vue +30 -0
  1227. package/templates/restaurant/app/pages/menu/index.vue +46 -0
  1228. package/templates/restaurant/app/pages/menu/print.vue +69 -0
  1229. package/templates/restaurant/app/pages/reservations.vue +52 -0
  1230. package/templates/restaurant/app/routes.ts +33 -0
  1231. package/templates/restaurant/app/utils/hours.ts +58 -0
  1232. package/templates/restaurant/app/utils/telHref.ts +3 -0
  1233. package/templates/restaurant/components.json +21 -0
  1234. package/templates/restaurant/content/events/1.wine-evening.de.md +10 -0
  1235. package/templates/restaurant/content/events/1.wine-evening.it.md +10 -0
  1236. package/templates/restaurant/content/events/1.wine-evening.md +16 -0
  1237. package/templates/restaurant/content/events/2.cooking-class.de.md +10 -0
  1238. package/templates/restaurant/content/events/2.cooking-class.it.md +10 -0
  1239. package/templates/restaurant/content/events/2.cooking-class.md +16 -0
  1240. package/templates/restaurant/content/gallery.de.md +15 -0
  1241. package/templates/restaurant/content/gallery.it.md +15 -0
  1242. package/templates/restaurant/content/gallery.md +21 -0
  1243. package/templates/restaurant/content/home.de.md +6 -0
  1244. package/templates/restaurant/content/home.it.md +6 -0
  1245. package/templates/restaurant/content/home.md +7 -0
  1246. package/templates/restaurant/content/hourPlans/1.winter-hours.de.md +3 -0
  1247. package/templates/restaurant/content/hourPlans/1.winter-hours.it.md +3 -0
  1248. package/templates/restaurant/content/hourPlans/1.winter-hours.md +41 -0
  1249. package/templates/restaurant/content/hours.de.md +4 -0
  1250. package/templates/restaurant/content/hours.it.md +4 -0
  1251. package/templates/restaurant/content/hours.md +45 -0
  1252. package/templates/restaurant/content/legal/1.privacy.de.md +28 -0
  1253. package/templates/restaurant/content/legal/1.privacy.it.md +28 -0
  1254. package/templates/restaurant/content/legal/1.privacy.md +29 -0
  1255. package/templates/restaurant/content/legal/2.terms.de.md +21 -0
  1256. package/templates/restaurant/content/legal/2.terms.it.md +21 -0
  1257. package/templates/restaurant/content/legal/2.terms.md +22 -0
  1258. package/templates/restaurant/content/legal/3.imprint.de.md +15 -0
  1259. package/templates/restaurant/content/legal/3.imprint.it.md +15 -0
  1260. package/templates/restaurant/content/legal/3.imprint.md +16 -0
  1261. package/templates/restaurant/content/lunch.de.md +3 -0
  1262. package/templates/restaurant/content/lunch.it.md +3 -0
  1263. package/templates/restaurant/content/lunch.md +25 -0
  1264. package/templates/restaurant/content/menu/1.liptauer.de.md +4 -0
  1265. package/templates/restaurant/content/menu/1.liptauer.it.md +4 -0
  1266. package/templates/restaurant/content/menu/1.liptauer.md +8 -0
  1267. package/templates/restaurant/content/menu/10.kaiserschmarrn.de.md +4 -0
  1268. package/templates/restaurant/content/menu/10.kaiserschmarrn.it.md +4 -0
  1269. package/templates/restaurant/content/menu/10.kaiserschmarrn.md +8 -0
  1270. package/templates/restaurant/content/menu/11.apple-strudel.de.md +4 -0
  1271. package/templates/restaurant/content/menu/11.apple-strudel.it.md +4 -0
  1272. package/templates/restaurant/content/menu/11.apple-strudel.md +8 -0
  1273. package/templates/restaurant/content/menu/12.apple-spritzer.de.md +4 -0
  1274. package/templates/restaurant/content/menu/12.apple-spritzer.it.md +4 -0
  1275. package/templates/restaurant/content/menu/12.apple-spritzer.md +8 -0
  1276. package/templates/restaurant/content/menu/13.elderflower-soda.de.md +3 -0
  1277. package/templates/restaurant/content/menu/13.elderflower-soda.it.md +3 -0
  1278. package/templates/restaurant/content/menu/13.elderflower-soda.md +7 -0
  1279. package/templates/restaurant/content/menu/14.melange.de.md +4 -0
  1280. package/templates/restaurant/content/menu/14.melange.it.md +4 -0
  1281. package/templates/restaurant/content/menu/14.melange.md +8 -0
  1282. package/templates/restaurant/content/menu/15.gruener-veltliner.de.md +4 -0
  1283. package/templates/restaurant/content/menu/15.gruener-veltliner.it.md +4 -0
  1284. package/templates/restaurant/content/menu/15.gruener-veltliner.md +8 -0
  1285. package/templates/restaurant/content/menu/16.zweigelt.de.md +4 -0
  1286. package/templates/restaurant/content/menu/16.zweigelt.it.md +4 -0
  1287. package/templates/restaurant/content/menu/16.zweigelt.md +8 -0
  1288. package/templates/restaurant/content/menu/17.maerzen.de.md +4 -0
  1289. package/templates/restaurant/content/menu/17.maerzen.it.md +4 -0
  1290. package/templates/restaurant/content/menu/17.maerzen.md +8 -0
  1291. package/templates/restaurant/content/menu/2.cured-char.de.md +4 -0
  1292. package/templates/restaurant/content/menu/2.cured-char.it.md +4 -0
  1293. package/templates/restaurant/content/menu/2.cured-char.md +8 -0
  1294. package/templates/restaurant/content/menu/3.frittaten-soup.de.md +4 -0
  1295. package/templates/restaurant/content/menu/3.frittaten-soup.it.md +4 -0
  1296. package/templates/restaurant/content/menu/3.frittaten-soup.md +8 -0
  1297. package/templates/restaurant/content/menu/4.pumpkin-soup.de.md +4 -0
  1298. package/templates/restaurant/content/menu/4.pumpkin-soup.it.md +4 -0
  1299. package/templates/restaurant/content/menu/4.pumpkin-soup.md +8 -0
  1300. package/templates/restaurant/content/menu/5.wiener-schnitzel.de.md +4 -0
  1301. package/templates/restaurant/content/menu/5.wiener-schnitzel.it.md +4 -0
  1302. package/templates/restaurant/content/menu/5.wiener-schnitzel.md +8 -0
  1303. package/templates/restaurant/content/menu/6.tafelspitz.de.md +4 -0
  1304. package/templates/restaurant/content/menu/6.tafelspitz.it.md +4 -0
  1305. package/templates/restaurant/content/menu/6.tafelspitz.md +8 -0
  1306. package/templates/restaurant/content/menu/7.roast-pork.de.md +4 -0
  1307. package/templates/restaurant/content/menu/7.roast-pork.it.md +4 -0
  1308. package/templates/restaurant/content/menu/7.roast-pork.md +8 -0
  1309. package/templates/restaurant/content/menu/8.kasnocken.de.md +4 -0
  1310. package/templates/restaurant/content/menu/8.kasnocken.it.md +4 -0
  1311. package/templates/restaurant/content/menu/8.kasnocken.md +8 -0
  1312. package/templates/restaurant/content/menu/9.lentil-goulash.de.md +4 -0
  1313. package/templates/restaurant/content/menu/9.lentil-goulash.it.md +4 -0
  1314. package/templates/restaurant/content/menu/9.lentil-goulash.md +8 -0
  1315. package/templates/restaurant/content/notices/1.cook-wanted.de.md +3 -0
  1316. package/templates/restaurant/content/notices/1.cook-wanted.it.md +3 -0
  1317. package/templates/restaurant/content/notices/1.cook-wanted.md +4 -0
  1318. package/templates/restaurant/content/pages/1.about.de.md +23 -0
  1319. package/templates/restaurant/content/pages/1.about.it.md +23 -0
  1320. package/templates/restaurant/content/pages/1.about.md +24 -0
  1321. package/templates/restaurant/content/reservations.de.md +20 -0
  1322. package/templates/restaurant/content/reservations.it.md +20 -0
  1323. package/templates/restaurant/content/reservations.md +20 -0
  1324. package/templates/restaurant/content/site.de.md +3 -0
  1325. package/templates/restaurant/content/site.it.md +3 -0
  1326. package/templates/restaurant/content/site.md +12 -0
  1327. package/templates/restaurant/eslint.config.mjs +12 -0
  1328. package/templates/restaurant/eslint.tailwind.mjs +33 -0
  1329. package/templates/restaurant/ginko.config.ts +78 -0
  1330. package/templates/restaurant/gitignore +7 -0
  1331. package/templates/restaurant/i18n/de.json +31 -0
  1332. package/templates/restaurant/i18n/en.json +31 -0
  1333. package/templates/restaurant/i18n/events/de.json +20 -0
  1334. package/templates/restaurant/i18n/events/en.json +20 -0
  1335. package/templates/restaurant/i18n/events/it.json +20 -0
  1336. package/templates/restaurant/i18n/gallery/de.json +8 -0
  1337. package/templates/restaurant/i18n/gallery/en.json +8 -0
  1338. package/templates/restaurant/i18n/gallery/it.json +8 -0
  1339. package/templates/restaurant/i18n/hours/de.json +27 -0
  1340. package/templates/restaurant/i18n/hours/en.json +27 -0
  1341. package/templates/restaurant/i18n/hours/it.json +27 -0
  1342. package/templates/restaurant/i18n/it.json +31 -0
  1343. package/templates/restaurant/i18n/menu/de.json +54 -0
  1344. package/templates/restaurant/i18n/menu/en.json +54 -0
  1345. package/templates/restaurant/i18n/menu/it.json +54 -0
  1346. package/templates/restaurant/i18n/site/de.json +39 -0
  1347. package/templates/restaurant/i18n/site/en.json +39 -0
  1348. package/templates/restaurant/i18n/site/it.json +39 -0
  1349. package/templates/restaurant/modules/feature-messages.ts +19 -0
  1350. package/templates/restaurant/modules/feeds/index.ts +22 -0
  1351. package/templates/restaurant/modules/feeds/routes.ts +13 -0
  1352. package/templates/restaurant/modules/page-paths/index.ts +26 -0
  1353. package/templates/restaurant/modules/page-paths/paths.ts +48 -0
  1354. package/templates/restaurant/nuxt.config.ts +27 -0
  1355. package/templates/restaurant/package.json +61 -0
  1356. package/templates/restaurant/pnpm-workspace.yaml +6 -0
  1357. package/templates/restaurant/public/media/garten.jpg +0 -0
  1358. package/templates/restaurant/public/media/gastraum.jpg +0 -0
  1359. package/templates/restaurant/public/media/gaststube.jpg +0 -0
  1360. package/templates/restaurant/public/media/kueche.jpg +0 -0
  1361. package/templates/restaurant/public/media/schnitzel.jpg +0 -0
  1362. package/templates/restaurant/public/media/strudel.jpg +0 -0
  1363. package/templates/restaurant/public/media/weinabend.jpg +0 -0
  1364. package/templates/restaurant/server/plugins/font-preload.ts +17 -0
  1365. package/templates/restaurant/site-url.ts +21 -0
  1366. package/templates/restaurant/tsconfig.json +9 -0
  1367. package/templates/restaurant.json +19 -0
  1368. package/templates/saas/.env.example +8 -0
  1369. package/templates/saas/.github/screenshots/home-dark.png +0 -0
  1370. package/templates/saas/.github/screenshots/home-light.png +0 -0
  1371. package/templates/saas/.github/workflows/ci.yml +27 -0
  1372. package/templates/saas/DESIGN.md +197 -0
  1373. package/templates/saas/LICENSE +21 -0
  1374. package/templates/saas/MEDIA.md +20 -0
  1375. package/templates/saas/NOTES.md +23 -0
  1376. package/templates/saas/README.md +264 -0
  1377. package/templates/saas/app/app.config.ts +37 -0
  1378. package/templates/saas/app/app.vue +7 -0
  1379. package/templates/saas/app/assets/css/main.css +30 -0
  1380. package/templates/saas/app/assets/css/tokens.css +400 -0
  1381. package/templates/saas/app/bricks/logos-quotes.ts +47 -0
  1382. package/templates/saas/app/bricks/pages.ts +38 -0
  1383. package/templates/saas/app/bricks/pricing.ts +60 -0
  1384. package/templates/saas/app/components/DocsPageEnd.vue +8 -0
  1385. package/templates/saas/app/components/InitialsAvatar.vue +18 -0
  1386. package/templates/saas/app/components/ProseBody.vue +13 -0
  1387. package/templates/saas/app/components/block/Cards.vue +54 -0
  1388. package/templates/saas/app/components/block/Cta.vue +26 -0
  1389. package/templates/saas/app/components/block/Empty.vue +26 -0
  1390. package/templates/saas/app/components/block/Faq.vue +19 -0
  1391. package/templates/saas/app/components/block/Features.vue +24 -0
  1392. package/templates/saas/app/components/block/Hero.vue +47 -0
  1393. package/templates/saas/app/components/block/Logos.vue +22 -0
  1394. package/templates/saas/app/components/block/PageHeader.vue +21 -0
  1395. package/templates/saas/app/components/block/Quote.vue +19 -0
  1396. package/templates/saas/app/components/block/Section.vue +31 -0
  1397. package/templates/saas/app/components/blog/Byline.vue +22 -0
  1398. package/templates/saas/app/components/blog/PostList.vue +33 -0
  1399. package/templates/saas/app/components/blog/TagList.vue +17 -0
  1400. package/templates/saas/app/components/changelog/Latest.vue +32 -0
  1401. package/templates/saas/app/components/help/Contact.vue +14 -0
  1402. package/templates/saas/app/components/pages/Top.vue +30 -0
  1403. package/templates/saas/app/components/pricing/More.vue +21 -0
  1404. package/templates/saas/app/components/pricing/Plans.vue +60 -0
  1405. package/templates/saas/app/components/site/Contact.vue +38 -0
  1406. package/templates/saas/app/components/site/Footer.vue +81 -0
  1407. package/templates/saas/app/components/site/Header.vue +52 -0
  1408. package/templates/saas/app/components/site/LanguageSwitch.vue +34 -0
  1409. package/templates/saas/app/components/site/Logo.vue +17 -0
  1410. package/templates/saas/app/components/site/NavLink.vue +19 -0
  1411. package/templates/saas/app/components/site/NavSheet.vue +63 -0
  1412. package/templates/saas/app/components/site/Notice.vue +21 -0
  1413. package/templates/saas/app/components/site/PageCta.vue +12 -0
  1414. package/templates/saas/app/components/site/SkipLink.vue +15 -0
  1415. package/templates/saas/app/components/site/ThemeToggle.vue +28 -0
  1416. package/templates/saas/app/components/ui/accordion/Accordion.vue +16 -0
  1417. package/templates/saas/app/components/ui/accordion/AccordionContent.vue +26 -0
  1418. package/templates/saas/app/components/ui/accordion/AccordionItem.vue +24 -0
  1419. package/templates/saas/app/components/ui/accordion/AccordionTrigger.vue +35 -0
  1420. package/templates/saas/app/components/ui/accordion/index.ts +5 -0
  1421. package/templates/saas/app/components/ui/button/Button.vue +30 -0
  1422. package/templates/saas/app/components/ui/button/index.ts +44 -0
  1423. package/templates/saas/app/components/ui/sheet/Sheet.vue +16 -0
  1424. package/templates/saas/app/components/ui/sheet/SheetClose.vue +13 -0
  1425. package/templates/saas/app/components/ui/sheet/SheetContent.vue +54 -0
  1426. package/templates/saas/app/components/ui/sheet/SheetDescription.vue +23 -0
  1427. package/templates/saas/app/components/ui/sheet/SheetOverlay.vue +22 -0
  1428. package/templates/saas/app/components/ui/sheet/SheetTitle.vue +23 -0
  1429. package/templates/saas/app/components/ui/sheet/SheetTrigger.vue +13 -0
  1430. package/templates/saas/app/components/ui/sheet/index.ts +7 -0
  1431. package/templates/saas/app/composables/useBlog.ts +103 -0
  1432. package/templates/saas/app/composables/useChangelog.ts +54 -0
  1433. package/templates/saas/app/composables/usePageSeo.ts +50 -0
  1434. package/templates/saas/app/composables/usePricing.ts +110 -0
  1435. package/templates/saas/app/composables/useSiteAppConfig.ts +79 -0
  1436. package/templates/saas/app/error.vue +35 -0
  1437. package/templates/saas/app/layouts/default.vue +23 -0
  1438. package/templates/saas/app/lib/utils.ts +26 -0
  1439. package/templates/saas/app/pages/[...slug].vue +36 -0
  1440. package/templates/saas/app/pages/changelog.vue +47 -0
  1441. package/templates/saas/app/pages/faq.vue +39 -0
  1442. package/templates/saas/app/pages/help/index.vue +21 -0
  1443. package/templates/saas/app/pages/index.vue +67 -0
  1444. package/templates/saas/app/pages/legal/[slug].vue +46 -0
  1445. package/templates/saas/app/pages/news/[slug].vue +94 -0
  1446. package/templates/saas/app/pages/news/index.vue +54 -0
  1447. package/templates/saas/app/pages/news/tags/[tag].vue +41 -0
  1448. package/templates/saas/app/pages/pricing.vue +27 -0
  1449. package/templates/saas/app/routes.ts +31 -0
  1450. package/templates/saas/app/utils/telHref.ts +3 -0
  1451. package/templates/saas/components.json +21 -0
  1452. package/templates/saas/content/changelog/v4-3-0.de.md +18 -0
  1453. package/templates/saas/content/changelog/v4-3-0.fr.md +18 -0
  1454. package/templates/saas/content/changelog/v4-3-0.md +20 -0
  1455. package/templates/saas/content/changelog/v4-4-0.de.md +15 -0
  1456. package/templates/saas/content/changelog/v4-4-0.fr.md +15 -0
  1457. package/templates/saas/content/changelog/v4-4-0.md +17 -0
  1458. package/templates/saas/content/changelog/v4-4-1.de.md +11 -0
  1459. package/templates/saas/content/changelog/v4-4-1.fr.md +11 -0
  1460. package/templates/saas/content/changelog/v4-4-1.md +13 -0
  1461. package/templates/saas/content/changelog/v4-5-0.de.md +19 -0
  1462. package/templates/saas/content/changelog/v4-5-0.fr.md +19 -0
  1463. package/templates/saas/content/changelog/v4-5-0.md +21 -0
  1464. package/templates/saas/content/changelog/v4-6-0.de.md +19 -0
  1465. package/templates/saas/content/changelog/v4-6-0.fr.md +19 -0
  1466. package/templates/saas/content/changelog/v4-6-0.md +21 -0
  1467. package/templates/saas/content/docs/1.getting-started.de.md +33 -0
  1468. package/templates/saas/content/docs/1.getting-started.fr.md +33 -0
  1469. package/templates/saas/content/docs/1.getting-started.md +32 -0
  1470. package/templates/saas/content/docs/2.shifts.de.md +24 -0
  1471. package/templates/saas/content/docs/2.shifts.fr.md +24 -0
  1472. package/templates/saas/content/docs/2.shifts.md +23 -0
  1473. package/templates/saas/content/docs/3.export.de.md +21 -0
  1474. package/templates/saas/content/docs/3.export.fr.md +21 -0
  1475. package/templates/saas/content/docs/3.export.md +20 -0
  1476. package/templates/saas/content/faq/1.billing.de.md +4 -0
  1477. package/templates/saas/content/faq/1.billing.fr.md +4 -0
  1478. package/templates/saas/content/faq/1.billing.md +4 -0
  1479. package/templates/saas/content/faq/2.cancellation.de.md +4 -0
  1480. package/templates/saas/content/faq/2.cancellation.fr.md +4 -0
  1481. package/templates/saas/content/faq/2.cancellation.md +4 -0
  1482. package/templates/saas/content/faq/3.data-export.de.md +4 -0
  1483. package/templates/saas/content/faq/3.data-export.fr.md +4 -0
  1484. package/templates/saas/content/faq/3.data-export.md +4 -0
  1485. package/templates/saas/content/faq/4.change-plan.de.md +4 -0
  1486. package/templates/saas/content/faq/4.change-plan.fr.md +4 -0
  1487. package/templates/saas/content/faq/4.change-plan.md +4 -0
  1488. package/templates/saas/content/faq/5.trial.de.md +4 -0
  1489. package/templates/saas/content/faq/5.trial.fr.md +4 -0
  1490. package/templates/saas/content/faq/5.trial.md +4 -0
  1491. package/templates/saas/content/faq/6.data-location.de.md +4 -0
  1492. package/templates/saas/content/faq/6.data-location.fr.md +4 -0
  1493. package/templates/saas/content/faq/6.data-location.md +4 -0
  1494. package/templates/saas/content/faq/7.data-processing.de.md +4 -0
  1495. package/templates/saas/content/faq/7.data-processing.fr.md +4 -0
  1496. package/templates/saas/content/faq/7.data-processing.md +4 -0
  1497. package/templates/saas/content/home.de.md +24 -0
  1498. package/templates/saas/content/home.fr.md +24 -0
  1499. package/templates/saas/content/home.md +26 -0
  1500. package/templates/saas/content/legal/1.privacy.de.md +20 -0
  1501. package/templates/saas/content/legal/1.privacy.fr.md +20 -0
  1502. package/templates/saas/content/legal/1.privacy.md +22 -0
  1503. package/templates/saas/content/legal/2.terms.de.md +20 -0
  1504. package/templates/saas/content/legal/2.terms.fr.md +20 -0
  1505. package/templates/saas/content/legal/2.terms.md +22 -0
  1506. package/templates/saas/content/legal/3.imprint.de.md +16 -0
  1507. package/templates/saas/content/legal/3.imprint.fr.md +16 -0
  1508. package/templates/saas/content/legal/3.imprint.md +18 -0
  1509. package/templates/saas/content/logos/1.sonnenlinde.md +6 -0
  1510. package/templates/saas/content/logos/2.elsterau.md +6 -0
  1511. package/templates/saas/content/logos/3.rosental.md +6 -0
  1512. package/templates/saas/content/logos/4.muldental.md +6 -0
  1513. package/templates/saas/content/notices/5.swap-requests.de.md +3 -0
  1514. package/templates/saas/content/notices/5.swap-requests.fr.md +3 -0
  1515. package/templates/saas/content/notices/5.swap-requests.md +4 -0
  1516. package/templates/saas/content/pages/1.security.de.md +25 -0
  1517. package/templates/saas/content/pages/1.security.fr.md +25 -0
  1518. package/templates/saas/content/pages/1.security.md +25 -0
  1519. package/templates/saas/content/pages/2.about.de.md +17 -0
  1520. package/templates/saas/content/pages/2.about.fr.md +17 -0
  1521. package/templates/saas/content/pages/2.about.md +17 -0
  1522. package/templates/saas/content/pages/3.contact.de.md +15 -0
  1523. package/templates/saas/content/pages/3.contact.fr.md +15 -0
  1524. package/templates/saas/content/pages/3.contact.md +15 -0
  1525. package/templates/saas/content/people/1.lena-hartmann.de.md +4 -0
  1526. package/templates/saas/content/people/1.lena-hartmann.fr.md +4 -0
  1527. package/templates/saas/content/people/1.lena-hartmann.md +5 -0
  1528. package/templates/saas/content/people/2.jonas-pohl.de.md +4 -0
  1529. package/templates/saas/content/people/2.jonas-pohl.fr.md +4 -0
  1530. package/templates/saas/content/people/2.jonas-pohl.md +5 -0
  1531. package/templates/saas/content/posts/rest-periods.de.md +20 -0
  1532. package/templates/saas/content/posts/rest-periods.fr.md +20 -0
  1533. package/templates/saas/content/posts/rest-periods.md +22 -0
  1534. package/templates/saas/content/posts/summer-holidays.de.md +16 -0
  1535. package/templates/saas/content/posts/summer-holidays.fr.md +16 -0
  1536. package/templates/saas/content/posts/summer-holidays.md +18 -0
  1537. package/templates/saas/content/posts/swap-requests.de.md +18 -0
  1538. package/templates/saas/content/posts/swap-requests.fr.md +18 -0
  1539. package/templates/saas/content/posts/swap-requests.md +20 -0
  1540. package/templates/saas/content/pricing/1.small.de.md +11 -0
  1541. package/templates/saas/content/pricing/1.small.fr.md +11 -0
  1542. package/templates/saas/content/pricing/1.small.md +15 -0
  1543. package/templates/saas/content/pricing/2.standard.de.md +11 -0
  1544. package/templates/saas/content/pricing/2.standard.fr.md +11 -0
  1545. package/templates/saas/content/pricing/2.standard.md +16 -0
  1546. package/templates/saas/content/pricing/3.group.de.md +11 -0
  1547. package/templates/saas/content/pricing/3.group.fr.md +11 -0
  1548. package/templates/saas/content/pricing/3.group.md +12 -0
  1549. package/templates/saas/content/quotes/1.ward-lead.de.md +4 -0
  1550. package/templates/saas/content/quotes/1.ward-lead.fr.md +4 -0
  1551. package/templates/saas/content/quotes/1.ward-lead.md +5 -0
  1552. package/templates/saas/content/site.de.md +3 -0
  1553. package/templates/saas/content/site.fr.md +3 -0
  1554. package/templates/saas/content/site.md +12 -0
  1555. package/templates/saas/eslint.config.mjs +12 -0
  1556. package/templates/saas/eslint.tailwind.mjs +33 -0
  1557. package/templates/saas/ginko.config.ts +108 -0
  1558. package/templates/saas/gitignore +7 -0
  1559. package/templates/saas/i18n/blog/de.json +18 -0
  1560. package/templates/saas/i18n/blog/en.json +18 -0
  1561. package/templates/saas/i18n/blog/fr.json +18 -0
  1562. package/templates/saas/i18n/changelog/de.json +9 -0
  1563. package/templates/saas/i18n/changelog/en.json +9 -0
  1564. package/templates/saas/i18n/changelog/fr.json +9 -0
  1565. package/templates/saas/i18n/de.json +48 -0
  1566. package/templates/saas/i18n/en.json +48 -0
  1567. package/templates/saas/i18n/faq/de.json +6 -0
  1568. package/templates/saas/i18n/faq/en.json +6 -0
  1569. package/templates/saas/i18n/faq/fr.json +6 -0
  1570. package/templates/saas/i18n/fr.json +48 -0
  1571. package/templates/saas/i18n/pricing/de.json +14 -0
  1572. package/templates/saas/i18n/pricing/en.json +14 -0
  1573. package/templates/saas/i18n/pricing/fr.json +14 -0
  1574. package/templates/saas/i18n/site/de.json +39 -0
  1575. package/templates/saas/i18n/site/en.json +39 -0
  1576. package/templates/saas/i18n/site/fr.json +39 -0
  1577. package/templates/saas/modules/feature-messages.ts +19 -0
  1578. package/templates/saas/modules/feeds/index.ts +22 -0
  1579. package/templates/saas/modules/feeds/routes.ts +13 -0
  1580. package/templates/saas/modules/page-paths/index.ts +26 -0
  1581. package/templates/saas/modules/page-paths/paths.ts +48 -0
  1582. package/templates/saas/nuxt.config.ts +30 -0
  1583. package/templates/saas/package.json +63 -0
  1584. package/templates/saas/pnpm-workspace.yaml +6 -0
  1585. package/templates/saas/public/logos/care-home-four.svg +4 -0
  1586. package/templates/saas/public/logos/care-home-one.svg +4 -0
  1587. package/templates/saas/public/logos/care-home-two.svg +4 -0
  1588. package/templates/saas/public/logos/clinic-three.svg +4 -0
  1589. package/templates/saas/public/media/rota.svg +76 -0
  1590. package/templates/saas/server/middleware/changelog-feed.ts +50 -0
  1591. package/templates/saas/server/middleware/news-feed.ts +37 -0
  1592. package/templates/saas/server/plugins/font-preload.ts +17 -0
  1593. package/templates/saas/shared/utils/changelog.ts +13 -0
  1594. package/templates/saas/site-url.ts +21 -0
  1595. package/templates/saas/tsconfig.json +9 -0
  1596. package/templates/saas.json +12 -0
  1597. package/templates/starter/.env.example +8 -0
  1598. package/templates/starter/.github/screenshots/home-dark.png +0 -0
  1599. package/templates/starter/.github/screenshots/home-light.png +0 -0
  1600. package/templates/starter/.github/workflows/ci.yml +27 -0
  1601. package/templates/starter/DESIGN.md +197 -0
  1602. package/templates/starter/LICENSE +21 -0
  1603. package/templates/starter/MEDIA.md +11 -0
  1604. package/templates/starter/README.md +199 -0
  1605. package/templates/starter/app/app.config.ts +21 -0
  1606. package/templates/starter/app/app.vue +7 -0
  1607. package/templates/starter/app/assets/css/main.css +19 -0
  1608. package/templates/starter/app/assets/css/tokens.css +400 -0
  1609. package/templates/starter/app/bricks/pages.ts +38 -0
  1610. package/templates/starter/app/components/InitialsAvatar.vue +18 -0
  1611. package/templates/starter/app/components/ProseBody.vue +13 -0
  1612. package/templates/starter/app/components/block/Cards.vue +54 -0
  1613. package/templates/starter/app/components/block/Cta.vue +26 -0
  1614. package/templates/starter/app/components/block/Empty.vue +26 -0
  1615. package/templates/starter/app/components/block/Features.vue +24 -0
  1616. package/templates/starter/app/components/block/Hero.vue +47 -0
  1617. package/templates/starter/app/components/block/PageHeader.vue +21 -0
  1618. package/templates/starter/app/components/block/Section.vue +31 -0
  1619. package/templates/starter/app/components/pages/Top.vue +11 -0
  1620. package/templates/starter/app/components/site/Contact.vue +38 -0
  1621. package/templates/starter/app/components/site/Footer.vue +81 -0
  1622. package/templates/starter/app/components/site/Header.vue +52 -0
  1623. package/templates/starter/app/components/site/LanguageSwitch.vue +34 -0
  1624. package/templates/starter/app/components/site/Logo.vue +17 -0
  1625. package/templates/starter/app/components/site/NavLink.vue +19 -0
  1626. package/templates/starter/app/components/site/NavSheet.vue +63 -0
  1627. package/templates/starter/app/components/site/Notice.vue +21 -0
  1628. package/templates/starter/app/components/site/SkipLink.vue +15 -0
  1629. package/templates/starter/app/components/site/ThemeToggle.vue +28 -0
  1630. package/templates/starter/app/components/ui/button/Button.vue +30 -0
  1631. package/templates/starter/app/components/ui/button/index.ts +44 -0
  1632. package/templates/starter/app/components/ui/sheet/Sheet.vue +16 -0
  1633. package/templates/starter/app/components/ui/sheet/SheetClose.vue +13 -0
  1634. package/templates/starter/app/components/ui/sheet/SheetContent.vue +54 -0
  1635. package/templates/starter/app/components/ui/sheet/SheetDescription.vue +23 -0
  1636. package/templates/starter/app/components/ui/sheet/SheetOverlay.vue +22 -0
  1637. package/templates/starter/app/components/ui/sheet/SheetTitle.vue +23 -0
  1638. package/templates/starter/app/components/ui/sheet/SheetTrigger.vue +13 -0
  1639. package/templates/starter/app/components/ui/sheet/index.ts +7 -0
  1640. package/templates/starter/app/composables/usePageSeo.ts +50 -0
  1641. package/templates/starter/app/composables/useSiteAppConfig.ts +79 -0
  1642. package/templates/starter/app/error.vue +35 -0
  1643. package/templates/starter/app/layouts/default.vue +23 -0
  1644. package/templates/starter/app/lib/utils.ts +26 -0
  1645. package/templates/starter/app/pages/[...slug].vue +36 -0
  1646. package/templates/starter/app/pages/index.vue +24 -0
  1647. package/templates/starter/app/pages/legal/[slug].vue +46 -0
  1648. package/templates/starter/app/routes.ts +14 -0
  1649. package/templates/starter/app/utils/telHref.ts +3 -0
  1650. package/templates/starter/components.json +21 -0
  1651. package/templates/starter/content/home.de.md +16 -0
  1652. package/templates/starter/content/home.md +16 -0
  1653. package/templates/starter/content/legal/1.privacy.de.md +28 -0
  1654. package/templates/starter/content/legal/1.privacy.md +29 -0
  1655. package/templates/starter/content/legal/2.terms.de.md +21 -0
  1656. package/templates/starter/content/legal/2.terms.md +22 -0
  1657. package/templates/starter/content/legal/3.imprint.de.md +16 -0
  1658. package/templates/starter/content/legal/3.imprint.md +16 -0
  1659. package/templates/starter/content/notices/1.welcome.de.md +4 -0
  1660. package/templates/starter/content/notices/1.welcome.md +5 -0
  1661. package/templates/starter/content/pages/1.about.de.md +20 -0
  1662. package/templates/starter/content/pages/1.about.md +18 -0
  1663. package/templates/starter/content/pages/2.contact.de.md +17 -0
  1664. package/templates/starter/content/pages/2.contact.md +15 -0
  1665. package/templates/starter/content/site.md +12 -0
  1666. package/templates/starter/eslint.config.mjs +12 -0
  1667. package/templates/starter/eslint.tailwind.mjs +33 -0
  1668. package/templates/starter/ginko.config.ts +42 -0
  1669. package/templates/starter/gitignore +7 -0
  1670. package/templates/starter/i18n/de.json +6 -0
  1671. package/templates/starter/i18n/en.json +6 -0
  1672. package/templates/starter/i18n/site/de.json +39 -0
  1673. package/templates/starter/i18n/site/en.json +39 -0
  1674. package/templates/starter/modules/feature-messages.ts +19 -0
  1675. package/templates/starter/modules/feeds/index.ts +22 -0
  1676. package/templates/starter/modules/feeds/routes.ts +13 -0
  1677. package/templates/starter/modules/page-paths/index.ts +26 -0
  1678. package/templates/starter/modules/page-paths/paths.ts +48 -0
  1679. package/templates/starter/nuxt.config.ts +27 -0
  1680. package/templates/starter/package.json +55 -0
  1681. package/templates/starter/pnpm-workspace.yaml +6 -0
  1682. package/templates/starter/server/plugins/font-preload.ts +17 -0
  1683. package/templates/starter/site-url.ts +21 -0
  1684. package/templates/starter/tsconfig.json +9 -0
  1685. package/templates/starter.json +11 -0
@@ -0,0 +1,21 @@
1
+ ---
2
+ version: "4.6.0"
3
+ date: 2026-10-13
4
+ ---
5
+
6
+ Staff can now ask to swap a shift in the app, and the ward lead approves it with one tap.
7
+
8
+ <!-- more -->
9
+
10
+ ### New
11
+
12
+ - Swap requests: open a shift in the app and choose “Ask for a swap”. Planwerk asks only colleagues who have the qualification the shift needs and who keep their rest periods.
13
+ - The ward lead sees both plans side by side and approves or declines the swap.
14
+
15
+ ### Improved
16
+
17
+ - The month view of a ward with more than 60 staff opens faster.
18
+
19
+ ### Fixed
20
+
21
+ - A night shift that ended on the first day of a month was counted in the wrong month of the hours export.
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Erste Schritte
3
+ slug: erste-schritte
4
+ description: Vom neuen Konto zum ersten veröffentlichten Dienstplan.
5
+ section: Einstieg
6
+ ---
7
+
8
+ Planwerk plant die Dienste Ihres Pflegeheims oder Ihrer Klinik. Diese Seite führt Sie vom neuen Konto zum ersten Dienstplan, den Ihr Team auf dem Handy sieht. Sie brauchen die Rolle **Planung**.
9
+
10
+ ::steps
11
+ ### Stationen anlegen
12
+ Öffnen Sie **Teams** und legen Sie jede Station an, die Sie planen. Eine Station hat eine eigene Personalliste und eigene Regeln, zum Beispiel wie viele Pflegekräfte ein Nachtdienst braucht.
13
+
14
+ ### Team einladen
15
+ Wählen Sie **Personal**, dann **Einladen**, und geben Sie die E-Mail-Adressen ein. Jede Person bekommt einen Link zur App und trägt ihre Wünsche für den Monat ein.
16
+
17
+ ### Monat planen
18
+ Öffnen Sie **Dienstplan**, wählen Sie den Monat und ziehen Sie Dienste auf die Tage. Planwerk prüft jeden Dienst sofort gegen die Regeln der Station.
19
+
20
+ ### Veröffentlichen
21
+ Veröffentlichen Sie den Plan, wenn alle Prüfungen grün sind. Ihr Team bekommt eine Nachricht aufs Handy.
22
+ ::
23
+
24
+ ## Dienstarten
25
+
26
+ Jede neue Station beginnt mit diesen Dienstarten. Ihre Zeiten ändern Sie unter **Teams**, dann **Dienstarten**.
27
+
28
+ | Dienst | Zeit | Zählt als |
29
+ | --- | --- | --- |
30
+ | Früh | 06:00–14:00 | Tag |
31
+ | Spät | 14:00–22:00 | Tag |
32
+ | Nacht | 22:00–06:00 | Nacht |
33
+ | Bereitschaft | 00:00–24:00 | Bereitschaft |
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Premiers pas
3
+ slug: premiers-pas
4
+ description: D’un nouveau compte à votre premier planning publié.
5
+ section: Prise en main
6
+ ---
7
+
8
+ Planwerk planifie les postes de votre EHPAD ou de votre clinique. Cette page vous guide d’un nouveau compte au premier planning que votre équipe voit sur son téléphone. Il vous faut le rôle **Planification**.
9
+
10
+ ::steps
11
+ ### Ajoutez vos services
12
+ Ouvrez **Équipes** et ajoutez chaque service que vous planifiez. Un service a sa propre liste de personnel et ses propres règles, par exemple le nombre d’infirmiers qu’il faut pour une nuit.
13
+
14
+ ### Invitez votre équipe
15
+ Choisissez **Personnel**, puis **Inviter**, et saisissez les adresses e-mail. Chaque personne reçoit un lien vers l’application et saisit ses souhaits pour le mois.
16
+
17
+ ### Planifiez le mois
18
+ Ouvrez **Planning**, choisissez le mois et faites glisser les postes sur les jours. Planwerk vérifie aussitôt chaque poste selon les règles du service.
19
+
20
+ ### Publiez
21
+ Publiez le planning quand tous les contrôles sont au vert. Votre équipe reçoit un message sur son téléphone.
22
+ ::
23
+
24
+ ## Types de postes
25
+
26
+ Chaque nouveau service commence avec ces types de postes. Modifiez leurs horaires sous **Équipes**, puis **Types de postes**.
27
+
28
+ | Poste | Horaires | Compte comme |
29
+ | --- | --- | --- |
30
+ | Matin | 06:00–14:00 | Jour |
31
+ | Après-midi | 14:00–22:00 | Jour |
32
+ | Nuit | 22:00–06:00 | Nuit |
33
+ | Astreinte | 00:00–24:00 | Astreinte |
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: Getting started
3
+ description: From a new account to your first published rota.
4
+ section: Get started
5
+ ---
6
+
7
+ Planwerk plans the shifts of your care home or clinic. This page takes you from a new account to the first rota your team sees on their phones. You need the role **Planner**.
8
+
9
+ ::steps
10
+ ### Add your wards
11
+ Open **Teams** and add each ward you plan for. A ward has its own staff list and its own rules, for example how many nurses a night shift needs.
12
+
13
+ ### Invite your team
14
+ Choose **Staff**, then **Invite**, and enter the email addresses. Each person gets a link to the app and enters their wishes for the month.
15
+
16
+ ### Plan the month
17
+ Open **Rota**, choose the month and drag shifts onto the days. Planwerk checks each shift against the ward's rules as you go.
18
+
19
+ ### Publish
20
+ Publish the rota when every check is green. Your team gets a message on their phone.
21
+ ::
22
+
23
+ ## Shift types
24
+
25
+ Every new ward starts with these shift types. Change their times under **Teams**, then **Shift types**.
26
+
27
+ | Shift | Time | Counts as |
28
+ | --- | --- | --- |
29
+ | Early | 06:00–14:00 | Day |
30
+ | Late | 14:00–22:00 | Day |
31
+ | Night | 22:00–06:00 | Night |
32
+ | On call | 00:00–24:00 | Standby |
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: Dienste und Tausch
3
+ slug: dienste-und-tausch
4
+ description: Wie die Regelprüfung funktioniert und wie Ihr Team Dienste tauscht.
5
+ section: Anleitungen
6
+ ---
7
+
8
+ Ein Dienst gehört zu einer Station und einer Person. Planwerk prüft jede Änderung gegen die Regeln der Station: die Ruhezeit zwischen zwei Diensten, die Wochenstunden und die Mindestbesetzung.
9
+
10
+ ## Regelprüfung
11
+
12
+ Eine rote Prüfung nennt die Regel und die Person, zum Beispiel „Anna Weber: 9 Stunden Ruhezeit statt 11“. Ändern Sie den Dienst oder speichern Sie ihn mit einer Begründung; die Begründung bleibt im Verlauf des Plans.
13
+
14
+ ::callout{type="warning" title="Änderungen an einem veröffentlichten Plan"}
15
+ Eine Änderung an einem veröffentlichten Plan schickt allen Betroffenen eine Nachricht. Sehen Sie sich die Prüfungen an, bevor Sie speichern.
16
+ ::
17
+
18
+ ## Tausch
19
+
20
+ Ihr Team fragt in der App nach einem Tausch. Sie sehen die Anfrage unter **Tausch**, mit den Prüfungen für beide Personen, und nehmen sie an oder lehnen sie ab. Planwerk ändert den Plan und benachrichtigt beide.
21
+
22
+ ## Wünsche
23
+
24
+ Bevor Sie einen Monat planen, trägt Ihr Team freie Tage und Wunschdienste in der App ein. Planwerk zeigt die Wünsche im Plan, so sehen Sie, welche Ihr Plan erfüllt.
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: Postes et échanges
3
+ slug: postes-et-echanges
4
+ description: Comment fonctionnent les contrôles et comment votre équipe échange ses postes.
5
+ section: Guides
6
+ ---
7
+
8
+ Un poste appartient à un service et à une personne. Planwerk vérifie chaque modification selon les règles du service : le repos entre deux postes, les heures hebdomadaires et l’effectif minimum.
9
+
10
+ ## Contrôles
11
+
12
+ Un contrôle rouge indique la règle et la personne, par exemple « Anna Weber : 9 heures de repos au lieu de 11 ». Modifiez le poste ou enregistrez-le avec un motif ; le motif reste dans l’historique du planning.
13
+
14
+ ::callout{type="warning" title="Modifier un planning publié"}
15
+ Une modification d’un planning publié envoie un message à toutes les personnes concernées. Regardez les contrôles avant d’enregistrer.
16
+ ::
17
+
18
+ ## Échanges
19
+
20
+ Votre équipe demande un échange dans l’application. Vous voyez la demande sous **Échanges**, avec les contrôles pour les deux personnes, et vous l’acceptez ou la refusez. Planwerk met le planning à jour et prévient les deux personnes.
21
+
22
+ ## Souhaits
23
+
24
+ Avant de planifier un mois, votre équipe saisit ses jours de repos et ses postes préférés dans l’application. Planwerk affiche les souhaits dans le planning : vous voyez ceux que votre planning respecte.
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: Shifts and swaps
3
+ description: How the rule checks work and how your team swaps shifts.
4
+ section: Guides
5
+ ---
6
+
7
+ A shift belongs to one ward and one person. Planwerk checks every change against the rules of the ward: the rest time between two shifts, the weekly hours and the minimum staffing.
8
+
9
+ ## Rule checks
10
+
11
+ A red check names the rule and the person, for example “Anna Weber: 9 hours of rest instead of 11”. Change the shift, or save it with a reason; the reason stays in the rota's history.
12
+
13
+ ::callout{type="warning" title="Changes to a published rota"}
14
+ A change to a published rota sends a message to everyone it touches. Look at the checks before you save.
15
+ ::
16
+
17
+ ## Swaps
18
+
19
+ Your team asks for a swap in the app. You see the request under **Swaps**, with the checks for both people, and approve or decline it. Planwerk updates the rota and tells both people.
20
+
21
+ ## Wishes
22
+
23
+ Before you plan a month, your team enters days off and preferred shifts in the app. Planwerk shows the wishes in the rota, so you see which ones your plan meets.
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Export für die Lohnabrechnung
3
+ slug: export-lohnabrechnung
4
+ description: Die Stunden des Monats an Ihre Lohnabrechnung senden.
5
+ section: Anleitungen
6
+ ---
7
+
8
+ Am Ende jedes Monats zählt Planwerk die Stunden jeder Person zusammen, getrennt nach Tag-, Nacht-, Sonntags- und Feiertagsstunden.
9
+
10
+ ::steps
11
+ ### Monat abschließen
12
+ Öffnen Sie **Berichte**, dann **Stunden**, und wählen Sie den Monat. Prüfen Sie die Summen und schließen Sie den Monat ab; eine spätere Änderung erscheint dann als Korrektur.
13
+
14
+ ### Datei herunterladen
15
+ Wählen Sie **Export**. Die Datei ist eine CSV-Datei mit einer Zeile pro Person und einer Spalte pro Stundenart.
16
+
17
+ ### An die Lohnabrechnung senden
18
+ Laden Sie die Datei in Ihr Lohnprogramm hoch oder senden Sie sie an Ihr Lohnbüro.
19
+ ::
20
+
21
+ Im Tarif Standard nutzt der Export das Format Ihres Lohnprogramms. Fehlt Ihres in der Liste, schreiben Sie uns, und wir ergänzen es. Die Dateien bleiben auf Servern in Deutschland.
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Export pour la paie
3
+ slug: export-paie
4
+ description: Envoyer les heures du mois à votre prestataire de paie.
5
+ section: Guides
6
+ ---
7
+
8
+ À la fin de chaque mois, Planwerk additionne les heures de chaque personne, réparties en heures de jour, de nuit, du dimanche et des jours fériés.
9
+
10
+ ::steps
11
+ ### Clôturez le mois
12
+ Ouvrez **Rapports**, puis **Heures**, et choisissez le mois. Vérifiez les totaux et clôturez le mois ; une modification ultérieure apparaît alors comme une correction.
13
+
14
+ ### Téléchargez le fichier
15
+ Choisissez **Export**. Le fichier est un fichier CSV avec une ligne par personne et une colonne par type d’heures.
16
+
17
+ ### Envoyez-le à la paie
18
+ Importez le fichier dans votre logiciel de paie ou envoyez-le à votre prestataire de paie.
19
+ ::
20
+
21
+ Avec l’offre Standard, l’export utilise le format de votre logiciel de paie. S’il ne figure pas dans la liste, écrivez-nous et nous l’ajoutons. Les fichiers restent sur des serveurs en Allemagne.
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: Export for payroll
3
+ description: Send the hours of the month to your payroll provider.
4
+ section: Guides
5
+ ---
6
+
7
+ At the end of each month Planwerk adds up the hours of every person, split into day, night, Sunday and holiday hours.
8
+
9
+ ::steps
10
+ ### Close the month
11
+ Open **Reports**, then **Hours**, and choose the month. Check the totals and close the month; a later change then shows as a correction.
12
+
13
+ ### Download the file
14
+ Choose **Export**. The file is a CSV file with one line per person and one column per type of hours.
15
+
16
+ ### Send it to payroll
17
+ Upload the file to your payroll software, or send it to your payroll provider.
18
+ ::
19
+
20
+ On the Standard plan the export uses the format of your payroll software. If yours is not in the list, write to us and we add it. The files stay on servers in Germany.
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Wie wird Planwerk abgerechnet?"
3
+ answer: "Pro Pflegeheim oder Klinik, monatlich oder jährlich im Voraus, auf Rechnung. Sie zahlen per Überweisung oder Lastschrift. Alle Preise sind netto, zuzüglich Mehrwertsteuer."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Comment Planwerk est-il facturé ?"
3
+ answer: "Par établissement, chaque mois ou chaque année à l’avance, sur facture. Vous payez par virement ou par prélèvement. Tous les prix s’entendent hors TVA."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "How is Planwerk billed?"
3
+ answer: "Per care home or clinic, monthly or yearly in advance, by invoice. You pay by bank transfer or direct debit. All prices are net, plus VAT."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Wie kündigen wir?"
3
+ answer: "In der App unter Einstellungen, Vertrag, oder per E-Mail. Ihr Tarif endet zum Ende des bezahlten Abrechnungszeitraums; es gibt keine Mindestlaufzeit."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Comment résilier ?"
3
+ answer: "Dans l’application, sous Paramètres, Contrat, ou par e-mail. Votre offre prend fin à la fin de la période de facturation payée ; il n’y a pas de durée minimale."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "How do we cancel?"
3
+ answer: "In the app under Settings, Contract, or by email. Your plan ends at the end of the billing period you have paid; there is no minimum term."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Können wir unsere Daten exportieren?"
3
+ answer: "Ja, jederzeit: Pläne, Wünsche und Stunden als CSV-Dateien. Nach der Kündigung können Sie noch 30 Tage lang exportieren. Danach löschen wir Ihre Daten."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Pouvons-nous exporter nos données ?"
3
+ answer: "Oui, à tout moment : plannings, souhaits et heures en fichiers CSV. Après la résiliation, vous pouvez encore exporter pendant 30 jours. Ensuite, nous supprimons vos données."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Can we export our data?"
3
+ answer: "Yes, at any time: plans, requests and hours as CSV files. After you cancel, you can still export for 30 days. Then we delete your data."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Können wir den Tarif später wechseln?"
3
+ answer: "Ja. Ein größerer Tarif gilt sofort, und wir berechnen die Differenz für den Rest des Abrechnungszeitraums. Ein kleinerer Tarif gilt ab dem nächsten Abrechnungszeitraum."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Pouvons-nous changer d’offre plus tard ?"
3
+ answer: "Oui. Une offre plus grande s’applique tout de suite, et nous facturons la différence pour le reste de la période. Une offre plus petite s’applique à partir de la période suivante."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Can we change our plan later?"
3
+ answer: "Yes. A larger plan applies at once, and we charge the difference for the rest of the billing period. A smaller plan applies from the next billing period."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Was passiert nach dem kostenlosen Test?"
3
+ answer: "Der Test endet nach 30 Tagen von selbst; wir berechnen nichts. Wenn Sie weiter planen möchten, wählen Sie einen Tarif. Die Pläne aus dem Test bleiben erhalten."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Et après l’essai gratuit ?"
3
+ answer: "L’essai s’arrête de lui-même après 30 jours ; nous ne facturons rien. Pour continuer à planifier, choisissez une offre. Les plannings faits pendant l’essai sont conservés."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "What happens after the free trial?"
3
+ answer: "The trial ends by itself after 30 days; we do not charge anything. To keep planning, choose a plan. The plans you made in the trial stay."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Wo werden unsere Daten gespeichert?"
3
+ answer: "Auf Servern in Rechenzentren in Deutschland. Wir übermitteln keine personenbezogenen Daten in Länder außerhalb der EU."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Où sont stockées nos données ?"
3
+ answer: "Sur des serveurs situés dans des centres de données en Allemagne. Nous ne transférons aucune donnée personnelle vers des pays hors de l’UE."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Where is our data stored?"
3
+ answer: "On servers in data centres in Germany. We do not transfer personal data to countries outside the EU."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Schließen Sie einen Vertrag zur Auftragsverarbeitung ab?"
3
+ answer: "Ja. Zu jedem Vertrag gehört ein Vertrag zur Auftragsverarbeitung nach Art. 28 DSGVO. Schreiben Sie uns, wenn Sie ihn vor der Anmeldung lesen möchten."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Signez-vous un accord de sous-traitance ?"
3
+ answer: "Oui. Chaque contrat comprend un accord de sous-traitance conforme à l’article 28 du RGPD. Écrivez-nous si vous souhaitez le lire avant de vous inscrire."
4
+ ---
@@ -0,0 +1,4 @@
1
+ ---
2
+ question: "Do you sign a data processing agreement?"
3
+ answer: "Yes. Every contract comes with a data processing agreement under Art. 28 GDPR. Write to us if you want to read it before you sign up."
4
+ ---
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: "Dienstplanung für Pflegeheime und kleine Kliniken."
3
+ lead: "Planwerk ist eine Web-App für den Monatsdienstplan. Sie prüft Ruhezeiten und Qualifikationen schon beim Planen, zeigt allen ihre Dienste auf dem Handy und gibt die Stunden an die Lohnabrechnung weiter."
4
+ image:
5
+ alt: "Illustration eines Wochendienstplans: eine Zeile pro Person, Früh-, Spät- und Nachtdienste als Blöcke und ein offener Dienst"
6
+ features:
7
+ - title: "Den Monat planen"
8
+ text: "Erstellen Sie den Dienstplan aus Verträgen, Qualifikationen und den Wünschen, die Ihre Beschäftigten eintragen. Auf Wunsch mit dem Plan des Vormonats als Start."
9
+ - title: "Regeln beim Planen geprüft"
10
+ text: "Ruhezeiten, Höchstarbeitszeit und die Zahl der Fachkräfte pro Dienst werden geprüft, während Sie planen, nicht danach."
11
+ - title: "Dienste auf jedem Handy"
12
+ text: "Beschäftigte sehen ihre Dienste im Browser oder in der App, tragen Wünsche ein und bekommen eine Nachricht, wenn sich ihr Plan ändert."
13
+ - title: "Tauschen ohne Telefonkette"
14
+ text: "Eine Tauschanfrage geht an Kolleginnen und Kollegen mit der passenden Qualifikation, und die Wohnbereichsleitung gibt sie mit einem Fingertipp frei."
15
+ facts:
16
+ - title: "In Deutschland gehostet"
17
+ text: "Planwerk läuft auf Servern in Rechenzentren in Deutschland. Ihre Daten bleiben in der EU."
18
+ - title: "DSGVO"
19
+ text: "Zu jedem Vertrag gehört ein Vertrag zur Auftragsverarbeitung nach Art. 28 DSGVO."
20
+ - title: "Verschlüsselt"
21
+ text: "Jede Verbindung ist verschlüsselt, ebenso die nächtlichen Sicherungen."
22
+ - title: "Ihre Daten bleiben Ihre"
23
+ text: "Exportieren Sie Pläne und Stunden jederzeit als CSV-Dateien, auch noch 30 Tage nach der Kündigung."
24
+ ---
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: "Le planning des équipes pour les EHPAD et les petites cliniques."
3
+ lead: "Planwerk est une application web pour le planning du mois. Elle vérifie les temps de repos et les qualifications pendant que vous planifiez, montre à chacun ses horaires sur son téléphone et transmet les heures à la paie."
4
+ image:
5
+ alt: "Illustration d’un planning de la semaine : une ligne par personne, les postes du matin, de l’après-midi et de nuit en blocs, et un poste à pourvoir"
6
+ features:
7
+ - title: "Planifier le mois"
8
+ text: "Construisez le planning à partir des contrats, des qualifications et des souhaits saisis par votre personnel. Partez du planning du mois précédent si vous le souhaitez."
9
+ - title: "Les règles vérifiées en direct"
10
+ text: "Temps de repos, durée maximale du travail et nombre de soignants qualifiés par poste sont vérifiés pendant que vous planifiez, pas après."
11
+ - title: "Les horaires sur chaque téléphone"
12
+ text: "Le personnel voit ses postes dans le navigateur ou l’application, saisit ses souhaits et reçoit un message quand son planning change."
13
+ - title: "Des échanges sans coups de fil"
14
+ text: "Une demande d’échange part vers les collègues qui ont la bonne qualification, et le cadre de santé la valide d’un geste."
15
+ facts:
16
+ - title: "Hébergé en Allemagne"
17
+ text: "Planwerk fonctionne sur des serveurs situés dans des centres de données en Allemagne. Vos données restent dans l’UE."
18
+ - title: "RGPD"
19
+ text: "Chaque contrat comprend un accord de sous-traitance conforme à l’article 28 du RGPD."
20
+ - title: "Chiffré"
21
+ text: "Chaque connexion est chiffrée, tout comme les sauvegardes de chaque nuit."
22
+ - title: "Vos données restent les vôtres"
23
+ text: "Exportez plannings et heures en fichiers CSV à tout moment, et encore 30 jours après la résiliation."
24
+ ---
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: "Shift planning for care homes and small clinics."
3
+ lead: "Planwerk is a web app for the monthly rota. It checks rest periods and qualifications while you plan, shows each person their shifts on their phone, and hands the hours to payroll."
4
+ trialUrl: https://app.planwerk.example/signup
5
+ image:
6
+ src: /media/rota.svg
7
+ alt: "Illustration of a week’s shift plan: one row per person, early, late and night shifts as blocks, and one open shift"
8
+ features:
9
+ - title: "Plan the month"
10
+ text: "Build the rota from contracts, qualifications and the shift requests your staff enter. Start from last month’s plan if you like."
11
+ - title: "Rules checked while you plan"
12
+ text: "Rest periods, maximum hours and the number of qualified staff on each shift are checked as you plan, not afterwards."
13
+ - title: "Shifts on every phone"
14
+ text: "Staff see their shifts in the browser or the app, enter their shift requests, and get a message when their plan changes."
15
+ - title: "Swaps without phone calls"
16
+ text: "A swap request goes to colleagues with the right qualification, and the ward lead approves it with one tap."
17
+ facts:
18
+ - title: "Hosted in Germany"
19
+ text: "Planwerk runs on servers in data centres in Germany. Your data stays in the EU."
20
+ - title: "GDPR"
21
+ text: "Every contract comes with a data processing agreement under Art. 28 GDPR."
22
+ - title: "Encrypted"
23
+ text: "Every connection is encrypted, and so are the nightly backups."
24
+ - title: "Your data stays yours"
25
+ text: "Export plans and hours as CSV files at any time, and for 30 days after you cancel."
26
+ ---
@@ -0,0 +1,20 @@
1
+ ---
2
+ # Platzhalter: Ersetzen Sie diese Seite vor dem Livegang durch Ihren eigenen Text oder löschen Sie die Datei, wenn Sie sie nicht brauchen.
3
+ title: "Datenschutzerklärung"
4
+ slug: datenschutz
5
+ description: "Wie diese Website mit personenbezogenen Daten umgeht."
6
+ ---
7
+
8
+ > **Platzhalter:** Text aus der Vorlage, keine Rechtsberatung. Ersetzen Sie ihn, bevor die Website online geht.
9
+
10
+ Diese Seite gilt für die Website. Die Daten, die Ihre Kundinnen und Kunden in Ihrem Produkt speichern, sind ein eigenes Thema: Beschreiben Sie sie im Vertrag zur Auftragsverarbeitung, nicht hier.
11
+
12
+ Eine Datenschutzerklärung für die Website beschreibt in der Regel:
13
+
14
+ - wer für die Website verantwortlich ist, mit Anschrift und Kontaktdaten, und Ihren Datenschutzbeauftragten, wenn Sie einen haben müssen
15
+ - welche personenbezogenen Daten die Website verarbeitet und wozu, zum Beispiel Server-Logs bei Ihrem Hoster und Anfragen per E-Mail
16
+ - die Rechtsgrundlage und wie lange Sie die Daten aufbewahren
17
+ - welche Dienste Sie für die Website nutzen (Hosting, E-Mail) und wo diese Daten verarbeiten
18
+ - die Rechte der Besucherinnen und Besucher: Auskunft, Berichtigung, Löschung, Widerspruch und Beschwerde bei der Datenschutzaufsicht Ihres Bundeslandes
19
+
20
+ So wie sie ausgeliefert wird, nutzt diese Vorlage keine Statistikdienste, setzt keine Tracking-Cookies, lädt nichts von fremden Servern und hat keine Formulare: „Kostenlos testen“ führt zu Ihrer App, und Anfragen sind E-Mails. Wenn Sie einen Dienst ergänzen, der Daten erhebt, beschreiben Sie ihn hier.
@@ -0,0 +1,20 @@
1
+ ---
2
+ # Espace réservé : remplacez cette page par votre propre texte avant la mise en ligne, ou supprimez le fichier si vous n’en avez pas besoin.
3
+ title: "Politique de confidentialité"
4
+ slug: confidentialite
5
+ description: "Comment ce site traite les données personnelles."
6
+ ---
7
+
8
+ > **Espace réservé :** texte du modèle, pas un conseil juridique. Remplacez-le avant la mise en ligne du site.
9
+
10
+ Cette page concerne le site. Les données que vos clients conservent dans votre produit sont un autre sujet : décrivez-les dans votre accord de sous-traitance, pas ici.
11
+
12
+ Une politique de confidentialité du site indique en général :
13
+
14
+ - qui est responsable du site, avec adresse et coordonnées, et votre délégué à la protection des données si vous devez en avoir un
15
+ - quelles données personnelles le site traite et pourquoi, par exemple les journaux du serveur chez votre hébergeur et les demandes par e-mail
16
+ - la base juridique et la durée de conservation des données
17
+ - quels services vous utilisez pour le site (hébergement, e-mail) et où ils traitent les données
18
+ - les droits des visiteurs : accès, rectification, effacement, opposition et réclamation auprès de l’autorité de protection des données du Land concerné
19
+
20
+ Tel qu’il est livré, ce modèle n’utilise aucun outil de statistiques, ne dépose aucun cookie de suivi, ne charge rien depuis d’autres serveurs et n’a pas de formulaire : « Commencer l’essai gratuit » mène à votre application, et les demandes sont des e-mails. Si vous ajoutez un service qui collecte des données, décrivez-le ici.
@@ -0,0 +1,22 @@
1
+ ---
2
+ # Placeholder: replace this page with your own text before you go live, or delete the file if you do not need it.
3
+ title: "Privacy policy"
4
+ slug: privacy
5
+ legalType: privacy
6
+ updatedAt: 2026-10-16
7
+ description: "How this website handles personal data."
8
+ ---
9
+
10
+ > **Placeholder:** template text, not legal advice. Replace it before the site goes live.
11
+
12
+ This page covers the website. The data your customers keep in your product is a separate matter: describe it in your data processing agreement, not here.
13
+
14
+ A privacy policy for the website usually covers:
15
+
16
+ - who is responsible for the website, with address and contact details, and your data protection officer if you must have one
17
+ - which personal data the website processes and why, for example server logs at your host and enquiries by email
18
+ - the legal basis, and how long you keep the data
19
+ - which services you use to run the site (hosting, email) and where they process data
20
+ - the rights of visitors: access, correction, deletion, objection, and a complaint to the data protection authority of your federal state
21
+
22
+ As shipped, this template uses no analytics, sets no tracking cookies, loads nothing from other servers and has no forms: “Start free trial” leads to your app, and enquiries are emails. If you add a service that collects data, describe it here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ # Platzhalter: Ersetzen Sie diese Seite vor dem Livegang durch Ihren eigenen Text oder löschen Sie die Datei, wenn Sie sie nicht brauchen.
3
+ title: "Allgemeine Geschäftsbedingungen"
4
+ slug: agb
5
+ description: "Die Bedingungen, zu denen wir unsere Software an Geschäftskunden liefern."
6
+ ---
7
+
8
+ > **Platzhalter:** Text aus der Vorlage, keine Rechtsberatung. Ersetzen Sie ihn, bevor die Website online geht.
9
+
10
+ Allgemeine Geschäftsbedingungen für Software, die Geschäftskunden online nutzen, regeln in der Regel:
11
+
12
+ - mit wem der Vertrag geschlossen wird, und dass er nur für Unternehmen gilt
13
+ - wie der Vertrag zustande kommt: der kostenlose Test, die Wahl eines Tarifs und wann der Vertrag beginnt
14
+ - was die Leistung umfasst, wie verfügbar sie ist und geplante Wartungen
15
+ - Preise (netto, zuzüglich Umsatzsteuer), Abrechnungszeiträume, Zahlung und was bei Zahlungsverzug geschieht
16
+ - den Wechsel des Tarifs, die Laufzeit und die Kündigung
17
+ - was mit den Daten des Kunden am Vertragsende geschieht, und den Vertrag zur Auftragsverarbeitung nach Art. 28 DSGVO
18
+ - Haftung und ihre Grenzen, den Gerichtsstand und das anwendbare Recht
19
+
20
+ Die Preise auf der Preisseite und die Antworten zu Abrechnung, Kündigung und Datenexport müssen dasselbe sagen wie diese Bedingungen.
@@ -0,0 +1,20 @@
1
+ ---
2
+ # Espace réservé : remplacez cette page par votre propre texte avant la mise en ligne, ou supprimez le fichier si vous n’en avez pas besoin.
3
+ title: "Conditions générales d’utilisation"
4
+ slug: conditions
5
+ description: "Les conditions auxquelles nous fournissons notre logiciel aux clients professionnels."
6
+ ---
7
+
8
+ > **Espace réservé :** texte du modèle, pas un conseil juridique. Remplacez-le avant la mise en ligne du site.
9
+
10
+ Les conditions d’un logiciel utilisé en ligne par des clients professionnels règlent en général :
11
+
12
+ - avec qui le contrat est conclu, et qu’il est réservé aux professionnels
13
+ - comment le contrat est conclu : l’essai gratuit, le choix d’une offre et le début du contrat
14
+ - ce que comprend le service, sa disponibilité et les maintenances prévues
15
+ - les prix (hors TVA), les périodes de facturation, le paiement et ce qui se passe en cas de retard
16
+ - le changement d’offre, la durée et la résiliation
17
+ - ce que deviennent les données du client à la fin du contrat, et l’accord de sous-traitance conforme à l’article 28 du RGPD
18
+ - la responsabilité et ses limites, le tribunal compétent et le droit applicable
19
+
20
+ Les prix de la page des tarifs et les réponses sur la facturation, la résiliation et l’export des données doivent dire la même chose que ces conditions.
@@ -0,0 +1,22 @@
1
+ ---
2
+ # Placeholder: replace this page with your own text before you go live, or delete the file if you do not need it.
3
+ title: "Terms of service"
4
+ slug: terms
5
+ legalType: terms
6
+ updatedAt: 2026-10-16
7
+ description: "The terms under which we provide our software to business customers."
8
+ ---
9
+
10
+ > **Placeholder:** template text, not legal advice. Replace it before the site goes live.
11
+
12
+ Terms of service for software that business customers use online usually cover:
13
+
14
+ - who the contract is with, and that it is for businesses only
15
+ - how the contract comes about: the free trial, choosing a plan, and when the contract starts
16
+ - what the service includes, how available it is, and planned maintenance
17
+ - prices (net, plus VAT), billing periods, payment and what happens when a payment is late
18
+ - changing plans, the term and how to cancel
19
+ - what happens to the customer’s data at the end of the contract, and the data processing agreement under Art. 28 GDPR
20
+ - liability and its limits, the place of jurisdiction and the applicable law
21
+
22
+ The prices on the pricing page and the answers about billing, cancellation and data export must say the same as these terms.
@@ -0,0 +1,16 @@
1
+ ---
2
+ # Impressum, Anleitung: Die Angaben oben kommen aus content/site.md. In Deutschland braucht die Website eines Unternehmens ein Impressum nach dem DDG und, für einen Blog, nach dem MStV. Ersetzen Sie die beiden Abschnitte unten durch Ihre eigenen Angaben.
3
+ title: "Impressum"
4
+ slug: impressum
5
+ description: "Wer diese Website betreibt."
6
+ ---
7
+
8
+ > **Platzhalter:** Text aus der Vorlage, keine Rechtsberatung. Ersetzen Sie ihn, bevor die Website online geht.
9
+
10
+ ## Geschäftsführung
11
+
12
+ (Namen der Geschäftsführerinnen und Geschäftsführer der GmbH.)
13
+
14
+ ## Verantwortlich für den Blog
15
+
16
+ Nach § 18 Abs. 2 MStV: (Name und Anschrift).