virastack 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -3
- package/package.json +1 -1
- package/templates/nextjs/README.md +1 -1
- package/templates/nextjs/public/llms.txt +3 -1
- package/templates/tanstack/README.md +1 -1
- package/templates/tanstack/public/llms.txt +3 -1
- package/templates-i18n/nextjs/README.md +1 -1
- package/templates-i18n/nextjs/public/llms.txt +46 -74
- package/templates-i18n/tanstack/README.md +1 -1
- package/templates-i18n/tanstack/public/llms.txt +43 -65
package/README.md
CHANGED
|
@@ -74,10 +74,12 @@ Which ViraStack tools would you like to include?
|
|
|
74
74
|
| `@virastack/mask` | Input masking and formatting (Phone, IBAN, etc.) |
|
|
75
75
|
| `@virastack/password` | Password visibility toggle with customizable icons and text |
|
|
76
76
|
|
|
77
|
-
##
|
|
77
|
+
## Commands and options
|
|
78
78
|
|
|
79
|
-
|
|
|
79
|
+
| Command / flag | Description |
|
|
80
80
|
| :--- | :--- |
|
|
81
|
+
| `init [name]` | Create a new project (default; also runs with no command) |
|
|
82
|
+
| `add <tool>` | Add a tool to an existing project (`mask`, `password`, `ai`) |
|
|
81
83
|
| `--name <name>` | Project name (or pass as positional / `.`) |
|
|
82
84
|
| `--template <name>` | `nextjs` or `tanstack` |
|
|
83
85
|
| `--tools <list>` | Comma-separated tools (`mask,password`) |
|
|
@@ -89,9 +91,28 @@ Which ViraStack tools would you like to include?
|
|
|
89
91
|
| `-v`, `--version` | Print CLI version |
|
|
90
92
|
| `-h`, `--help` | Show usage |
|
|
91
93
|
|
|
94
|
+
```bash
|
|
95
|
+
pnpm dlx virastack add mask
|
|
96
|
+
pnpm dlx virastack add password
|
|
97
|
+
pnpm dlx virastack add ai
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Included by default
|
|
101
|
+
|
|
102
|
+
Every template ships with this stack already installed:
|
|
103
|
+
|
|
104
|
+
| Area | Packages |
|
|
105
|
+
| :--- | :--- |
|
|
106
|
+
| **State** | TanStack Query, Zustand, nuqs |
|
|
107
|
+
| **Form** | React Hook Form, Zod |
|
|
108
|
+
| **Hooks** | `usehooks-ts` |
|
|
109
|
+
| **UI** | Base UI, Framer Motion, Lucide React |
|
|
110
|
+
|
|
111
|
+
[ViraStack AI](https://github.com/virastack/ai) encodes these choices as agent rules so assistants follow the same stack from day one.
|
|
112
|
+
|
|
92
113
|
## Telemetry
|
|
93
114
|
|
|
94
|
-
To
|
|
115
|
+
To keep usage statistics, ViraStack collects strictly anonymous data (template, i18n choice, selected tools, package manager, and CLI version). Absolutely no personal data, project names, or file paths are collected.
|
|
95
116
|
|
|
96
117
|
Opt out anytime: `pnpm dlx virastack --telemetry-disable`
|
|
97
118
|
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@ _The Next.js boilerplate that feels effortless._
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
**Docs:** [See the docs](https://
|
|
27
|
+
**Docs:** [See the docs](https://virastack.com/start/docs)
|
|
28
28
|
|
|
29
29
|
**Contents:** [Why](#why-virastack) · [Features](#features) · [Getting started](#getting-started) · [Environment](#environment-variables) · [Scripts](#scripts) · [Project structure](#project-structure) · [Customization](#customization) · [ViraStack AI](#virastack-ai) · [Deployment](#deployment)
|
|
30
30
|
|
|
@@ -19,7 +19,9 @@ Built on the App Router with Server/Client Components, streaming, and the Metada
|
|
|
19
19
|
- [Repository (GitHub)](https://github.com/virastack/start): CLI and templates
|
|
20
20
|
- [README](https://github.com/virastack/start/tree/main/templates/nextjs): Features, structure, and conventions
|
|
21
21
|
- [Architecture guide](https://github.com/virastack/ai/blob/main/templates/core/docs/architecture-guide.md): Placement rules and import conventions
|
|
22
|
-
- [Product docs](https://
|
|
22
|
+
- [Product docs](https://virastack.com/start/docs): ViraStack Start documentation
|
|
23
|
+
- [Start llms-full.txt](https://virastack.com/start/llms-full.txt): CLI flags and template map for agents
|
|
24
|
+
- [Ecosystem llms.txt](https://virastack.com/llms.txt): All ViraStack products
|
|
23
25
|
|
|
24
26
|
## Key Files & Entry Points
|
|
25
27
|
- [`src/app/layout.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/app/layout.tsx): Root layout, fonts, providers
|
|
@@ -24,7 +24,7 @@ _The TanStack Start boilerplate that feels effortless._
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
**Docs:** [See the docs](https://
|
|
27
|
+
**Docs:** [See the docs](https://virastack.com/start/docs)
|
|
28
28
|
|
|
29
29
|
**Contents:** [Why](#why-virastack) · [Features](#features) · [Getting started](#getting-started) · [Environment](#environment-variables) · [Scripts](#scripts) · [Project structure](#project-structure) · [Customization](#customization) · [ViraStack AI](#virastack-ai) · [Deployment](#deployment)
|
|
30
30
|
|
|
@@ -19,7 +19,9 @@ Built on TanStack Router file-based routing with type-safe loaders, nested layou
|
|
|
19
19
|
- [Repository (GitHub)](https://github.com/virastack/start): CLI and templates
|
|
20
20
|
- [README](https://github.com/virastack/start/tree/main/templates/tanstack): Features, structure, and conventions
|
|
21
21
|
- [Architecture guide](https://github.com/virastack/ai/blob/main/templates/core/docs/architecture-guide.md): Placement rules and import conventions
|
|
22
|
-
- [Product docs](https://
|
|
22
|
+
- [Product docs](https://virastack.com/start/docs): ViraStack Start documentation
|
|
23
|
+
- [Start llms-full.txt](https://virastack.com/start/llms-full.txt): CLI flags and template map for agents
|
|
24
|
+
- [Ecosystem llms.txt](https://virastack.com/llms.txt): All ViraStack products
|
|
23
25
|
|
|
24
26
|
## Key Files & Entry Points
|
|
25
27
|
- [`src/routes/__root.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/routes/__root.tsx): Root route, document shell, providers, SEO head
|
|
@@ -24,7 +24,7 @@ _The Next.js boilerplate that feels effortless._
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
**Docs:** [See the docs](https://
|
|
27
|
+
**Docs:** [See the docs](https://virastack.com/start/docs)
|
|
28
28
|
|
|
29
29
|
**Contents:** [Why](#why-virastack) · [Features](#features) · [Getting started](#getting-started) · [Environment](#environment-variables) · [Scripts](#scripts) · [Project structure](#project-structure) · [Customization](#customization) · [ViraStack AI](#virastack-ai) · [Deployment](#deployment)
|
|
30
30
|
|
|
@@ -1,96 +1,68 @@
|
|
|
1
|
-
# ViraStack Start — Next.js Edition
|
|
1
|
+
# ViraStack Start — Next.js Edition (i18n)
|
|
2
2
|
|
|
3
|
-
> Premium Next.js 16 + React 19 + Tailwind CSS 4 boilerplate
|
|
3
|
+
> Premium Next.js 16 + React 19 + Tailwind CSS 4 boilerplate with **next-intl** multi-language routing (`en`, `tr`). Feature-sliced architecture, agent-ready DX. Auth, database/ORM, and testing are intentionally omitted.
|
|
4
4
|
|
|
5
|
-
Built on the App Router with Server/Client Components, streaming, and the Metadata API. UI primitives use **Base UI**
|
|
5
|
+
Built on the App Router with a `[locale]` segment, Server/Client Components, streaming, and the Metadata API. UI primitives use **Base UI** styled with Tailwind CSS 4. State triad: TanStack Query, Zustand, `nuqs`. Forms: React Hook Form + Zod. **ViraStack AI** ships on scaffold.
|
|
6
6
|
|
|
7
7
|
- Tech stack: Next.js 16, React 19, Tailwind CSS 4, TypeScript 5 (strict + `noUncheckedIndexedAccess`), Node.js `>=20.9`
|
|
8
|
+
- i18n: `next-intl` — locales `en` (default) and `tr`; messages in `src/messages/*.json`; routing in `src/i18n/`
|
|
8
9
|
- UI: Base UI, Framer Motion, Sonner, Lucide React, `next-themes`, `class-variance-authority`
|
|
9
10
|
- Data & state: TanStack Query 5, Zustand, `nuqs`
|
|
10
11
|
- Forms: React Hook Form + Zod (+ `@hookform/resolvers`)
|
|
11
|
-
- API: Native `fetch` wrapper in `src/lib/api.ts` (`ApiError`
|
|
12
|
-
- Env:
|
|
12
|
+
- API: Native `fetch` wrapper in `src/lib/api.ts` (`ApiError`)
|
|
13
|
+
- Env: Zod schema in `src/env.ts`
|
|
13
14
|
- Tooling: ESLint 9, Prettier 3, Husky, Knip, Commitlint, Changesets, `@next/bundle-analyzer`
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Not included by default: Auth, DB/ORM, i18n (`next-intl` not installed), test runner, CSP
|
|
15
|
+
- ViraStack AI: `AGENTS.md`, `CLAUDE.md`, `.cursor/rules/*.mdc`, `docs/*`
|
|
16
|
+
- Not included by default: Auth, DB/ORM, test runner, CSP
|
|
17
17
|
|
|
18
18
|
## Docs
|
|
19
19
|
- [Repository (GitHub)](https://github.com/virastack/start): CLI and templates
|
|
20
|
-
- [README](https://github.com/virastack/start/tree/main/templates/nextjs):
|
|
21
|
-
- [
|
|
22
|
-
- [Product docs](https://
|
|
20
|
+
- [README](https://github.com/virastack/start/tree/main/templates-i18n/nextjs): This edition
|
|
21
|
+
- [i18n docs](https://virastack.com/start/docs/i18n): Locale and message conventions
|
|
22
|
+
- [Product docs](https://virastack.com/start/docs): ViraStack Start documentation
|
|
23
|
+
- [Start llms-full.txt](https://virastack.com/start/llms-full.txt): CLI flags and template map for agents
|
|
24
|
+
- [Ecosystem llms.txt](https://virastack.com/llms.txt): All ViraStack products
|
|
25
|
+
- [Architecture guide](https://github.com/virastack/ai/blob/main/templates/core/docs/architecture-guide.md): Placement rules
|
|
23
26
|
|
|
24
27
|
## Key Files & Entry Points
|
|
25
|
-
- [`src/app/layout.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/app/layout.tsx): Root
|
|
26
|
-
- [`src/app/
|
|
27
|
-
- [`src/app/
|
|
28
|
-
- [`src/app/
|
|
29
|
-
- [`src/app/
|
|
30
|
-
- [`src/app/
|
|
31
|
-
- [`src/app/
|
|
32
|
-
- [`src/
|
|
33
|
-
- [`src/
|
|
34
|
-
- [`src/
|
|
35
|
-
- [`src/
|
|
36
|
-
- [`src/
|
|
37
|
-
- [`src/
|
|
38
|
-
- [`src/
|
|
39
|
-
- [`src/lib/
|
|
40
|
-
- [`src/providers/Providers.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/providers/Providers.tsx):
|
|
41
|
-
- [`
|
|
28
|
+
- [`src/app/layout.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/layout.tsx): Root shell
|
|
29
|
+
- [`src/app/[locale]/layout.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/%5Blocale%5D/layout.tsx): Locale layout + next-intl provider
|
|
30
|
+
- [`src/app/[locale]/page.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/%5Blocale%5D/page.tsx): Home → `<LandingPage />`
|
|
31
|
+
- [`src/app/[locale]/loading.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/%5Blocale%5D/loading.tsx): Route skeleton
|
|
32
|
+
- [`src/app/[locale]/error.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/%5Blocale%5D/error.tsx): Route error boundary
|
|
33
|
+
- [`src/app/[locale]/not-found.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/%5Blocale%5D/not-found.tsx): 404
|
|
34
|
+
- [`src/app/global-error.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/app/global-error.tsx): Root error boundary
|
|
35
|
+
- [`src/i18n/routing.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/i18n/routing.ts): Locales + defaultLocale
|
|
36
|
+
- [`src/i18n/request.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/i18n/request.ts): next-intl request config
|
|
37
|
+
- [`src/messages/en.json`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/messages/en.json): English messages
|
|
38
|
+
- [`src/messages/tr.json`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/messages/tr.json): Turkish messages
|
|
39
|
+
- [`src/components/shared/LanguageSwitcher.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/components/shared/LanguageSwitcher.tsx): Locale switcher
|
|
40
|
+
- [`src/env.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/env.ts): Zod env schema
|
|
41
|
+
- [`src/config/site.config.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/config/site.config.ts): Site config
|
|
42
|
+
- [`src/lib/api.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/lib/api.ts): Fetch wrapper + `ApiError`
|
|
43
|
+
- [`src/providers/Providers.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/providers/Providers.tsx): Theme, Query, Nuqs, Toaster
|
|
44
|
+
- [`src/proxy.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/src/proxy.ts): Next.js 16 network boundary / locale middleware hook
|
|
45
|
+
- [`next.config.ts`](https://github.com/virastack/start/blob/main/templates-i18n/nextjs/next.config.ts): Next config + next-intl plugin
|
|
42
46
|
|
|
43
47
|
## Landing Feature (demo — delete when building)
|
|
44
|
-
Canonical tree under `src/features/landing/`.
|
|
48
|
+
Canonical tree under `src/features/landing/`. Prefer feature-local copy via next-intl keys in `src/messages`.
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
- [`src/features/landing/components/LandingPage.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/LandingPage.tsx): Page composition (Header + sections + Footer)
|
|
48
|
-
- [`src/features/landing/components/Hero.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/Hero.tsx): Hero section
|
|
49
|
-
- [`src/features/landing/components/Features.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/Features.tsx): Feature grid
|
|
50
|
-
- [`src/features/landing/components/Showcase.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/Showcase.tsx): Stack demos host (Query, Zustand, forms, nuqs)
|
|
51
|
-
- [`src/features/landing/components/UsersDemo.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/UsersDemo.tsx): TanStack Query + `nuqs` demo
|
|
52
|
-
- [`src/features/landing/components/CartDemo.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/CartDemo.tsx): Zustand demo
|
|
53
|
-
- [`src/features/landing/components/ProjectFormDemo.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/components/ProjectFormDemo.tsx): RHF + Zod demo
|
|
54
|
-
- [`src/features/landing/api/get-users.api.ts`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/api/get-users.api.ts): Feature API function
|
|
55
|
-
- [`src/features/landing/hooks/use-users.ts`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/hooks/use-users.ts): Feature TanStack Query hook
|
|
56
|
-
- [`src/features/landing/stores/counter.store.ts`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/stores/counter.store.ts): Feature Zustand store
|
|
57
|
-
- [`src/features/landing/schemas/project.schema.ts`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/schemas/project.schema.ts): Feature Zod schema
|
|
58
|
-
- [`src/features/landing/data/features.data.tsx`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/data/features.data.tsx): Feature static data
|
|
59
|
-
- [`src/features/landing/helpers/`](https://github.com/virastack/start/tree/main/templates/nextjs/src/features/landing/helpers): Feature helpers (motion tokens, initials)
|
|
60
|
-
- [`src/features/landing/icons/`](https://github.com/virastack/start/tree/main/templates/nextjs/src/features/landing/icons): Brand SVGs used only by the landing demo
|
|
61
|
-
- [`src/features/landing/types/user.types.ts`](https://github.com/virastack/start/blob/main/templates/nextjs/src/features/landing/types/user.types.ts): Feature types
|
|
50
|
+
Quick start: delete `src/features/landing`, replace `src/app/[locale]/page.tsx`, keep layout chrome if useful.
|
|
62
51
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
- [`src/hooks`](https://github.com/virastack/start/tree/main/templates/nextjs/src/hooks), [`src/stores`](https://github.com/virastack/start/tree/main/templates/nextjs/src/stores), [`src/schemas`](https://github.com/virastack/start/tree/main/templates/nextjs/src/schemas): Shared barrels (promote via Rule of Three)
|
|
70
|
-
- [`src/helpers`](https://github.com/virastack/start/tree/main/templates/nextjs/src/helpers): Shared helpers
|
|
71
|
-
- [`src/styles/tailwind.css`](https://github.com/virastack/start/blob/main/templates/nextjs/src/styles/tailwind.css): Tailwind v4 entry + design tokens
|
|
72
|
-
- Assets: [`public/logo.webp`](https://github.com/virastack/start/blob/main/templates/nextjs/public/logo.webp), [`public/og.png`](https://github.com/virastack/start/blob/main/templates/nextjs/public/og.png), [`public/favicon.ico`](https://github.com/virastack/start/blob/main/templates/nextjs/public/favicon.ico)
|
|
73
|
-
|
|
74
|
-
## Customization & Imports
|
|
75
|
-
- Search the project for `FIXME:` (site config, remote images, auth attachment on the API client).
|
|
76
|
-
- Prefer short path aliases: `@/ui`, `@/hooks`, `@/schemas`, `@/layout` over long forms. Prefer feature-local imports under `@/features/[feature]/…` for demo-scoped code.
|
|
77
|
-
- Default scope is `features/[feature]/` — promote to global `src/` only when a second feature needs it. No cross-feature imports.
|
|
52
|
+
## Architecture for agents
|
|
53
|
+
- Feature-Sliced: work under `src/features/[feature]/` — no cross-feature imports
|
|
54
|
+
- Prefer `@/ui`, `@/hooks`, `@/schemas`, `@/layout` aliases
|
|
55
|
+
- Never hardcode UI strings — use `useTranslations` / message JSON
|
|
56
|
+
- Brand name `ViraStack` stays untranslated
|
|
57
|
+
- Search for `FIXME:` after scaffold
|
|
78
58
|
|
|
79
59
|
## ViraStack AI
|
|
80
|
-
-
|
|
81
|
-
- `AGENTS.md`: Agent operating guide (all agents)
|
|
82
|
-
- `CLAUDE.md`: Claude Code entry point (`@AGENTS.md`)
|
|
83
|
-
- `.cursor/rules/*.mdc`: Scoped coding rules (Cursor auto-loads)
|
|
84
|
-
- `docs/architecture-guide.md`, `docs/MEMORIES.md`: Architecture and project memory
|
|
85
|
-
- Skills: [emilkowalski/skills](https://github.com/emilkowalski/skills) (7 design-engineering skills) + [make-interfaces-feel-better](https://github.com/jakubkrehel/make-interfaces-feel-better)
|
|
60
|
+
- Refresh: `npx @virastack/ai init --force`
|
|
86
61
|
- Package: [`@virastack/ai`](https://github.com/virastack/ai)
|
|
87
62
|
|
|
88
63
|
## External References
|
|
89
|
-
- [
|
|
90
|
-
- [
|
|
91
|
-
- [
|
|
92
|
-
- [
|
|
93
|
-
- [
|
|
94
|
-
- [nuqs](https://nuqs.dev/): Type-safe URL search param state
|
|
95
|
-
- [Zod](https://zod.dev/): Runtime validation and parsing
|
|
96
|
-
- [ViraStack AI](https://github.com/virastack/ai): Shared agent rules package (`@virastack/ai`)
|
|
64
|
+
- [next-intl](https://next-intl.dev/)
|
|
65
|
+
- [Next.js Docs](https://nextjs.org/docs)
|
|
66
|
+
- [TanStack Query](https://tanstack.com/query/latest)
|
|
67
|
+
- [nuqs](https://nuqs.dev/)
|
|
68
|
+
- [Zod](https://zod.dev/)
|
|
@@ -24,7 +24,7 @@ _The TanStack Start boilerplate that feels effortless._
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
**Docs:** [See the docs](https://
|
|
27
|
+
**Docs:** [See the docs](https://virastack.com/start/docs)
|
|
28
28
|
|
|
29
29
|
**Contents:** [Why](#why-virastack) · [Features](#features) · [Getting started](#getting-started) · [Environment](#environment-variables) · [Scripts](#scripts) · [Project structure](#project-structure) · [Customization](#customization) · [ViraStack AI](#virastack-ai) · [Deployment](#deployment)
|
|
30
30
|
|
|
@@ -1,86 +1,64 @@
|
|
|
1
|
-
# ViraStack Start — TanStack Start Edition
|
|
1
|
+
# ViraStack Start — TanStack Start Edition (i18n)
|
|
2
2
|
|
|
3
|
-
> Premium TanStack Start + React 19 + Tailwind CSS 4 boilerplate
|
|
3
|
+
> Premium TanStack Start + React 19 + Tailwind CSS 4 boilerplate with **Paraglide JS** i18n (`en`, `tr`). Feature-sliced architecture, agent-ready DX. Auth, database/ORM, and testing are intentionally omitted.
|
|
4
4
|
|
|
5
|
-
Built on TanStack Router file-based routing with
|
|
5
|
+
Built on TanStack Router file-based routing with SSR via TanStack Start. Messages live under `messages/`; Paraglide generates `src/paraglide`. UI: **Base UI** + Tailwind CSS 4. State triad: TanStack Query, Zustand, `nuqs`. Forms: React Hook Form + Zod. **ViraStack AI** ships on scaffold.
|
|
6
6
|
|
|
7
|
-
- Tech stack: TanStack Start, TanStack Router, React 19, Tailwind CSS 4, TypeScript
|
|
7
|
+
- Tech stack: TanStack Start, TanStack Router, React 19, Tailwind CSS 4, TypeScript strict, Node.js `>=20.9`
|
|
8
|
+
- i18n: `@inlang/paraglide-js` — `project.inlang/settings.json` language tags `en` (source) and `tr`; compiled output in `src/paraglide`
|
|
8
9
|
- UI: Base UI, Framer Motion, Sonner, Lucide React, `next-themes`, `class-variance-authority`
|
|
9
10
|
- Data & state: TanStack Query 5, Zustand, `nuqs`
|
|
10
11
|
- Forms: React Hook Form + Zod (+ `@hookform/resolvers`)
|
|
11
|
-
- API: Native `fetch` wrapper in `src/lib/api.ts` (`ApiError`
|
|
12
|
-
- Env:
|
|
12
|
+
- API: Native `fetch` wrapper in `src/lib/api.ts` (`ApiError`)
|
|
13
|
+
- Env: Zod schema in `src/env.ts` (`VITE_*` public vars)
|
|
13
14
|
- Tooling: ESLint 9, Prettier 3, Husky, Knip, Commitlint, Changesets, Vite 8
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Not included by default: Auth, DB/ORM, i18n, test runner, CSP
|
|
15
|
+
- ViraStack AI: `AGENTS.md`, `CLAUDE.md`, `.cursor/rules/*.mdc`, `docs/*`
|
|
16
|
+
- Not included by default: Auth, DB/ORM, test runner, CSP
|
|
17
17
|
|
|
18
18
|
## Docs
|
|
19
19
|
- [Repository (GitHub)](https://github.com/virastack/start): CLI and templates
|
|
20
|
-
- [README](https://github.com/virastack/start/tree/main/templates/tanstack):
|
|
21
|
-
- [
|
|
22
|
-
- [Product docs](https://
|
|
20
|
+
- [README](https://github.com/virastack/start/tree/main/templates-i18n/tanstack): This edition
|
|
21
|
+
- [i18n docs](https://virastack.com/start/docs/i18n): Locale and message conventions
|
|
22
|
+
- [Product docs](https://virastack.com/start/docs): ViraStack Start documentation
|
|
23
|
+
- [Start llms-full.txt](https://virastack.com/start/llms-full.txt): CLI flags and template map for agents
|
|
24
|
+
- [Ecosystem llms.txt](https://virastack.com/llms.txt): All ViraStack products
|
|
25
|
+
- [Architecture guide](https://github.com/virastack/ai/blob/main/templates/core/docs/architecture-guide.md): Placement rules
|
|
26
|
+
- [Paraglide JS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs): i18n library docs
|
|
23
27
|
|
|
24
28
|
## Key Files & Entry Points
|
|
25
|
-
- [`src/routes/__root.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/routes/__root.tsx): Root route, document shell, providers, SEO head
|
|
26
|
-
- [`src/routes/index.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/routes/index.tsx): Home
|
|
27
|
-
- [`
|
|
28
|
-
- [`
|
|
29
|
-
- [`
|
|
30
|
-
- [`src/
|
|
31
|
-
- [`src/
|
|
32
|
-
- [`src/
|
|
33
|
-
- [`src/
|
|
34
|
-
- [`src/config/
|
|
35
|
-
- [`src/lib/api.ts`](https://github.com/virastack/start/blob/main/templates/tanstack/src/lib/api.ts):
|
|
36
|
-
- [`src/
|
|
37
|
-
- [`
|
|
38
|
-
- [`vite.config.ts`](https://github.com/virastack/start/blob/main/templates/tanstack/vite.config.ts): Vite + TanStack Start + Tailwind
|
|
29
|
+
- [`src/routes/__root.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/routes/__root.tsx): Root route, document shell, providers, SEO head
|
|
30
|
+
- [`src/routes/index.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/routes/index.tsx): Home → `<LandingPage />`
|
|
31
|
+
- [`project.inlang/settings.json`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/project.inlang/settings.json): Language tags and Paraglide settings
|
|
32
|
+
- [`messages/en.json`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/messages/en.json): English message source
|
|
33
|
+
- [`messages/tr.json`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/messages/tr.json): Turkish message source
|
|
34
|
+
- [`src/paraglide/`](https://github.com/virastack/start/tree/main/templates-i18n/tanstack/src/paraglide): Generated runtime (do not hand-edit)
|
|
35
|
+
- [`src/start.ts`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/start.ts): Global request middleware
|
|
36
|
+
- [`src/router.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/router.tsx): Router factory + Query SSR
|
|
37
|
+
- [`src/env.ts`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/env.ts): Zod env (`VITE_*`)
|
|
38
|
+
- [`src/config/site.config.ts`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/config/site.config.ts): Site config
|
|
39
|
+
- [`src/lib/api.ts`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/lib/api.ts): Fetch wrapper + `ApiError`
|
|
40
|
+
- [`src/providers/Providers.tsx`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/src/providers/Providers.tsx): Theme, Nuqs, Toaster
|
|
41
|
+
- [`vite.config.ts`](https://github.com/virastack/start/blob/main/templates-i18n/tanstack/vite.config.ts): Vite + TanStack Start + Paraglide + Tailwind
|
|
39
42
|
|
|
40
43
|
## Landing Feature (demo — delete when building)
|
|
41
|
-
Canonical tree under `src/features/landing/`.
|
|
44
|
+
Canonical tree under `src/features/landing/`. Use Paraglide message functions for UI copy.
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
- [`src/features/landing/components/LandingPage.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/LandingPage.tsx): Page composition (Header + sections + Footer)
|
|
45
|
-
- [`src/features/landing/components/Hero.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/Hero.tsx): Hero section
|
|
46
|
-
- [`src/features/landing/components/Features.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/Features.tsx): Feature grid
|
|
47
|
-
- [`src/features/landing/components/Showcase.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/Showcase.tsx): Stack demos host (Query, Zustand, forms, nuqs)
|
|
48
|
-
- [`src/features/landing/components/UsersDemo.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/UsersDemo.tsx): TanStack Query + `nuqs` demo
|
|
49
|
-
- [`src/features/landing/components/CartDemo.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/CartDemo.tsx): Zustand demo
|
|
50
|
-
- [`src/features/landing/components/ProjectFormDemo.tsx`](https://github.com/virastack/start/blob/main/templates/tanstack/src/features/landing/components/ProjectFormDemo.tsx): RHF + Zod demo
|
|
46
|
+
Quick start: delete `src/features/landing`, replace home route, keep shared layout if useful.
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
- [`src/hooks`](https://github.com/virastack/start/tree/main/templates/tanstack/src/hooks), [`src/stores`](https://github.com/virastack/start/tree/main/templates/tanstack/src/stores), [`src/schemas`](https://github.com/virastack/start/tree/main/templates/tanstack/src/schemas): Shared barrels (promote via Rule of Three)
|
|
59
|
-
- [`src/helpers`](https://github.com/virastack/start/tree/main/templates/tanstack/src/helpers): Shared helpers
|
|
60
|
-
- [`src/styles/tailwind.css`](https://github.com/virastack/start/blob/main/templates/tanstack/src/styles/tailwind.css): Tailwind v4 entry + design tokens
|
|
61
|
-
- Assets: [`public/logo.webp`](https://github.com/virastack/start/blob/main/templates/tanstack/public/logo.webp), [`public/og.png`](https://github.com/virastack/start/blob/main/templates/tanstack/public/og.png), [`public/favicon.ico`](https://github.com/virastack/start/blob/main/templates/tanstack/public/favicon.ico)
|
|
62
|
-
|
|
63
|
-
## Customization & Imports
|
|
64
|
-
- Search the project for `FIXME:` (site config, auth attachment on the API client).
|
|
65
|
-
- Prefer short path aliases: `@/ui`, `@/hooks`, `@/schemas`, `@/layout` over long forms. Prefer feature-local imports under `@/features/[feature]/…` for demo-scoped code.
|
|
66
|
-
- Default scope is `features/[feature]/` — promote to global `src/` only when a second feature needs it. No cross-feature imports.
|
|
48
|
+
## Architecture for agents
|
|
49
|
+
- Feature-Sliced: `src/features/[feature]/` — no cross-feature imports
|
|
50
|
+
- Prefer short aliases; promote shared code only via Rule of Three
|
|
51
|
+
- Edit `messages/*.json` (or inlang sources), not generated `src/paraglide` output
|
|
52
|
+
- Brand name `ViraStack` stays untranslated
|
|
53
|
+
- Search for `FIXME:` after scaffold
|
|
67
54
|
|
|
68
55
|
## ViraStack AI
|
|
69
|
-
-
|
|
70
|
-
- `AGENTS.md`: Agent operating guide (all agents)
|
|
71
|
-
- `CLAUDE.md`: Claude Code entry point (`@AGENTS.md`)
|
|
72
|
-
- `.cursor/rules/*.mdc`: Scoped coding rules (Cursor auto-loads)
|
|
73
|
-
- `docs/architecture-guide.md`, `docs/MEMORIES.md`: Architecture and project memory
|
|
74
|
-
- Skills: [emilkowalski/skills](https://github.com/emilkowalski/skills) (7 design-engineering skills) + [make-interfaces-feel-better](https://github.com/jakubkrehel/make-interfaces-feel-better)
|
|
56
|
+
- Refresh: `npx @virastack/ai init --force`
|
|
75
57
|
- Package: [`@virastack/ai`](https://github.com/virastack/ai)
|
|
76
58
|
|
|
77
59
|
## External References
|
|
78
|
-
- [TanStack Start
|
|
79
|
-
- [TanStack
|
|
80
|
-
- [
|
|
81
|
-
- [
|
|
82
|
-
- [
|
|
83
|
-
- [TanStack Query](https://tanstack.com/query/latest): Server-state syncing & caching
|
|
84
|
-
- [nuqs](https://nuqs.dev/): Type-safe URL search param state
|
|
85
|
-
- [Zod](https://zod.dev/): Runtime validation and parsing
|
|
86
|
-
- [ViraStack AI](https://github.com/virastack/ai): Shared agent rules package (`@virastack/ai`)
|
|
60
|
+
- [TanStack Start](https://tanstack.com/start)
|
|
61
|
+
- [TanStack Query](https://tanstack.com/query/latest)
|
|
62
|
+
- [Paraglide JS](https://inlang.com/m/gerre34r/library-inlang-paraglideJs)
|
|
63
|
+
- [nuqs](https://nuqs.dev/)
|
|
64
|
+
- [Zod](https://zod.dev/)
|