virastack 0.0.1 → 1.0.1

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 (447) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +94 -18
  3. package/bin/virastack.js +7 -0
  4. package/package.json +43 -9
  5. package/src/commands/add.js +64 -0
  6. package/src/commands/init.js +286 -0
  7. package/src/i18n.js +231 -0
  8. package/src/index.js +64 -0
  9. package/src/utils/args.js +60 -0
  10. package/src/utils/copy-template.js +81 -0
  11. package/src/utils/exec.js +29 -0
  12. package/src/utils/git.js +38 -0
  13. package/src/utils/is-online.js +14 -0
  14. package/src/utils/package-info.js +12 -0
  15. package/src/utils/package-manager.js +33 -0
  16. package/src/utils/setup-env.js +25 -0
  17. package/src/utils/telemetry.js +86 -0
  18. package/src/utils/tools.js +48 -0
  19. package/src/utils/update-package-json.js +44 -0
  20. package/src/utils/update-readme.js +25 -0
  21. package/src/utils/validate-project-name.js +26 -0
  22. package/templates/nextjs/.changeset/README.md +8 -0
  23. package/templates/nextjs/.changeset/config.json +11 -0
  24. package/templates/nextjs/.env.example +6 -0
  25. package/templates/nextjs/.env.local +6 -0
  26. package/templates/nextjs/.eslintcache +1 -0
  27. package/templates/nextjs/.github/workflows/ci.yml +41 -0
  28. package/templates/nextjs/.husky/commit-msg +1 -0
  29. package/templates/nextjs/.husky/pre-commit +1 -0
  30. package/templates/nextjs/.husky/pre-push +1 -0
  31. package/templates/nextjs/.prettierignore +6 -0
  32. package/templates/nextjs/.prettierrc +42 -0
  33. package/templates/nextjs/.vscode/extensions.json +7 -0
  34. package/templates/nextjs/.vscode/settings.json +20 -0
  35. package/templates/nextjs/LICENSE +21 -0
  36. package/templates/nextjs/README.md +202 -0
  37. package/templates/nextjs/_gitignore +45 -0
  38. package/templates/nextjs/commitlint.config.js +6 -0
  39. package/templates/nextjs/eslint.config.mjs +27 -0
  40. package/templates/nextjs/knip.config.js +25 -0
  41. package/templates/nextjs/next-env.d.ts +6 -0
  42. package/templates/nextjs/next.config.ts +39 -0
  43. package/templates/nextjs/package.json +115 -0
  44. package/templates/nextjs/pnpm-lock.yaml +6467 -0
  45. package/templates/nextjs/pnpm-workspace.yaml +3 -0
  46. package/templates/nextjs/postcss.config.mjs +7 -0
  47. package/templates/nextjs/public/favicon.ico +0 -0
  48. package/templates/nextjs/public/llms.txt +96 -0
  49. package/templates/nextjs/public/logo.png +0 -0
  50. package/templates/nextjs/public/logo.webp +0 -0
  51. package/templates/nextjs/public/og.png +0 -0
  52. package/templates/nextjs/src/app/error.tsx +34 -0
  53. package/templates/nextjs/src/app/favicon.ico +0 -0
  54. package/templates/nextjs/src/app/global-error.tsx +32 -0
  55. package/templates/nextjs/src/app/layout.tsx +37 -0
  56. package/templates/nextjs/src/app/loading.tsx +12 -0
  57. package/templates/nextjs/src/app/manifest.ts +22 -0
  58. package/templates/nextjs/src/app/not-found.tsx +18 -0
  59. package/templates/nextjs/src/app/page.tsx +5 -0
  60. package/templates/nextjs/src/app/robots.ts +13 -0
  61. package/templates/nextjs/src/app/sitemap.ts +14 -0
  62. package/templates/nextjs/src/components/shared/ThemeToggle.tsx +30 -0
  63. package/templates/nextjs/src/components/ui/avatar.tsx +54 -0
  64. package/templates/nextjs/src/components/ui/button.tsx +46 -0
  65. package/templates/nextjs/src/components/ui/dialog.tsx +107 -0
  66. package/templates/nextjs/src/components/ui/field.tsx +24 -0
  67. package/templates/nextjs/src/components/ui/index.ts +27 -0
  68. package/templates/nextjs/src/components/ui/input.tsx +23 -0
  69. package/templates/nextjs/src/components/ui/label.tsx +17 -0
  70. package/templates/nextjs/src/components/ui/skeleton.tsx +13 -0
  71. package/templates/nextjs/src/components/ui/table.tsx +94 -0
  72. package/templates/nextjs/src/components/ui/tabs.tsx +46 -0
  73. package/templates/nextjs/src/config/seo.config.ts +37 -0
  74. package/templates/nextjs/src/config/site.config.ts +15 -0
  75. package/templates/nextjs/src/constants/index.ts +5 -0
  76. package/templates/nextjs/src/env.ts +41 -0
  77. package/templates/nextjs/src/features/landing/api/get-users.api.ts +7 -0
  78. package/templates/nextjs/src/features/landing/api/index.ts +2 -0
  79. package/templates/nextjs/src/features/landing/api/query-keys.ts +7 -0
  80. package/templates/nextjs/src/features/landing/components/CartDemo.tsx +66 -0
  81. package/templates/nextjs/src/features/landing/components/Features.tsx +39 -0
  82. package/templates/nextjs/src/features/landing/components/Hero.tsx +65 -0
  83. package/templates/nextjs/src/features/landing/components/LandingPage.tsx +17 -0
  84. package/templates/nextjs/src/features/landing/components/ProjectFormDemo.tsx +62 -0
  85. package/templates/nextjs/src/features/landing/components/Reveal.tsx +83 -0
  86. package/templates/nextjs/src/features/landing/components/Showcase.tsx +66 -0
  87. package/templates/nextjs/src/features/landing/components/UsersDemo.tsx +188 -0
  88. package/templates/nextjs/src/features/landing/data/features.data.tsx +47 -0
  89. package/templates/nextjs/src/features/landing/data/index.ts +1 -0
  90. package/templates/nextjs/src/features/landing/helpers/get-initials.ts +15 -0
  91. package/templates/nextjs/src/features/landing/helpers/index.ts +7 -0
  92. package/templates/nextjs/src/features/landing/helpers/motion.ts +21 -0
  93. package/templates/nextjs/src/features/landing/hooks/index.ts +1 -0
  94. package/templates/nextjs/src/features/landing/hooks/use-users.ts +16 -0
  95. package/templates/nextjs/src/features/landing/icons/index.ts +6 -0
  96. package/templates/nextjs/src/features/landing/icons/nextjs.tsx +68 -0
  97. package/templates/nextjs/src/features/landing/icons/react-hook-form.tsx +18 -0
  98. package/templates/nextjs/src/features/landing/icons/react.tsx +20 -0
  99. package/templates/nextjs/src/features/landing/icons/tailwind.tsx +14 -0
  100. package/templates/nextjs/src/features/landing/icons/tanstack.tsx +321 -0
  101. package/templates/nextjs/src/features/landing/icons/typescript.tsx +16 -0
  102. package/templates/nextjs/src/features/landing/index.ts +1 -0
  103. package/templates/nextjs/src/features/landing/schemas/index.ts +1 -0
  104. package/templates/nextjs/src/features/landing/schemas/project.schema.ts +7 -0
  105. package/templates/nextjs/src/features/landing/stores/counter.store.ts +18 -0
  106. package/templates/nextjs/src/features/landing/stores/index.ts +1 -0
  107. package/templates/nextjs/src/features/landing/types/index.ts +1 -0
  108. package/templates/nextjs/src/features/landing/types/user.types.ts +9 -0
  109. package/templates/nextjs/src/helpers/format-date.ts +13 -0
  110. package/templates/nextjs/src/helpers/index.ts +1 -0
  111. package/templates/nextjs/src/hooks/index.ts +5 -0
  112. package/templates/nextjs/src/lib/api.ts +97 -0
  113. package/templates/nextjs/src/lib/query-client.ts +18 -0
  114. package/templates/nextjs/src/lib/utils.ts +12 -0
  115. package/templates/nextjs/src/providers/Providers.tsx +15 -0
  116. package/templates/nextjs/src/providers/QueryProvider.tsx +19 -0
  117. package/templates/nextjs/src/providers/ThemeProvider.tsx +9 -0
  118. package/templates/nextjs/src/providers/index.ts +1 -0
  119. package/templates/nextjs/src/proxy.ts +6 -0
  120. package/templates/nextjs/src/schemas/index.ts +5 -0
  121. package/templates/nextjs/src/stores/index.ts +5 -0
  122. package/templates/nextjs/src/styles/tailwind.css +122 -0
  123. package/templates/nextjs/src/types/site-config.types.ts +10 -0
  124. package/templates/nextjs/tsconfig.json +45 -0
  125. package/templates/nextjs/tsconfig.tsbuildinfo +1 -0
  126. package/templates/tanstack/.changeset/README.md +8 -0
  127. package/templates/tanstack/.changeset/config.json +11 -0
  128. package/templates/tanstack/.env.example +6 -0
  129. package/templates/tanstack/.env.local +6 -0
  130. package/templates/tanstack/.eslintcache +1 -0
  131. package/templates/tanstack/.github/workflows/ci.yml +41 -0
  132. package/templates/tanstack/.husky/commit-msg +1 -0
  133. package/templates/tanstack/.husky/pre-commit +1 -0
  134. package/templates/tanstack/.husky/pre-push +1 -0
  135. package/templates/tanstack/.prettierignore +7 -0
  136. package/templates/tanstack/.prettierrc +41 -0
  137. package/templates/tanstack/.vscode/extensions.json +7 -0
  138. package/templates/tanstack/.vscode/settings.json +22 -0
  139. package/templates/tanstack/LICENSE +21 -0
  140. package/templates/tanstack/README.md +204 -0
  141. package/templates/tanstack/_gitignore +52 -0
  142. package/templates/tanstack/commitlint.config.js +6 -0
  143. package/templates/tanstack/eslint.config.js +28 -0
  144. package/templates/tanstack/knip.config.js +22 -0
  145. package/templates/tanstack/package.json +130 -0
  146. package/templates/tanstack/pnpm-lock.yaml +5835 -0
  147. package/templates/tanstack/pnpm-workspace.yaml +3 -0
  148. package/templates/tanstack/public/favicon.ico +0 -0
  149. package/templates/tanstack/public/llms.txt +86 -0
  150. package/templates/tanstack/public/logo.png +0 -0
  151. package/templates/tanstack/public/logo.webp +0 -0
  152. package/templates/tanstack/public/og.png +0 -0
  153. package/templates/tanstack/src/components/shared/DefaultCatchBoundary.tsx +36 -0
  154. package/templates/tanstack/src/components/shared/NotFound.tsx +18 -0
  155. package/templates/tanstack/src/components/shared/Pending.tsx +13 -0
  156. package/templates/tanstack/src/components/shared/ThemeToggle.tsx +31 -0
  157. package/templates/tanstack/src/components/ui/avatar.tsx +52 -0
  158. package/templates/tanstack/src/components/ui/button.tsx +47 -0
  159. package/templates/tanstack/src/components/ui/dialog.tsx +107 -0
  160. package/templates/tanstack/src/components/ui/field.tsx +24 -0
  161. package/templates/tanstack/src/components/ui/index.ts +27 -0
  162. package/templates/tanstack/src/components/ui/input.tsx +23 -0
  163. package/templates/tanstack/src/components/ui/label.tsx +17 -0
  164. package/templates/tanstack/src/components/ui/skeleton.tsx +13 -0
  165. package/templates/tanstack/src/components/ui/table.tsx +94 -0
  166. package/templates/tanstack/src/components/ui/tabs.tsx +46 -0
  167. package/templates/tanstack/src/config/seo.config.ts +52 -0
  168. package/templates/tanstack/src/config/site.config.ts +15 -0
  169. package/templates/tanstack/src/constants/index.ts +5 -0
  170. package/templates/tanstack/src/env.ts +47 -0
  171. package/templates/tanstack/src/features/landing/api/get-users.api.ts +7 -0
  172. package/templates/tanstack/src/features/landing/api/index.ts +2 -0
  173. package/templates/tanstack/src/features/landing/api/query-keys.ts +7 -0
  174. package/templates/tanstack/src/features/landing/components/CartDemo.tsx +66 -0
  175. package/templates/tanstack/src/features/landing/components/Features.tsx +39 -0
  176. package/templates/tanstack/src/features/landing/components/Hero.tsx +63 -0
  177. package/templates/tanstack/src/features/landing/components/LandingPage.tsx +17 -0
  178. package/templates/tanstack/src/features/landing/components/ProjectFormDemo.tsx +63 -0
  179. package/templates/tanstack/src/features/landing/components/Reveal.tsx +83 -0
  180. package/templates/tanstack/src/features/landing/components/Showcase.tsx +66 -0
  181. package/templates/tanstack/src/features/landing/components/UsersDemo.tsx +191 -0
  182. package/templates/tanstack/src/features/landing/data/features.data.tsx +45 -0
  183. package/templates/tanstack/src/features/landing/data/index.ts +1 -0
  184. package/templates/tanstack/src/features/landing/helpers/get-initials.ts +15 -0
  185. package/templates/tanstack/src/features/landing/helpers/index.ts +7 -0
  186. package/templates/tanstack/src/features/landing/helpers/motion.ts +21 -0
  187. package/templates/tanstack/src/features/landing/hooks/index.ts +1 -0
  188. package/templates/tanstack/src/features/landing/hooks/use-users.ts +19 -0
  189. package/templates/tanstack/src/features/landing/icons/index.ts +5 -0
  190. package/templates/tanstack/src/features/landing/icons/react-hook-form.tsx +18 -0
  191. package/templates/tanstack/src/features/landing/icons/react.tsx +20 -0
  192. package/templates/tanstack/src/features/landing/icons/tailwind.tsx +14 -0
  193. package/templates/tanstack/src/features/landing/icons/tanstack.tsx +321 -0
  194. package/templates/tanstack/src/features/landing/icons/typescript.tsx +16 -0
  195. package/templates/tanstack/src/features/landing/index.ts +1 -0
  196. package/templates/tanstack/src/features/landing/schemas/index.ts +1 -0
  197. package/templates/tanstack/src/features/landing/schemas/project.schema.ts +7 -0
  198. package/templates/tanstack/src/features/landing/stores/counter.store.ts +18 -0
  199. package/templates/tanstack/src/features/landing/stores/index.ts +1 -0
  200. package/templates/tanstack/src/features/landing/types/index.ts +1 -0
  201. package/templates/tanstack/src/features/landing/types/user.types.ts +9 -0
  202. package/templates/tanstack/src/helpers/format-date.ts +13 -0
  203. package/templates/tanstack/src/helpers/index.ts +1 -0
  204. package/templates/tanstack/src/hooks/index.ts +5 -0
  205. package/templates/tanstack/src/lib/api.ts +97 -0
  206. package/templates/tanstack/src/lib/query-client.ts +18 -0
  207. package/templates/tanstack/src/lib/utils.ts +13 -0
  208. package/templates/tanstack/src/providers/Providers.tsx +12 -0
  209. package/templates/tanstack/src/providers/ThemeProvider.tsx +98 -0
  210. package/templates/tanstack/src/providers/devtools.tsx +6 -0
  211. package/templates/tanstack/src/providers/index.ts +1 -0
  212. package/templates/tanstack/src/providers/root-provider.ts +9 -0
  213. package/templates/tanstack/src/routeTree.gen.ts +123 -0
  214. package/templates/tanstack/src/router.tsx +27 -0
  215. package/templates/tanstack/src/routes/__root.tsx +78 -0
  216. package/templates/tanstack/src/routes/index.tsx +13 -0
  217. package/templates/tanstack/src/routes/robots[.]txt.ts +21 -0
  218. package/templates/tanstack/src/routes/site[.]webmanifest.ts +32 -0
  219. package/templates/tanstack/src/routes/sitemap[.]xml.ts +27 -0
  220. package/templates/tanstack/src/schemas/index.ts +5 -0
  221. package/templates/tanstack/src/start.ts +20 -0
  222. package/templates/tanstack/src/stores/index.ts +5 -0
  223. package/templates/tanstack/src/styles/tailwind.css +123 -0
  224. package/templates/tanstack/src/types/site-config.types.ts +10 -0
  225. package/templates/tanstack/tsconfig.json +25 -0
  226. package/templates/tanstack/tsr.config.json +3 -0
  227. package/templates/tanstack/vite.config.ts +12 -0
  228. package/templates-i18n/nextjs/.changeset/README.md +8 -0
  229. package/templates-i18n/nextjs/.changeset/config.json +11 -0
  230. package/templates-i18n/nextjs/.env.example +6 -0
  231. package/templates-i18n/nextjs/.eslintcache +1 -0
  232. package/templates-i18n/nextjs/.github/workflows/ci.yml +41 -0
  233. package/templates-i18n/nextjs/.husky/commit-msg +1 -0
  234. package/templates-i18n/nextjs/.husky/pre-commit +1 -0
  235. package/templates-i18n/nextjs/.husky/pre-push +1 -0
  236. package/templates-i18n/nextjs/.prettierignore +6 -0
  237. package/templates-i18n/nextjs/.prettierrc +42 -0
  238. package/templates-i18n/nextjs/.vscode/extensions.json +7 -0
  239. package/templates-i18n/nextjs/.vscode/settings.json +20 -0
  240. package/templates-i18n/nextjs/LICENSE +21 -0
  241. package/templates-i18n/nextjs/README.md +202 -0
  242. package/templates-i18n/nextjs/_gitignore +45 -0
  243. package/templates-i18n/nextjs/commitlint.config.js +6 -0
  244. package/templates-i18n/nextjs/eslint.config.mjs +27 -0
  245. package/templates-i18n/nextjs/knip.config.js +29 -0
  246. package/templates-i18n/nextjs/next-env.d.ts +6 -0
  247. package/templates-i18n/nextjs/next.config.ts +42 -0
  248. package/templates-i18n/nextjs/package.json +117 -0
  249. package/templates-i18n/nextjs/pnpm-lock.yaml +6854 -0
  250. package/templates-i18n/nextjs/pnpm-workspace.yaml +3 -0
  251. package/templates-i18n/nextjs/postcss.config.mjs +7 -0
  252. package/templates-i18n/nextjs/public/favicon.ico +0 -0
  253. package/templates-i18n/nextjs/public/llms.txt +96 -0
  254. package/templates-i18n/nextjs/public/logo.png +0 -0
  255. package/templates-i18n/nextjs/public/logo.webp +0 -0
  256. package/templates-i18n/nextjs/public/og.png +0 -0
  257. package/templates-i18n/nextjs/src/app/[locale]/error.tsx +34 -0
  258. package/templates-i18n/nextjs/src/app/[locale]/layout.tsx +60 -0
  259. package/templates-i18n/nextjs/src/app/[locale]/loading.tsx +12 -0
  260. package/templates-i18n/nextjs/src/app/[locale]/not-found.tsx +18 -0
  261. package/templates-i18n/nextjs/src/app/[locale]/page.tsx +10 -0
  262. package/templates-i18n/nextjs/src/app/favicon.ico +0 -0
  263. package/templates-i18n/nextjs/src/app/global-error.tsx +32 -0
  264. package/templates-i18n/nextjs/src/app/manifest.ts +22 -0
  265. package/templates-i18n/nextjs/src/app/robots.ts +13 -0
  266. package/templates-i18n/nextjs/src/app/sitemap.ts +14 -0
  267. package/templates-i18n/nextjs/src/components/shared/LanguageSwitcher.tsx +48 -0
  268. package/templates-i18n/nextjs/src/components/shared/ThemeToggle.tsx +30 -0
  269. package/templates-i18n/nextjs/src/components/ui/avatar.tsx +54 -0
  270. package/templates-i18n/nextjs/src/components/ui/button.tsx +46 -0
  271. package/templates-i18n/nextjs/src/components/ui/dialog.tsx +107 -0
  272. package/templates-i18n/nextjs/src/components/ui/field.tsx +24 -0
  273. package/templates-i18n/nextjs/src/components/ui/index.ts +27 -0
  274. package/templates-i18n/nextjs/src/components/ui/input.tsx +23 -0
  275. package/templates-i18n/nextjs/src/components/ui/label.tsx +17 -0
  276. package/templates-i18n/nextjs/src/components/ui/skeleton.tsx +13 -0
  277. package/templates-i18n/nextjs/src/components/ui/table.tsx +94 -0
  278. package/templates-i18n/nextjs/src/components/ui/tabs.tsx +46 -0
  279. package/templates-i18n/nextjs/src/config/seo.config.ts +37 -0
  280. package/templates-i18n/nextjs/src/config/site.config.ts +15 -0
  281. package/templates-i18n/nextjs/src/constants/index.ts +5 -0
  282. package/templates-i18n/nextjs/src/env.ts +41 -0
  283. package/templates-i18n/nextjs/src/features/landing/api/get-users.api.ts +7 -0
  284. package/templates-i18n/nextjs/src/features/landing/api/index.ts +2 -0
  285. package/templates-i18n/nextjs/src/features/landing/api/query-keys.ts +7 -0
  286. package/templates-i18n/nextjs/src/features/landing/components/CartDemo.tsx +68 -0
  287. package/templates-i18n/nextjs/src/features/landing/components/Features.tsx +84 -0
  288. package/templates-i18n/nextjs/src/features/landing/components/Hero.tsx +76 -0
  289. package/templates-i18n/nextjs/src/features/landing/components/LandingPage.tsx +17 -0
  290. package/templates-i18n/nextjs/src/features/landing/components/ProjectFormDemo.tsx +64 -0
  291. package/templates-i18n/nextjs/src/features/landing/components/Reveal.tsx +83 -0
  292. package/templates-i18n/nextjs/src/features/landing/components/Showcase.tsx +83 -0
  293. package/templates-i18n/nextjs/src/features/landing/components/UsersDemo.tsx +191 -0
  294. package/templates-i18n/nextjs/src/features/landing/data/features.data.tsx +47 -0
  295. package/templates-i18n/nextjs/src/features/landing/data/index.ts +1 -0
  296. package/templates-i18n/nextjs/src/features/landing/helpers/get-initials.ts +15 -0
  297. package/templates-i18n/nextjs/src/features/landing/helpers/index.ts +7 -0
  298. package/templates-i18n/nextjs/src/features/landing/helpers/motion.ts +21 -0
  299. package/templates-i18n/nextjs/src/features/landing/hooks/index.ts +1 -0
  300. package/templates-i18n/nextjs/src/features/landing/hooks/use-users.ts +16 -0
  301. package/templates-i18n/nextjs/src/features/landing/icons/index.ts +6 -0
  302. package/templates-i18n/nextjs/src/features/landing/icons/nextjs.tsx +68 -0
  303. package/templates-i18n/nextjs/src/features/landing/icons/react-hook-form.tsx +18 -0
  304. package/templates-i18n/nextjs/src/features/landing/icons/react.tsx +20 -0
  305. package/templates-i18n/nextjs/src/features/landing/icons/tailwind.tsx +14 -0
  306. package/templates-i18n/nextjs/src/features/landing/icons/tanstack.tsx +321 -0
  307. package/templates-i18n/nextjs/src/features/landing/icons/typescript.tsx +16 -0
  308. package/templates-i18n/nextjs/src/features/landing/index.ts +1 -0
  309. package/templates-i18n/nextjs/src/features/landing/schemas/index.ts +1 -0
  310. package/templates-i18n/nextjs/src/features/landing/schemas/project.schema.ts +9 -0
  311. package/templates-i18n/nextjs/src/features/landing/stores/counter.store.ts +18 -0
  312. package/templates-i18n/nextjs/src/features/landing/stores/index.ts +1 -0
  313. package/templates-i18n/nextjs/src/features/landing/types/index.ts +1 -0
  314. package/templates-i18n/nextjs/src/features/landing/types/user.types.ts +9 -0
  315. package/templates-i18n/nextjs/src/helpers/format-date.ts +13 -0
  316. package/templates-i18n/nextjs/src/helpers/index.ts +1 -0
  317. package/templates-i18n/nextjs/src/hooks/index.ts +5 -0
  318. package/templates-i18n/nextjs/src/i18n/request.ts +16 -0
  319. package/templates-i18n/nextjs/src/i18n/routing.ts +11 -0
  320. package/templates-i18n/nextjs/src/lib/api.ts +97 -0
  321. package/templates-i18n/nextjs/src/lib/query-client.ts +18 -0
  322. package/templates-i18n/nextjs/src/lib/utils.ts +12 -0
  323. package/templates-i18n/nextjs/src/messages/en.json +55 -0
  324. package/templates-i18n/nextjs/src/messages/tr.json +55 -0
  325. package/templates-i18n/nextjs/src/providers/Providers.tsx +15 -0
  326. package/templates-i18n/nextjs/src/providers/QueryProvider.tsx +19 -0
  327. package/templates-i18n/nextjs/src/providers/ThemeProvider.tsx +9 -0
  328. package/templates-i18n/nextjs/src/providers/index.ts +1 -0
  329. package/templates-i18n/nextjs/src/proxy.ts +16 -0
  330. package/templates-i18n/nextjs/src/schemas/index.ts +5 -0
  331. package/templates-i18n/nextjs/src/stores/index.ts +5 -0
  332. package/templates-i18n/nextjs/src/styles/tailwind.css +122 -0
  333. package/templates-i18n/nextjs/src/types/site-config.types.ts +10 -0
  334. package/templates-i18n/nextjs/tsconfig.json +45 -0
  335. package/templates-i18n/nextjs/tsconfig.tsbuildinfo +1 -0
  336. package/templates-i18n/tanstack/.changeset/README.md +8 -0
  337. package/templates-i18n/tanstack/.changeset/config.json +11 -0
  338. package/templates-i18n/tanstack/.env.example +6 -0
  339. package/templates-i18n/tanstack/.eslintcache +1 -0
  340. package/templates-i18n/tanstack/.github/workflows/ci.yml +41 -0
  341. package/templates-i18n/tanstack/.husky/commit-msg +1 -0
  342. package/templates-i18n/tanstack/.husky/pre-commit +1 -0
  343. package/templates-i18n/tanstack/.husky/pre-push +1 -0
  344. package/templates-i18n/tanstack/.prettierignore +7 -0
  345. package/templates-i18n/tanstack/.prettierrc +41 -0
  346. package/templates-i18n/tanstack/.vscode/extensions.json +7 -0
  347. package/templates-i18n/tanstack/.vscode/settings.json +22 -0
  348. package/templates-i18n/tanstack/LICENSE +21 -0
  349. package/templates-i18n/tanstack/README.md +204 -0
  350. package/templates-i18n/tanstack/_gitignore +52 -0
  351. package/templates-i18n/tanstack/commitlint.config.js +6 -0
  352. package/templates-i18n/tanstack/eslint.config.js +29 -0
  353. package/templates-i18n/tanstack/knip.config.js +26 -0
  354. package/templates-i18n/tanstack/messages/en.json +65 -0
  355. package/templates-i18n/tanstack/messages/tr.json +65 -0
  356. package/templates-i18n/tanstack/package.json +132 -0
  357. package/templates-i18n/tanstack/pnpm-lock.yaml +5998 -0
  358. package/templates-i18n/tanstack/pnpm-workspace.yaml +3 -0
  359. package/templates-i18n/tanstack/project.inlang/README.md +157 -0
  360. package/templates-i18n/tanstack/project.inlang/settings.json +9 -0
  361. package/templates-i18n/tanstack/public/favicon.ico +0 -0
  362. package/templates-i18n/tanstack/public/llms.txt +86 -0
  363. package/templates-i18n/tanstack/public/logo.png +0 -0
  364. package/templates-i18n/tanstack/public/logo.webp +0 -0
  365. package/templates-i18n/tanstack/public/og.png +0 -0
  366. package/templates-i18n/tanstack/src/components/shared/DefaultCatchBoundary.tsx +36 -0
  367. package/templates-i18n/tanstack/src/components/shared/LanguageSwitcher.tsx +57 -0
  368. package/templates-i18n/tanstack/src/components/shared/NotFound.tsx +18 -0
  369. package/templates-i18n/tanstack/src/components/shared/Pending.tsx +13 -0
  370. package/templates-i18n/tanstack/src/components/shared/ThemeToggle.tsx +31 -0
  371. package/templates-i18n/tanstack/src/components/ui/avatar.tsx +52 -0
  372. package/templates-i18n/tanstack/src/components/ui/button.tsx +47 -0
  373. package/templates-i18n/tanstack/src/components/ui/dialog.tsx +107 -0
  374. package/templates-i18n/tanstack/src/components/ui/field.tsx +24 -0
  375. package/templates-i18n/tanstack/src/components/ui/index.ts +27 -0
  376. package/templates-i18n/tanstack/src/components/ui/input.tsx +23 -0
  377. package/templates-i18n/tanstack/src/components/ui/label.tsx +17 -0
  378. package/templates-i18n/tanstack/src/components/ui/skeleton.tsx +13 -0
  379. package/templates-i18n/tanstack/src/components/ui/table.tsx +94 -0
  380. package/templates-i18n/tanstack/src/components/ui/tabs.tsx +46 -0
  381. package/templates-i18n/tanstack/src/config/seo.config.ts +52 -0
  382. package/templates-i18n/tanstack/src/config/site.config.ts +15 -0
  383. package/templates-i18n/tanstack/src/constants/index.ts +5 -0
  384. package/templates-i18n/tanstack/src/env.ts +47 -0
  385. package/templates-i18n/tanstack/src/features/landing/api/get-users.api.ts +7 -0
  386. package/templates-i18n/tanstack/src/features/landing/api/index.ts +2 -0
  387. package/templates-i18n/tanstack/src/features/landing/api/query-keys.ts +7 -0
  388. package/templates-i18n/tanstack/src/features/landing/components/CartDemo.tsx +67 -0
  389. package/templates-i18n/tanstack/src/features/landing/components/Features.tsx +79 -0
  390. package/templates-i18n/tanstack/src/features/landing/components/Hero.tsx +68 -0
  391. package/templates-i18n/tanstack/src/features/landing/components/LandingPage.tsx +17 -0
  392. package/templates-i18n/tanstack/src/features/landing/components/ProjectFormDemo.tsx +64 -0
  393. package/templates-i18n/tanstack/src/features/landing/components/Reveal.tsx +83 -0
  394. package/templates-i18n/tanstack/src/features/landing/components/Showcase.tsx +81 -0
  395. package/templates-i18n/tanstack/src/features/landing/components/UsersDemo.tsx +191 -0
  396. package/templates-i18n/tanstack/src/features/landing/data/features.data.tsx +45 -0
  397. package/templates-i18n/tanstack/src/features/landing/data/index.ts +1 -0
  398. package/templates-i18n/tanstack/src/features/landing/helpers/get-initials.ts +15 -0
  399. package/templates-i18n/tanstack/src/features/landing/helpers/index.ts +7 -0
  400. package/templates-i18n/tanstack/src/features/landing/helpers/motion.ts +21 -0
  401. package/templates-i18n/tanstack/src/features/landing/hooks/index.ts +1 -0
  402. package/templates-i18n/tanstack/src/features/landing/hooks/use-users.ts +19 -0
  403. package/templates-i18n/tanstack/src/features/landing/icons/index.ts +5 -0
  404. package/templates-i18n/tanstack/src/features/landing/icons/react-hook-form.tsx +18 -0
  405. package/templates-i18n/tanstack/src/features/landing/icons/react.tsx +20 -0
  406. package/templates-i18n/tanstack/src/features/landing/icons/tailwind.tsx +14 -0
  407. package/templates-i18n/tanstack/src/features/landing/icons/tanstack.tsx +321 -0
  408. package/templates-i18n/tanstack/src/features/landing/icons/typescript.tsx +16 -0
  409. package/templates-i18n/tanstack/src/features/landing/index.ts +1 -0
  410. package/templates-i18n/tanstack/src/features/landing/schemas/index.ts +1 -0
  411. package/templates-i18n/tanstack/src/features/landing/schemas/project.schema.ts +10 -0
  412. package/templates-i18n/tanstack/src/features/landing/stores/counter.store.ts +18 -0
  413. package/templates-i18n/tanstack/src/features/landing/stores/index.ts +1 -0
  414. package/templates-i18n/tanstack/src/features/landing/types/index.ts +1 -0
  415. package/templates-i18n/tanstack/src/features/landing/types/user.types.ts +9 -0
  416. package/templates-i18n/tanstack/src/helpers/format-date.ts +13 -0
  417. package/templates-i18n/tanstack/src/helpers/index.ts +1 -0
  418. package/templates-i18n/tanstack/src/hooks/index.ts +5 -0
  419. package/templates-i18n/tanstack/src/lib/api.ts +97 -0
  420. package/templates-i18n/tanstack/src/lib/query-client.ts +18 -0
  421. package/templates-i18n/tanstack/src/lib/utils.ts +13 -0
  422. package/templates-i18n/tanstack/src/paraglide/README.md +162 -0
  423. package/templates-i18n/tanstack/src/providers/Providers.tsx +12 -0
  424. package/templates-i18n/tanstack/src/providers/ThemeProvider.tsx +98 -0
  425. package/templates-i18n/tanstack/src/providers/devtools.tsx +6 -0
  426. package/templates-i18n/tanstack/src/providers/index.ts +1 -0
  427. package/templates-i18n/tanstack/src/providers/root-provider.ts +9 -0
  428. package/templates-i18n/tanstack/src/routeTree.gen.ts +179 -0
  429. package/templates-i18n/tanstack/src/router.tsx +27 -0
  430. package/templates-i18n/tanstack/src/routes/$lang/index.tsx +13 -0
  431. package/templates-i18n/tanstack/src/routes/$lang.tsx +22 -0
  432. package/templates-i18n/tanstack/src/routes/__root.tsx +80 -0
  433. package/templates-i18n/tanstack/src/routes/index.tsx +13 -0
  434. package/templates-i18n/tanstack/src/routes/robots[.]txt.ts +21 -0
  435. package/templates-i18n/tanstack/src/routes/site[.]webmanifest.ts +32 -0
  436. package/templates-i18n/tanstack/src/routes/sitemap[.]xml.ts +27 -0
  437. package/templates-i18n/tanstack/src/schemas/index.ts +5 -0
  438. package/templates-i18n/tanstack/src/server.ts +10 -0
  439. package/templates-i18n/tanstack/src/start.ts +20 -0
  440. package/templates-i18n/tanstack/src/stores/index.ts +5 -0
  441. package/templates-i18n/tanstack/src/styles/tailwind.css +123 -0
  442. package/templates-i18n/tanstack/src/types/site-config.types.ts +10 -0
  443. package/templates-i18n/tanstack/tsconfig.json +26 -0
  444. package/templates-i18n/tanstack/tsr.config.json +3 -0
  445. package/templates-i18n/tanstack/vite.config.ts +31 -0
  446. package/index.js +0 -3
  447. package/public/start.jpg +0 -0
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Registry of ViraStack tools the CLI knows how to wire up.
3
+ *
4
+ * - "dependency" tools are added straight to package.json and installed
5
+ * like any other npm package (e.g. @virastack/mask).
6
+ * - "postinstall-cli" tools ship their own `init` command that writes files
7
+ * into the target project (e.g. @virastack/ai writes .cursor/rules), so we
8
+ * shell out to them instead of treating them as a runtime dependency.
9
+ */
10
+ export const TOOLS = [
11
+ {
12
+ id: "mask",
13
+ package: "@virastack/mask",
14
+ kind: "dependency",
15
+ version: "latest",
16
+ },
17
+ {
18
+ id: "password",
19
+ package: "@virastack/password",
20
+ kind: "dependency",
21
+ version: "latest",
22
+ },
23
+ {
24
+ id: "ai",
25
+ package: "@virastack/ai",
26
+ kind: "postinstall-cli",
27
+ version: "latest",
28
+ hiddenFromInit: true,
29
+ },
30
+ ];
31
+
32
+ export function findTool(id) {
33
+ return TOOLS.find((tool) => tool.id === id);
34
+ }
35
+
36
+ /**
37
+ * Parses a comma-separated tools flag into valid tool ids.
38
+ * Unknown ids are ignored; empty / missing input yields [].
39
+ */
40
+ export function parseToolsFlag(value) {
41
+ if (value == null || value === true) return [];
42
+
43
+ return String(value)
44
+ .split(",")
45
+ .map((part) => part.trim())
46
+ .filter(Boolean)
47
+ .filter((id) => Boolean(findTool(id)));
48
+ }
@@ -0,0 +1,44 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { findTool } from "./tools.js";
4
+ import { toPackageName } from "./validate-project-name.js";
5
+ import { getCliVersion } from "./package-info.js";
6
+
7
+ /**
8
+ * Rewrites the scaffolded package.json: gives it the user's project name
9
+ * and adds a dependency entry for every selected "dependency"-kind tool
10
+ * (e.g. @virastack/mask). Tools with an "init" CLI (like @virastack/ai)
11
+ * are handled separately since they aren't a runtime dependency.
12
+ */
13
+ export async function updatePackageJson(targetDir, { projectName, tools }) {
14
+ const pkgPath = path.join(targetDir, "package.json");
15
+
16
+ let pkg;
17
+ try {
18
+ pkg = JSON.parse(await fs.readFile(pkgPath, "utf8"));
19
+ } catch {
20
+ return;
21
+ }
22
+
23
+ pkg.name = toPackageName(projectName);
24
+ pkg.version = "1.0.0"; // Scaffolded project's own initial version
25
+ delete pkg.author;
26
+ delete pkg.repository;
27
+ delete pkg.bugs;
28
+ delete pkg.homepage;
29
+ delete pkg.keywords;
30
+
31
+ if (pkg.virastack) {
32
+ pkg.virastack.version = getCliVersion();
33
+ }
34
+
35
+ pkg.dependencies = pkg.dependencies ?? {};
36
+ for (const toolId of tools) {
37
+ const tool = findTool(toolId);
38
+ if (tool?.kind === "dependency") {
39
+ pkg.dependencies[tool.package] = tool.version ?? "^1.0.0";
40
+ }
41
+ }
42
+
43
+ await fs.writeFile(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
44
+ }
@@ -0,0 +1,25 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+
4
+ /**
5
+ * Personalizes the scaffolded README: renames the H1 to the user's project
6
+ * and strips the marketing hero image (assets/ is not copied into projects).
7
+ */
8
+ export async function updateReadme(targetDir, projectName) {
9
+ const readmePath = path.join(targetDir, "README.md");
10
+
11
+ let content;
12
+ try {
13
+ content = await fs.readFile(readmePath, "utf8");
14
+ } catch {
15
+ return;
16
+ }
17
+
18
+ let updated = content
19
+ .replace(/^#\s+.+$/m, `# ${projectName}`)
20
+ .replace(/^!\[.*?\]\(\.\/assets\/.*?\)\n*/m, "");
21
+
22
+ if (updated === content) return;
23
+
24
+ await fs.writeFile(readmePath, updated);
25
+ }
@@ -0,0 +1,26 @@
1
+ // Same shape npm itself enforces for package names (scoped names included).
2
+ const NPM_NAME_PATTERN = /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
3
+
4
+ /**
5
+ * Returns null when valid, or an error code ("empty" | "invalid") otherwise.
6
+ * "." is always valid — it means "use the current directory".
7
+ */
8
+ export function validateProjectName(value) {
9
+ const trimmed = (value ?? "").trim();
10
+
11
+ if (trimmed.length === 0) return "empty";
12
+ if (trimmed === ".") return null;
13
+ if (!NPM_NAME_PATTERN.test(trimmed)) return "invalid";
14
+
15
+ return null;
16
+ }
17
+
18
+ export function toPackageName(name) {
19
+ const sanitized = name
20
+ .trim()
21
+ .toLowerCase()
22
+ .replace(/[^a-z0-9-~]+/g, "-")
23
+ .replace(/^-+|-+$/g, "");
24
+
25
+ return sanitized.length > 0 ? sanitized : "virastack-app";
26
+ }
@@ -0,0 +1,8 @@
1
+ # Changesets
2
+
3
+ Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4
+ with multi-package repos, or single-package repos to help you version and publish your code. You can
5
+ find the full documentation for it [in our repository](https://github.com/changesets/changesets).
6
+
7
+ We have a quick list of common questions to get you started engaging with this project in
8
+ [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md).
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
3
+ "changelog": "@changesets/cli/changelog",
4
+ "commit": false,
5
+ "fixed": [],
6
+ "linked": [],
7
+ "access": "restricted",
8
+ "baseBranch": "main",
9
+ "updateInternalDependencies": "patch",
10
+ "ignore": []
11
+ }
@@ -0,0 +1,6 @@
1
+ # Public (exposed to the browser) — must be prefixed with NEXT_PUBLIC_
2
+ NEXT_PUBLIC_APP_URL="http://localhost:3000"
3
+ NEXT_PUBLIC_APP_NAME="ViraStack Start - Next.js Edition"
4
+
5
+ # Server-only (never exposed to the browser)
6
+ # NODE_ENV is set automatically by Next.js — no need to define it here.
@@ -0,0 +1,6 @@
1
+ # Public (exposed to the browser) — must be prefixed with NEXT_PUBLIC_
2
+ NEXT_PUBLIC_APP_URL="http://localhost:3000"
3
+ NEXT_PUBLIC_APP_NAME="ViraStack Start - Next.js Edition"
4
+
5
+ # Server-only (never exposed to the browser)
6
+ # NODE_ENV is set automatically by Next.js — no need to define it here.
@@ -0,0 +1 @@
1
+ [{"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/commitlint.config.js":"1","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/eslint.config.mjs":"2","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/knip.config.js":"3","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/next.config.ts":"4","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/postcss.config.mjs":"5","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/error.tsx":"6","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/global-error.tsx":"7","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/layout.tsx":"8","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/loading.tsx":"9","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/manifest.ts":"10","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/not-found.tsx":"11","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/page.tsx":"12","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/robots.ts":"13","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/sitemap.ts":"14","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/shared/ThemeToggle.tsx":"15","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/avatar.tsx":"16","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/button.tsx":"17","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/dialog.tsx":"18","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/field.tsx":"19","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/index.ts":"20","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/input.tsx":"21","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/label.tsx":"22","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/skeleton.tsx":"23","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/table.tsx":"24","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/tabs.tsx":"25","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/config/seo.config.ts":"26","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/config/site.config.ts":"27","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/constants/index.ts":"28","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/env.ts":"29","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/api/get-users.api.ts":"30","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/api/index.ts":"31","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/api/query-keys.ts":"32","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/CartDemo.tsx":"33","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Features.tsx":"34","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Hero.tsx":"35","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/LandingPage.tsx":"36","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/ProjectFormDemo.tsx":"37","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Reveal.tsx":"38","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Showcase.tsx":"39","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/UsersDemo.tsx":"40","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/data/features.data.tsx":"41","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/data/index.ts":"42","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/helpers/get-initials.ts":"43","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/helpers/index.ts":"44","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/helpers/motion.ts":"45","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/hooks/index.ts":"46","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/hooks/use-users.ts":"47","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/index.ts":"48","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/nextjs.tsx":"49","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/react-hook-form.tsx":"50","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/react.tsx":"51","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/tailwind.tsx":"52","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/tanstack.tsx":"53","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/typescript.tsx":"54","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/index.ts":"55","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/schemas/index.ts":"56","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/schemas/project.schema.ts":"57","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/stores/counter.store.ts":"58","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/stores/index.ts":"59","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/types/index.ts":"60","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/types/user.types.ts":"61","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/helpers/format-date.ts":"62","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/helpers/index.ts":"63","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/hooks/index.ts":"64","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/lib/api.ts":"65","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/lib/query-client.ts":"66","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/lib/utils.ts":"67","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/Providers.tsx":"68","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/QueryProvider.tsx":"69","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/ThemeProvider.tsx":"70","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/index.ts":"71","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/proxy.ts":"72","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/schemas/index.ts":"73","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/stores/index.ts":"74","/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/types/site-config.types.ts":"75"},{"size":129,"mtime":1784724501650,"results":"76","hashOfConfig":"77"},{"size":686,"mtime":1784724501676,"results":"78","hashOfConfig":"77"},{"size":673,"mtime":1785160748328,"results":"79","hashOfConfig":"77"},{"size":1012,"mtime":1784850857359,"results":"80","hashOfConfig":"81"},{"size":94,"mtime":1784718957433,"results":"82","hashOfConfig":"77"},{"size":946,"mtime":1784724501477,"results":"83","hashOfConfig":"81"},{"size":841,"mtime":1785104632420,"results":"84","hashOfConfig":"81"},{"size":916,"mtime":1785162519531,"results":"85","hashOfConfig":"81"},{"size":390,"mtime":1784724501632,"results":"86","hashOfConfig":"81"},{"size":500,"mtime":1784850863737,"results":"87","hashOfConfig":"81"},{"size":652,"mtime":1784724501676,"results":"88","hashOfConfig":"81"},{"size":116,"mtime":1784848916026,"results":"89","hashOfConfig":"81"},{"size":277,"mtime":1784724501632,"results":"90","hashOfConfig":"81"},{"size":298,"mtime":1784724501487,"results":"91","hashOfConfig":"81"},{"size":816,"mtime":1785178279649,"results":"92","hashOfConfig":"81"},{"size":1653,"mtime":1784844376542,"results":"93","hashOfConfig":"81"},{"size":1798,"mtime":1784724501645,"results":"94","hashOfConfig":"81"},{"size":3186,"mtime":1784724501676,"results":"95","hashOfConfig":"81"},{"size":570,"mtime":1784844670765,"results":"96","hashOfConfig":"81"},{"size":775,"mtime":1784844515795,"results":"97","hashOfConfig":"81"},{"size":926,"mtime":1784724501478,"results":"98","hashOfConfig":"81"},{"size":430,"mtime":1784724501487,"results":"99","hashOfConfig":"81"},{"size":304,"mtime":1784724501650,"results":"100","hashOfConfig":"81"},{"size":2820,"mtime":1784844955937,"results":"101","hashOfConfig":"81"},{"size":1515,"mtime":1784724501477,"results":"102","hashOfConfig":"81"},{"size":1002,"mtime":1784850859164,"results":"103","hashOfConfig":"81"},{"size":535,"mtime":1784852972801,"results":"104","hashOfConfig":"81"},{"size":156,"mtime":1784848451874,"results":"105","hashOfConfig":"81"},{"size":1281,"mtime":1785162800911,"results":"106","hashOfConfig":"81"},{"size":233,"mtime":1784852534866,"results":"107","hashOfConfig":"81"},{"size":127,"mtime":1784852535385,"results":"108","hashOfConfig":"81"},{"size":301,"mtime":1784852534009,"results":"109","hashOfConfig":"81"},{"size":2271,"mtime":1784851697232,"results":"110","hashOfConfig":"81"},{"size":1645,"mtime":1784848485630,"results":"111","hashOfConfig":"81"},{"size":2614,"mtime":1785102111792,"results":"112","hashOfConfig":"81"},{"size":472,"mtime":1785058808101,"results":"113","hashOfConfig":"81"},{"size":1909,"mtime":1784851697297,"results":"114","hashOfConfig":"81"},{"size":2020,"mtime":1784848449487,"results":"115","hashOfConfig":"81"},{"size":2780,"mtime":1785102111792,"results":"116","hashOfConfig":"81"},{"size":6399,"mtime":1784853209773,"results":"117","hashOfConfig":"81"},{"size":1585,"mtime":1785058808101,"results":"118","hashOfConfig":"81"},{"size":66,"mtime":1784848481686,"results":"119","hashOfConfig":"81"},{"size":354,"mtime":1784848482176,"results":"120","hashOfConfig":"81"},{"size":192,"mtime":1784848482953,"results":"121","hashOfConfig":"81"},{"size":696,"mtime":1784849743469,"results":"122","hashOfConfig":"81"},{"size":63,"mtime":1784848503787,"results":"123","hashOfConfig":"81"},{"size":410,"mtime":1784852536400,"results":"124","hashOfConfig":"81"},{"size":402,"mtime":1784848418232,"results":"125","hashOfConfig":"81"},{"size":1971,"mtime":1784848418228,"results":"126","hashOfConfig":"81"},{"size":1973,"mtime":1784848418232,"results":"127","hashOfConfig":"81"},{"size":6639,"mtime":1784848418231,"results":"128","hashOfConfig":"81"},{"size":807,"mtime":1784848418231,"results":"129","hashOfConfig":"81"},{"size":12913,"mtime":1784848427096,"results":"130","hashOfConfig":"81"},{"size":1892,"mtime":1784848418232,"results":"131","hashOfConfig":"81"},{"size":73,"mtime":1784848503742,"results":"132","hashOfConfig":"81"},{"size":94,"mtime":1784848436144,"results":"133","hashOfConfig":"81"},{"size":210,"mtime":1784757948429,"results":"134","hashOfConfig":"81"},{"size":478,"mtime":1784724501650,"results":"135","hashOfConfig":"81"},{"size":75,"mtime":1784848436021,"results":"136","hashOfConfig":"81"},{"size":65,"mtime":1784848474605,"results":"137","hashOfConfig":"81"},{"size":127,"mtime":1784853202425,"results":"138","hashOfConfig":"81"},{"size":411,"mtime":1784724501672,"results":"139","hashOfConfig":"81"},{"size":52,"mtime":1784724501650,"results":"140","hashOfConfig":"81"},{"size":144,"mtime":1784848450819,"results":"141","hashOfConfig":"81"},{"size":2960,"mtime":1784724501676,"results":"142","hashOfConfig":"81"},{"size":465,"mtime":1784724501477,"results":"143","hashOfConfig":"81"},{"size":353,"mtime":1784724501672,"results":"144","hashOfConfig":"81"},{"size":496,"mtime":1784724501650,"results":"145","hashOfConfig":"81"},{"size":533,"mtime":1784844398829,"results":"146","hashOfConfig":"81"},{"size":303,"mtime":1785178185026,"results":"147","hashOfConfig":"81"},{"size":51,"mtime":1784724501676,"results":"148","hashOfConfig":"81"},{"size":172,"mtime":1784850857628,"results":"149","hashOfConfig":"81"},{"size":154,"mtime":1784848451473,"results":"150","hashOfConfig":"81"},{"size":154,"mtime":1784848451215,"results":"151","hashOfConfig":"81"},{"size":160,"mtime":1784724501650,"results":"152","hashOfConfig":"81"},{"filePath":"153","messages":"154","suppressedMessages":"155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"18fg6fv",{"filePath":"156","messages":"157","suppressedMessages":"158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"159","messages":"160","suppressedMessages":"161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"162","messages":"163","suppressedMessages":"164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"5rtamk",{"filePath":"165","messages":"166","suppressedMessages":"167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"168","messages":"169","suppressedMessages":"170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"171","messages":"172","suppressedMessages":"173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","suppressedMessages":"176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"177","messages":"178","suppressedMessages":"179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","suppressedMessages":"182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"183","messages":"184","suppressedMessages":"185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"186","messages":"187","suppressedMessages":"188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"189","messages":"190","suppressedMessages":"191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"192","messages":"193","suppressedMessages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"195","messages":"196","suppressedMessages":"197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"198","messages":"199","suppressedMessages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"201","messages":"202","suppressedMessages":"203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","suppressedMessages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"207","messages":"208","suppressedMessages":"209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","suppressedMessages":"212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"213","messages":"214","suppressedMessages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"216","messages":"217","suppressedMessages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"219","messages":"220","suppressedMessages":"221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"222","messages":"223","suppressedMessages":"224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"225","messages":"226","suppressedMessages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","suppressedMessages":"230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"231","messages":"232","suppressedMessages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","suppressedMessages":"236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"237","messages":"238","suppressedMessages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","suppressedMessages":"242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"243","messages":"244","suppressedMessages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","suppressedMessages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"249","messages":"250","suppressedMessages":"251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","suppressedMessages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"255","messages":"256","suppressedMessages":"257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","suppressedMessages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"261","messages":"262","suppressedMessages":"263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","suppressedMessages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"267","messages":"268","suppressedMessages":"269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","suppressedMessages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"273","messages":"274","suppressedMessages":"275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","suppressedMessages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"279","messages":"280","suppressedMessages":"281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","suppressedMessages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"285","messages":"286","suppressedMessages":"287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","suppressedMessages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"291","messages":"292","suppressedMessages":"293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","suppressedMessages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"297","messages":"298","suppressedMessages":"299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"300","messages":"301","suppressedMessages":"302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"303","messages":"304","suppressedMessages":"305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"306","messages":"307","suppressedMessages":"308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"309","messages":"310","suppressedMessages":"311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"312","messages":"313","suppressedMessages":"314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"315","messages":"316","suppressedMessages":"317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"318","messages":"319","suppressedMessages":"320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"321","messages":"322","suppressedMessages":"323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"324","messages":"325","suppressedMessages":"326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"327","messages":"328","suppressedMessages":"329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"330","messages":"331","suppressedMessages":"332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"333","messages":"334","suppressedMessages":"335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"336","messages":"337","suppressedMessages":"338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"339","messages":"340","suppressedMessages":"341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"342","messages":"343","suppressedMessages":"344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"345","messages":"346","suppressedMessages":"347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"348","messages":"349","suppressedMessages":"350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"351","messages":"352","suppressedMessages":"353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"354","messages":"355","suppressedMessages":"356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"357","messages":"358","suppressedMessages":"359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"360","messages":"361","suppressedMessages":"362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"363","messages":"364","suppressedMessages":"365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"366","messages":"367","suppressedMessages":"368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"369","messages":"370","suppressedMessages":"371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"372","messages":"373","suppressedMessages":"374","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"375","messages":"376","suppressedMessages":"377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/commitlint.config.js",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/eslint.config.mjs",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/knip.config.js",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/next.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/postcss.config.mjs",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/error.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/global-error.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/layout.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/loading.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/manifest.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/not-found.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/page.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/robots.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/app/sitemap.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/shared/ThemeToggle.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/avatar.tsx",[],["378"],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/button.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/dialog.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/field.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/input.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/label.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/skeleton.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/table.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/components/ui/tabs.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/config/seo.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/config/site.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/constants/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/env.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/api/get-users.api.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/api/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/api/query-keys.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/CartDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Features.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Hero.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/LandingPage.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/ProjectFormDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Reveal.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/Showcase.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/components/UsersDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/data/features.data.tsx",[],["379"],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/data/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/helpers/get-initials.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/helpers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/helpers/motion.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/hooks/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/hooks/use-users.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/nextjs.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/react-hook-form.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/react.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/tailwind.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/tanstack.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/icons/typescript.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/schemas/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/schemas/project.schema.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/stores/counter.store.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/stores/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/types/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/features/landing/types/user.types.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/helpers/format-date.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/helpers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/hooks/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/lib/api.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/lib/query-client.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/lib/utils.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/Providers.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/QueryProvider.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/ThemeProvider.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/providers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/proxy.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/schemas/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/stores/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/nextjs/src/types/site-config.types.ts",[],[],{"ruleId":"380","severity":1,"message":"381","line":27,"column":5,"nodeType":"382","endLine":35,"endColumn":7,"suppressions":"383"},{"ruleId":"380","severity":1,"message":"381","line":45,"column":11,"nodeType":"382","endLine":45,"endColumn":75,"suppressions":"384"},"@next/next/no-img-element","Using `<img>` could result in slower LCP and higher bandwidth. Consider using `<Image />` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element","JSXOpeningElement",["385"],["386"],{"kind":"387","justification":"388"},{"kind":"387","justification":"389"},"directive","intentional for flexible avatar sources",""]
@@ -0,0 +1,41 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ pull_request:
7
+ branches: [main, master]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@v4
16
+
17
+ - name: Install pnpm
18
+ uses: pnpm/action-setup@v4
19
+ with:
20
+ version: 10
21
+
22
+ - name: Setup Node.js
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: 22
26
+ cache: "pnpm"
27
+
28
+ - name: Install dependencies
29
+ run: pnpm install --frozen-lockfile
30
+
31
+ - name: Typecheck
32
+ run: pnpm run typecheck
33
+
34
+ - name: Lint
35
+ run: pnpm run lint:ci
36
+
37
+ - name: Knip
38
+ run: pnpm run knip
39
+
40
+ - name: Build
41
+ run: pnpm run build
@@ -0,0 +1 @@
1
+ npx --no -- commitlint --edit "$1"
@@ -0,0 +1 @@
1
+ npx --no -- lint-staged
@@ -0,0 +1 @@
1
+ npm run typecheck && npm run lint:ci
@@ -0,0 +1,6 @@
1
+ .next
2
+ node_modules
3
+ pnpm-lock.yaml
4
+ public
5
+ CHANGELOG.md
6
+ .changeset
@@ -0,0 +1,42 @@
1
+ {
2
+ "singleQuote": false,
3
+ "trailingComma": "all",
4
+ "printWidth": 100,
5
+ "plugins": ["@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"],
6
+ "tailwindFunctions": ["cn", "clsx", "cva"],
7
+ "tailwindStylesheet": "./src/styles/tailwind.css",
8
+ "importOrder": [
9
+ "^react$",
10
+ "^next($|/)",
11
+ "",
12
+ "^@tanstack/.*",
13
+ "^zustand($|/)",
14
+ "^lucide-react($|/)",
15
+ "<THIRD_PARTY_MODULES>",
16
+ "",
17
+ "^@/types($|/)",
18
+ "^@/constants($|/)",
19
+ "^@/schemas($|/)",
20
+ "^@/config($|/)",
21
+ "^@/env($|/)",
22
+ "",
23
+ "^@/assets($|/)",
24
+ "^@/styles($|/)",
25
+ "^@/lib($|/)",
26
+ "^@/helpers($|/)",
27
+ "",
28
+ "^@/providers($|/)",
29
+ "^@/stores($|/)",
30
+ "^@/hooks($|/)",
31
+ "^@/data($|/)",
32
+ "",
33
+ "^@/components($|/)",
34
+ "^@/layout($|/)",
35
+ "^@/features($|/)",
36
+ "^@/ui($|/)",
37
+ "^@/.*",
38
+ "",
39
+ "^[./]"
40
+ ],
41
+ "importOrderParserPlugins": ["typescript", "jsx"]
42
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "esbenp.prettier-vscode",
4
+ "dbaeumer.vscode-eslint",
5
+ "bradlc.vscode-tailwindcss"
6
+ ]
7
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
3
+ "editor.formatOnSave": true,
4
+ "editor.codeActionsOnSave": {
5
+ "source.fixAll.eslint": "explicit"
6
+ },
7
+ "typescript.tsdk": "node_modules/typescript/lib",
8
+ "files.exclude": {
9
+ "**/.git": true,
10
+ "**/.svn": true,
11
+ "**/.hg": true,
12
+ "**/.DS_Store": true,
13
+ "**/Thumbs.db": true,
14
+ "**/.cache": true,
15
+ "**/.next": true,
16
+ "**/build": true,
17
+ "**/dist": true,
18
+ "**/node_modules": true
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026-present Ömer Gülçiçek (ViraStack)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.