feat(clock): add complete Clock app with backend, web, and landing

Features:
- World clock with timezone support and drag & drop sorting
- Alarms with repeat days, snooze, and custom sounds
- Multiple timers with start/pause/reset controls
- Stopwatch with lap times (local only)
- Pomodoro timer with customizable intervals
- Analog and digital clock widgets
- i18n support (DE, EN, FR, ES, IT)

Stack:
- Backend: NestJS 10, Drizzle ORM, PostgreSQL (port 3017)
- Web: SvelteKit 2.x, Svelte 5 runes, Tailwind CSS 4 (port 5186)
- Landing: Astro 5.x with animated clock hero (port 4323)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Till-JS 2025-12-03 15:37:51 +01:00
parent 110c6779a8
commit 2ef457ea23
104 changed files with 7517 additions and 2 deletions

View file

@ -81,6 +81,31 @@
"storage:db:push": "pnpm --filter @storage/backend db:push",
"storage:db:studio": "pnpm --filter @storage/backend db:studio",
"storage:db:seed": "pnpm --filter @storage/backend db:seed",
"clock:dev": "turbo run dev --filter=clock...",
"dev:clock:web": "pnpm --filter @clock/web dev",
"dev:clock:landing": "pnpm --filter @clock/landing dev",
"dev:clock:backend": "pnpm --filter @clock/backend dev",
"dev:clock:app": "turbo run dev --filter=@clock/web --filter=@clock/backend",
"clock:db:push": "pnpm --filter @clock/backend db:push",
"clock:db:studio": "pnpm --filter @clock/backend db:studio",
"clock:db:seed": "pnpm --filter @clock/backend db:seed",
"mail:dev": "turbo run dev --filter=mail...",
"dev:mail:mobile": "pnpm --filter @mail/mobile dev",
"dev:mail:web": "pnpm --filter @mail/web dev",
"dev:mail:landing": "pnpm --filter @mail/landing dev",
"dev:mail:backend": "pnpm --filter @mail/backend dev",
"dev:mail:app": "turbo run dev --filter=@mail/web --filter=@mail/backend",
"mail:db:push": "pnpm --filter @mail/backend db:push",
"mail:db:studio": "pnpm --filter @mail/backend db:studio",
"mail:db:seed": "pnpm --filter @mail/backend db:seed",
"todo:dev": "turbo run dev --filter=todo...",
"dev:todo:web": "pnpm --filter @todo/web dev",
"dev:todo:landing": "pnpm --filter @todo/landing dev",
"dev:todo:backend": "pnpm --filter @todo/backend dev",
"dev:todo:app": "turbo run dev --filter=@todo/web --filter=@todo/backend",
"todo:db:push": "pnpm --filter @todo/backend db:push",
"todo:db:studio": "pnpm --filter @todo/backend db:studio",
"todo:db:seed": "pnpm --filter @todo/backend db:seed",
"voxel-lava:dev": "turbo run dev --filter=@voxel-lava/web --filter=@voxel-lava/backend",
"dev:voxel-lava:web": "pnpm --filter @voxel-lava/web dev",
"dev:voxel-lava:backend": "pnpm --filter @voxel-lava/backend start:dev",
@ -109,7 +134,9 @@
"deploy:landing:manadeck": "pnpm --filter @manadeck/landing build && npx wrangler pages deploy apps/manadeck/apps/landing/dist --project-name=manadeck-landing",
"deploy:landing:zitare": "pnpm --filter @zitare/landing build && npx wrangler pages deploy apps/zitare/apps/landing/dist --project-name=zitare-landing",
"deploy:landing:presi": "pnpm --filter @presi/landing build && npx wrangler pages deploy apps/presi/apps/landing/dist --project-name=presi-landing",
"deploy:landing:all": "pnpm deploy:landing:chat && pnpm deploy:landing:picture && pnpm deploy:landing:manacore && pnpm deploy:landing:manadeck && pnpm deploy:landing:zitare && pnpm deploy:landing:presi",
"deploy:landing:clock": "pnpm --filter @clock/landing build && npx wrangler pages deploy apps/clock/apps/landing/dist --project-name=clock-landing",
"deploy:landing:mail": "pnpm --filter @mail/landing build && npx wrangler pages deploy apps/mail/apps/landing/dist --project-name=mail-landing",
"deploy:landing:all": "pnpm deploy:landing:chat && pnpm deploy:landing:picture && pnpm deploy:landing:manacore && pnpm deploy:landing:manadeck && pnpm deploy:landing:zitare && pnpm deploy:landing:presi && pnpm deploy:landing:clock && pnpm deploy:landing:mail",
"cf:login": "npx wrangler login",
"cf:projects:list": "npx wrangler pages project list",
"cf:projects:create": "echo 'Creating Cloudflare Pages projects...' && npx wrangler pages project create chat-landing --production-branch=main && npx wrangler pages project create picture-landing --production-branch=main && npx wrangler pages project create manacore-landing --production-branch=main && npx wrangler pages project create manadeck-landing --production-branch=main && npx wrangler pages project create zitare-landing --production-branch=main",