Commit Graph

6 Commits

Author SHA1 Message Date
kovakmedya 30cbb8f1be feat(onboarding): create-workspace flow
- /onboarding page (server component): redirects to /sign-in if not authed,
  to /dashboard if user already has a team. Otherwise renders form.
- createWorkspaceAction:
  * teams.create (user becomes owner via session SDK)
  * tablesDB.createRow on tenant_settings (admin SDK) with team-scoped permissions:
    Permission.read(Role.team(id)), update(owner|admin), delete(owner)
  * account.updatePrefs({ activeTenant }) — persisted source of truth
  * isletmem-tenant cookie for fast access
  * redirect to /dashboard
- setActiveTenantAction stub for future workspace switcher
- lib/appwrite/tenant.ts: getUserTeams, getActiveTenantId helpers (server-only)
- tenant-types.ts holds WorkspaceState + ACTIVE_TENANT_COOKIE (no 'use server')
2026-04-30 03:22:48 +03:00
kovakmedya 647716e042 deps: pin Appwrite SDKs to versions matching server 1.9.0
node-appwrite 24.x and appwrite 25.x target Appwrite server 1.9.1.
Our self-hosted server runs 1.9.0, which produced an SDK-version
mismatch warning on every API call.

Pinned:
  node-appwrite: ^23.1.0  (was ^24.0.0)
  appwrite:      ^24.2.0  (was ^25.0.0)

v23/v24 keep both positional and params-object overloads, so existing
auth-actions.ts calls (createEmailPasswordSession, createRecovery,
account.create) compile and run unchanged. When we upgrade Appwrite to
1.9.1 we can bump the SDKs back.
2026-04-30 03:10:39 +03:00
kovakmedya d8b61b7da8 fix(auth): move initialAuthState/AuthState to auth-types.ts
Server-action files ('use server') can only export async functions.
Exporting initialAuthState (object) caused:
  'A use server file can only export async functions, found object'
when sign-up form was submitted.

Moved AuthState type and initialAuthState const to lib/appwrite/auth-types.ts.
Updated 3 form components to import the const from the new location.
2026-04-30 03:08:26 +03:00
kovakmedya dfa1b28632 feat(auth): Appwrite-backed sign-in / sign-up / forgot-password + middleware guard
- Server actions in lib/appwrite/auth-actions.ts:
  signInAction, signUpAction, forgotPasswordAction, signOutAction
  All use node-appwrite admin client; session secret stored as httpOnly
  cookie (isletmem-session). Errors localized to Turkish.
- Redesigned /sign-in and /sign-up using sign-in-3 split-card layout,
  branded as 'İşletmem' with gradient brand panel (no external image).
  Removed social login buttons (email/password only for now).
- /forgot-password localized; success state shows email-sent confirmation.
- Auth pages redirect to /dashboard if user already has a session.
- middleware.ts:
  * Protects /dashboard, /onboarding, /settings — redirects to /sign-in?redirect=...
  * Auth pages redirect logged-in users to /dashboard
  * Keeps legacy /login and /register redirects
2026-04-30 03:04:15 +03:00
kovakmedya 6dd4f9e9c3 db: Appwrite schema (isletmem db, 11 tables, indexes) + SDK helpers
- Created database 'isletmem' with 11 tables via Appwrite MCP:
  tenant_settings, customers, services, software, customer_software,
  calendar_events, tasks, finance_entries, invoices, invoice_items, audit_logs
- All tables use rowSecurity=true; row-level perms scoped to Appwrite Team (tenant)
- 18 indexes (composite on tenantId + queried columns; unique for invoice numbers, tenant_settings)
- src/lib/appwrite/schema.ts as TS source of truth (DATABASE_ID, TABLES, row types)
- src/lib/appwrite/client.ts (browser SDK)
- src/lib/appwrite/server.ts (node-appwrite admin + session clients)
- .env.example template, .env.local for dev (gitignored)
- typecheck script added
2026-04-30 02:43:25 +03:00
kovakmedya 29aa346f9e Initial commit: silicondeck/shadcn-dashboard-landing-template (nextjs-version) + CLAUDE.md
- Next.js 16.1.1 + React 19.2.3 + Tailwind v4 + shadcn/ui v3
- Template scaffold (App Router with (auth)/(dashboard)/landing route groups)
- pnpm v10 lockfile
- CLAUDE.md describing multi-tenant Appwrite architecture, 8 modules, Gitea+Coolify deploy
2026-04-30 02:28:30 +03:00