Skip to content

refactor: migrate to Vite workspace with Docker and auto-migration#29

Merged
productdevbook merged 15 commits intomainfrom
feat/vite-migration
Feb 23, 2026
Merged

refactor: migrate to Vite workspace with Docker and auto-migration#29
productdevbook merged 15 commits intomainfrom
feat/vite-migration

Conversation

@productdevbook
Copy link
Owner

Summary

  • Move Dockerfile and docker-compose.yaml into app/ directory
  • Move SDK into app/sdk/ and set up pnpm workspace (workspace:*)
  • Update docker-compose ports to avoid conflicts: postgres 5433, redis 6380, server 3412
  • Upgrade postgres to v18, use platformatic/node-caged:25-slim as base image
  • Add server startup migration plugin — runs on every deploy automatically
  • Fix nitro-graphql/utils/definenitro-graphql/define in all 37 resolver files
  • Remove skipLocalScan so resolvers are discovered automatically
  • Add missing imports: PiniaColada plugin, Vue primitives, graphql composables
  • Add jsonwebtoken dependency
  • Regenerate migrations with drizzle-kit beta

Test plan

  • docker compose up -d starts postgres (5433) and redis (6380) without port conflicts
  • pnpm dev starts Vite dev server on port 3412
  • GraphQL resolvers are found on startup (no "No resolvers found" warning)
  • DB migrations run automatically on server start
  • Docker production build succeeds (docker build --target production)

🤖 Generated with Claude Code

productdevbook and others added 10 commits February 23, 2026 17:24
…structure

- Move all source to app/ mirroring yaprak/app structure
- Replace Nuxt with Vite + @vitejs/plugin-vue
- Remove abckit, copy components/ui from yaprak directly
- Replace all abckit/shadcn/* imports with ~/components/ui/*
- Replace NuxtLink→RouterLink, navigateTo→router.push, remove definePageMeta
- Add explicit Vue/vue-router imports (no more Nuxt auto-imports)
- Move server/ inside app/, add app/package.json with yaprak versions
- Add src/main.ts, src/App.vue, src/router.ts, src/style.css
- Add Icon wrapper component at src/components/common/Icon.vue
- Update Dockerfile for new app/ structure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ver schema

drizzle-orm v1 beta removed `relations` export which nitroping server uses.
Reverted to ^0.45.1 (orm) and ^0.31.8 (kit) — the versions from original package.json.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace old `relations()` with new `defineRelations()` in schema/relations.ts
- Add drizzle-zod dependency back
- Add explicit nitro imports: definePlugin (was defineNitroPlugin), defineEventHandler/getHeader from nitro/h3
- Add ~~/server alias to vite.config.ts resolve and nitro alias config

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…auto-migration

- Move Dockerfile and docker-compose.yaml into app/ directory
- Move SDK into app/sdk/ and set up pnpm workspace
- Update docker-compose ports: postgres 5433, redis 6380, server 3412
- Upgrade postgres to v18, use platformatic/node-caged:25-slim base image
- Add server startup migration plugin (runs on every deploy)
- Fix nitro-graphql/utils/define → nitro-graphql/define in all resolvers
- Remove skipLocalScan so resolvers are discovered automatically
- Add missing imports: PiniaColada plugin, Vue primitives, graphql composables
- Add jsonwebtoken dependency
- Regenerate migrations with drizzle-kit beta

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace nitro/runtime with nitro (definePlugin) in migrate.ts
- Fix Zod v4 z.record() to require key+value schemas
- Remove unused convertToPem method in webpush.ts; fix statusCode property
- Add non-null assertions for drizzle .returning()[0] results
- Cast resolver input fields to fix drizzle insert type errors
- Fix dashboardStats possibly-undefined array access
- Install missing packages: embla-carousel-vue, vaul-vue, vue-input-otp, @tiptap/*
- Create useImageUrl composable for AppImage component
- Add nitro-graphql.config.ts with clientDir pointing to src/graphql
- Generate nitro-graphql-client.d.ts types; update tsconfig paths
- Fix Icon component class binding (object -> template string)
- Remove unused computed variable in index.vue

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
productdevbook and others added 5 commits February 23, 2026 19:59
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- docker-publish: context/file now point to app/Dockerfile
- ci: new workflow for typecheck + lint on push/PR to main

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@productdevbook productdevbook merged commit e09b507 into main Feb 23, 2026
1 check passed
@productdevbook productdevbook deleted the feat/vite-migration branch February 23, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant