Mobile-first Web-App fuer persoenliches Health-, Ernaehrungs-, Aktivitaets- und Einkaufs-Tracking im Home-Lab-Betrieb. Stack: pnpm Monorepo - Next.js 16 + React 19 + Tailwind (apps/admin) - Hono + tRPC + Better Auth mit 2FA und Passkeys (packages/api) - PostgreSQL + Drizzle ORM (packages/db) - Docker fuer Postgres und pgAdmin. Module: - Auth mit Login, 2FA (TOTP + Backup-Codes), Passkeys und Admin-Recovery - Tagesansicht mit Essen, Trinken, Gewicht, Aktivitaeten und Coach-Hinweisen - Lebensmittelkatalog mit Naehrwerten, Portionen, OCR/Barcode/Open Food Facts - Rezepte mit Live-Naehrwertberechnung und Community-Vorschlaegen - Essensplanung und Wochenbudget mit Sportbonus - Einkaufslisten mit Maerkten und Laufweg-Sortierung - Hellfireclub mit Aktivitaetspunkten und gemeinsamer Aktivitaetsplanung - Wearables-Vorbereitung (Fitbit / Google Fit / Health Connect) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
30 lines
1.6 KiB
SQL
30 lines
1.6 KiB
SQL
ALTER TABLE "stores"
|
|
ADD COLUMN IF NOT EXISTS "address" text,
|
|
ADD COLUMN IF NOT EXISTS "placeId" text,
|
|
ADD COLUMN IF NOT EXISTS "latitude" numeric(9, 6),
|
|
ADD COLUMN IF NOT EXISTS "longitude" numeric(9, 6);
|
|
|
|
CREATE TABLE IF NOT EXISTS "store_change_requests" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"userId" text NOT NULL,
|
|
"storeId" text,
|
|
"requestType" text NOT NULL DEFAULT 'structure_update',
|
|
"status" text NOT NULL DEFAULT 'pending',
|
|
"title" text NOT NULL,
|
|
"note" text,
|
|
"proposedStore" jsonb NOT NULL DEFAULT '{}'::jsonb,
|
|
"proposedDepartments" jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
"reviewedBy" text,
|
|
"reviewedAt" timestamp,
|
|
"reviewNote" text,
|
|
"acceptedStoreId" text,
|
|
"createdAt" timestamp NOT NULL DEFAULT now(),
|
|
"updatedAt" timestamp NOT NULL DEFAULT now(),
|
|
CONSTRAINT "store_change_requests_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action,
|
|
CONSTRAINT "store_change_requests_storeId_stores_id_fk" FOREIGN KEY ("storeId") REFERENCES "public"."stores"("id") ON DELETE set null ON UPDATE no action,
|
|
CONSTRAINT "store_change_requests_reviewedBy_user_id_fk" FOREIGN KEY ("reviewedBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action,
|
|
CONSTRAINT "store_change_requests_acceptedStoreId_stores_id_fk" FOREIGN KEY ("acceptedStoreId") REFERENCES "public"."stores"("id") ON DELETE set null ON UPDATE no action
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "store_change_requests_user_idx" ON "store_change_requests" USING btree ("userId");
|
|
CREATE INDEX IF NOT EXISTS "store_change_requests_status_idx" ON "store_change_requests" USING btree ("status", "createdAt");
|