- Nuxt 4 with Vue 3 — SSR + prerendered routes
- Nuxt UI v3 — components and Tailwind layer
- @nuxt/fonts, @nuxt/image, @vueuse/nuxt
- valibot — schema validation, client + server
- vitest with
happy-dom— unit tests - Cloudflare Pages — hosting, via Nitro's
cloudflare-pagespreset - pnpm 11 — package manager
Requires Node 22+ and pnpm 11+.
git clone git@github.com:DevHaver/kabbalahindia.com.git
cd kabbalahindia.com
pnpm install
cp .env.example .env # fill in NUXT_PUBLIC_WHATSAPP_URL at minimum
pnpm devOpen http://localhost:3000.
| Script | What it does |
|---|---|
pnpm dev |
Start the Nuxt dev server on 0.0.0.0:3000 |
pnpm build |
Production build (cloudflare-pages preset) |
pnpm preview |
Preview the production build locally |
pnpm test |
Run the vitest suite |
pnpm lint |
nuxt typecheck + ESLint |
pnpm format |
Prettier write across the repo |
Please run pnpm lint and pnpm test before opening a PR.
app/
assets/css/ # design tokens (gemstone palette, typography)
components/ # primitives + section components
composables/ # shared composables
pages/ # landing page
plugins/ # client-only plugins (analytics, etc.)
server/
api/ # API route handlers
middleware/ # request middleware
utils/ # server-side helpers
tests/server/ # vitest unit tests
Designs/ # design source (design.pen, generated with pencil.dev)
Names are prefixed NUXT_ so they bind to runtimeConfig automatically. See .env.example for the full list with inline comments.
| Variable | Required | Purpose |
|---|---|---|
NUXT_PUBLIC_WHATSAPP_URL |
yes | WhatsApp group invite or wa.me/... link |
NUXT_PUBLIC_UMAMI_WEBSITE_ID |
no | Umami site UUID; analytics is disabled when unset |
NUXT_TELEGRAM_BOT_TOKEN |
no | Telegram bot token for signup notifications |
NUXT_TELEGRAM_CHAT_ID |
no | Telegram chat ID to deliver notifications to |
NUXT_SIGNUP_WEBHOOK_URL |
no | Optional outbound webhook for signups |
NUXT_SIGNUP_WEBHOOK_TOKEN |
no | Bearer token sent with the webhook request |
Never commit a .env file. .env* is gitignored except for .env.example.
The source design lives in Designs/design.pen — generated with Pencil. Keep visual changes in sync with the design file; ping a maintainer if you need access to push updates back.
Production deploys to Cloudflare Pages. Push to main, Cloudflare picks it up from the connected GitHub repo and builds with the Nitro cloudflare-pages preset. Environment variables are configured in the Cloudflare Pages dashboard under Settings → Environment variables.
The Dockerfile at the repo root is unused in production and kept only for local container experiments.
PRs are welcome. A few notes to make review smoother:
- Open an issue first for anything larger than a small fix — it's faster than a back-and-forth on a PR.
- One concern per PR. Mixing a refactor with a feature makes things hard to review.
- Run
pnpm lintandpnpm testlocally. CI will run them too, but it's slower. - Conventional commit messages (
feat:,fix:,chore:,docs:, …). - Keep visual changes consistent with the design file in
Designs/.
Please do not open a public issue for security reports. Email the maintainers privately and we will respond as soon as possible. Coordinated disclosure is appreciated.
Built by DevHaver.
