You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
2
4
3
5
## Repository Purpose
4
6
5
-
Internal platform standards, skills, and scaffold templates for all SyncUpSuite projects. This repo defines **the standard** that every project — greenfield or brownfield — aligns to.
7
+
Platform standards, skills, and scaffold templates for all SyncUpSuite projects. This repo defines **the standard** that every project — greenfield or brownfield — aligns to.
6
8
7
9
**Org**: `syncupsuite`
8
-
****Repo**: `syncupsuite/webplatform4sync`
10
+
**Repo**: `syncupsuite/webplatform4sync`
9
11
10
12
---
11
13
@@ -25,19 +27,21 @@ Simple projects use the same architecture with dormant tiers (hardcoded `tenant_
25
27
26
28
## Standard Stack
27
29
30
+
Source of truth: `shared/conventions/stack.md` — always check there for locked versions.
Neon's serverless HTTP driver executes each query as a separate HTTP request. `set_config('app.tenant_id', ...)`**must** be in the same Drizzle transaction as the data queries — otherwise the config is lost.
82
+
83
+
**Correct pattern** (in `skills/neon-multi-tenant/templates/drizzle-tenant.ts`):
84
+
```typescript
85
+
// tenantQuery() wraps set_config + queries in a single transaction
Firebase provides identity. Better Auth provides sessions, RBAC, and tenant-scoped authorization in Neon. See `shared/contracts/auth.ts` for the `AuthLevel` enum and discriminated union types.
108
+
109
+
### Tailwind v4 CSS-first
76
110
77
-
Google project IDs: max 30 chars, lowercase, hyphens only. If the domain exceeds 30 chars, use `{product}-{tld}` pattern.
111
+
Tailwind v4 uses `@theme` blocks in CSS (no `tailwind.config.js`). Self-referential `var()` inside `@theme` is the standard registration pattern — not a bug:
112
+
```css
113
+
@theme {
114
+
--color-primary: var(--color-primary); /* registers :root value as Tailwind token */
115
+
}
116
+
```
117
+
118
+
Dark mode uses `[data-theme="dark"]` selector (class strategy), not `@media (prefers-color-scheme)`.
0 commit comments