virastack 1.0.5 → 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/package.json
CHANGED
|
@@ -20,6 +20,8 @@ Built on the App Router with Server/Client Components, streaming, and the Metada
|
|
|
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
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
|
|
@@ -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
|
|
@@ -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
|
-
- [
|
|
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
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/)
|
|
@@ -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
|
-
- [
|
|
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
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/)
|