@usequark/quark-create-app 1.23.11 → 1.23.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -26
  3. package/package.json +67 -55
  4. package/src/index.js +17 -17
  5. package/src/utils.js +1 -1
  6. package/templates/base-project/.cursor/rules/quark.mdc +17 -17
  7. package/templates/base-project/.github/copilot-instructions.md +5 -5
  8. package/templates/base-project/.github/skills/project-context/SKILL.md +6 -6
  9. package/templates/base-project/CLAUDE.md +12 -12
  10. package/templates/base-project/README.md +3 -3
  11. package/templates/base-project/apps/web/next.config.js +5 -5
  12. package/templates/base-project/apps/web/package.json +5 -5
  13. package/templates/base-project/apps/web/src/app/_components/HomeThemeToggle.js +1 -1
  14. package/templates/base-project/apps/web/src/app/api/auth/apple/route.js +2 -2
  15. package/templates/base-project/apps/web/src/app/api/auth/google/route.js +2 -2
  16. package/templates/base-project/apps/web/src/app/api/auth/refresh/route.js +1 -1
  17. package/templates/base-project/apps/web/src/app/api/auth/register/route.js +3 -3
  18. package/templates/base-project/apps/web/src/app/api/auth/token/route.js +2 -2
  19. package/templates/base-project/apps/web/src/app/api/csrf/route.js +1 -1
  20. package/templates/base-project/apps/web/src/app/api/device/register/route.js +2 -2
  21. package/templates/base-project/apps/web/src/app/api/error-handler.js +1 -1
  22. package/templates/base-project/apps/web/src/app/api/files/[id]/route.js +2 -2
  23. package/templates/base-project/apps/web/src/app/api/files/route.js +2 -2
  24. package/templates/base-project/apps/web/src/app/api/health/route.js +2 -2
  25. package/templates/base-project/apps/web/src/app/api/users/[id]/route.js +2 -2
  26. package/templates/base-project/apps/web/src/app/api/users/me/route.js +2 -2
  27. package/templates/base-project/apps/web/src/app/api/users/route.js +2 -2
  28. package/templates/base-project/apps/web/src/app/auth/error/page.js +1 -1
  29. package/templates/base-project/apps/web/src/app/auth/forgot-password/page.js +1 -1
  30. package/templates/base-project/apps/web/src/app/auth/register/RegisterPageClient.js +1 -1
  31. package/templates/base-project/apps/web/src/app/auth/signin/SignInPageClient.js +1 -1
  32. package/templates/base-project/apps/web/src/app/layout.js +1 -1
  33. package/templates/base-project/apps/web/src/app/manifest.js +1 -1
  34. package/templates/base-project/apps/web/src/app/page.js +19 -19
  35. package/templates/base-project/apps/web/src/app/robots.js +1 -1
  36. package/templates/base-project/apps/web/src/app/sitemap.js +1 -1
  37. package/templates/base-project/apps/web/src/lib/analytics/umami-replay.js +1 -1
  38. package/templates/base-project/apps/web/src/lib/auth-middleware.js +1 -1
  39. package/templates/base-project/apps/web/src/lib/auth-signup.js +1 -1
  40. package/templates/base-project/apps/web/src/lib/auth.js +2 -2
  41. package/templates/base-project/apps/web/src/lib/jwt.js +1 -1
  42. package/templates/base-project/apps/web/src/lib/proxy-auth.js +1 -1
  43. package/templates/base-project/apps/web/src/lib/seo/site-metadata.js +1 -1
  44. package/templates/base-project/apps/web/src/preflight.js +3 -3
  45. package/templates/base-project/apps/web/src/proxy.js +1 -1
  46. package/templates/base-project/docs/START_HERE.md +2 -2
  47. package/templates/base-project/packages/db/package.json +2 -2
  48. package/templates/base-project/packages/db/src/client.js +3 -3
  49. package/templates/base-project/packages/db/src/umami.js +1 -1
  50. package/templates/base-project/scripts/check-loading.mjs +1 -1
  51. package/templates/base-project/scripts/doctor.js +1 -1
  52. package/templates/base-project/skills/add-endpoint/SKILL.md +1 -1
  53. package/templates/base-project/skills/ecommerce/SKILL.md +2 -2
  54. package/templates/base-project/skills/ecommerce-cart/SKILL.md +3 -3
  55. package/templates/base-project/skills/ecommerce-catalog/SKILL.md +3 -3
  56. package/templates/base-project/skills/ecommerce-checkout/SKILL.md +2 -2
  57. package/templates/base-project/skills/i18n/SKILL.md +6 -6
  58. package/templates/base-project/skills/payment/SKILL.md +8 -8
  59. package/templates/config/package.json +1 -1
  60. package/templates/config/src/app-url.js +1 -1
  61. package/templates/config/src/environment.js +1 -1
  62. package/templates/config/src/load-config.js +2 -2
  63. package/templates/config/src/redis.js +1 -1
  64. package/templates/config/src/validate-env.js +2 -2
  65. package/templates/jobs/README.md +2 -2
  66. package/templates/mobile/lib/errors.ts +1 -1
  67. package/templates/ui/src/theme-constants.js +1 -1
  68. package/templates/worker/README.md +2 -2
  69. package/templates/worker/package.json +4 -4
  70. package/templates/worker/src/handlers/email-job-validation.js +1 -1
  71. package/templates/worker/src/handlers/email.js +5 -5
  72. package/templates/worker/src/handlers/files.js +4 -4
  73. package/templates/worker/src/handlers/index.js +1 -1
  74. package/templates/worker/src/handlers/push-notification.js +3 -3
  75. package/templates/worker/src/index.js +6 -6
  76. package/templates/worker/src/lib/railway.js +2 -2
  77. package/templates/worker/src/lib/tokens.js +1 -1
  78. package/src/dependabot-config.test.js +0 -128
  79. package/src/deploy/adapters/railway.test.js +0 -318
  80. package/src/deploy/deploy.integration.test.js +0 -183
  81. package/src/deploy/deploy.test.js +0 -105
  82. package/src/deploy/discovery.test.js +0 -141
  83. package/src/mobile-template.test.js +0 -232
  84. package/src/prepare-hooks.test.js +0 -535
  85. package/src/scaffold-guards.test.js +0 -140
  86. package/src/scaffold-output.test.js +0 -228
  87. package/src/template-scripts.test.js +0 -160
  88. package/src/utils.test.js +0 -95
  89. package/src/worker-dockerfile.test.js +0 -85
@@ -38,7 +38,7 @@ __QUARK_FEATURE_ROWS__
38
38
  Optional features can be added later with:
39
39
 
40
40
  ```bash
41
- npx @techstream/quark-create-app add <feature>
41
+ npx @usequark/quark-create-app add <feature>
42
42
  ```
43
43
 
44
44
  ### PWA (Optional)
@@ -84,8 +84,8 @@ pnpm clean:check # Review reclaimable build artifacts
84
84
  pnpm clean # Remove local build artifacts
85
85
  pnpm clean:deep # Also remove repo-local temp workspaces
86
86
  QUARK_SKIP_AUTO_CLEAN=1 pnpm dev # Disable dev auto-clean for this run
87
- npx @techstream/quark-create-app update --scaffold-check # Review scaffold-managed drift
88
- npx @techstream/quark-create-app update --scaffold-check --fail-on-drift # CI-friendly drift check
87
+ npx @usequark/quark-create-app update --scaffold-check # Review scaffold-managed drift
88
+ npx @usequark/quark-create-app update --scaffold-check --fail-on-drift # CI-friendly drift check
89
89
  ```
90
90
 
91
91
  ## Launch
@@ -53,13 +53,13 @@ const nextConfig = {
53
53
  // Node built-ins (child_process, net, worker_threads, dns, fs).
54
54
  serverExternalPackages: ["bullmq"],
55
55
 
56
- // Support workspace package resolution (including @techstream/quark-db which uses
56
+ // Support workspace package resolution (including @usequark/quark-db which uses
57
57
  // the Prisma driver-adapter pattern - pure JS, no native engine binary)
58
58
  transpilePackages: [
59
- "@techstream/quark-core",
60
- "@techstream/quark-db",
61
- "@techstream/quark-ui",
62
- "@techstream/quark-jobs",
59
+ "@usequark/quark-core",
60
+ "@usequark/quark-db",
61
+ "@usequark/quark-ui",
62
+ "@usequark/quark-jobs",
63
63
  ],
64
64
 
65
65
  // Security headers
@@ -19,10 +19,10 @@
19
19
  "@aws-sdk/client-s3": "^3.1140.0",
20
20
  "@aws-sdk/s3-request-presigner": "^3.1140.0",
21
21
  "@prisma/client": "^7.10.0",
22
- "@techstream/quark-core": "^2.0.0",
23
- "@techstream/quark-db": "workspace:*",
24
- "@techstream/quark-jobs": "workspace:*",
25
- "@techstream/quark-ui": "workspace:*",
22
+ "@usequark/quark-core": "^2.0.0",
23
+ "@usequark/quark-db": "workspace:*",
24
+ "@usequark/quark-jobs": "workspace:*",
25
+ "@usequark/quark-ui": "workspace:*",
26
26
  "ioredis": "^6.0.0",
27
27
  "jose": "^6.2.12",
28
28
  "next": "16.3.6",
@@ -37,6 +37,6 @@
37
37
  "@tailwindcss/postcss": "^4.3.3",
38
38
  "@types/node": "^26.6.2",
39
39
  "tailwindcss": "^4.3.3",
40
- "@techstream/quark-config": "workspace:*"
40
+ "@usequark/quark-config": "workspace:*"
41
41
  }
42
42
  }
@@ -4,7 +4,7 @@ import {
4
4
  THEME_ATTR,
5
5
  THEME_CHANGE_EVENT,
6
6
  THEME_STORAGE_KEY,
7
- } from "@techstream/quark-ui/theme-constants";
7
+ } from "@usequark/quark-ui/theme-constants";
8
8
  import { useLayoutEffect, useState } from "react";
9
9
 
10
10
  /**
@@ -1,5 +1,5 @@
1
- import { validateBody } from "@techstream/quark-core";
2
- import { user } from "@techstream/quark-db";
1
+ import { validateBody } from "@usequark/quark-core";
2
+ import { user } from "@usequark/quark-db";
3
3
  import { importJWK, jwtVerify } from "jose";
4
4
  import { NextResponse } from "next/server";
5
5
  import { z } from "zod";
@@ -1,5 +1,5 @@
1
- import { validateBody } from "@techstream/quark-core";
2
- import { user } from "@techstream/quark-db";
1
+ import { validateBody } from "@usequark/quark-core";
2
+ import { user } from "@usequark/quark-db";
3
3
  import { NextResponse } from "next/server";
4
4
  import { z } from "zod";
5
5
  import { issueTokenPair } from "../../../../lib/jwt";
@@ -1,4 +1,4 @@
1
- import { createLogger, validateBody } from "@techstream/quark-core";
1
+ import { createLogger, validateBody } from "@usequark/quark-core";
2
2
  import { NextResponse } from "next/server";
3
3
  import { z } from "zod";
4
4
  import { issueTokenPair, verifyMobileToken } from "../../../../lib/jwt";
@@ -3,9 +3,9 @@ import {
3
3
  hashPassword,
4
4
  validateBody,
5
5
  withCsrfProtection,
6
- } from "@techstream/quark-core";
7
- import { user, userRegisterSchema } from "@techstream/quark-db";
8
- import { JOB_NAMES, JOB_QUEUES } from "@techstream/quark-jobs";
6
+ } from "@usequark/quark-core";
7
+ import { user, userRegisterSchema } from "@usequark/quark-db";
8
+ import { JOB_NAMES, JOB_QUEUES } from "@usequark/quark-jobs";
9
9
  import { NextResponse } from "next/server";
10
10
  import { isSignupEnabled } from "@/lib/auth-signup";
11
11
  import { handleError } from "../../error-handler";
@@ -1,5 +1,5 @@
1
- import { validateBody, verifyPassword } from "@techstream/quark-core";
2
- import { user } from "@techstream/quark-db";
1
+ import { validateBody, verifyPassword } from "@usequark/quark-core";
2
+ import { user } from "@usequark/quark-db";
3
3
  import { NextResponse } from "next/server";
4
4
  import { z } from "zod";
5
5
  import { issueTokenPair } from "../../../../lib/jwt";
@@ -4,7 +4,7 @@
4
4
  * and returns it to the client for inclusion in request headers.
5
5
  */
6
6
 
7
- import { generateCsrfToken } from "@techstream/quark-core";
7
+ import { generateCsrfToken } from "@usequark/quark-core";
8
8
  import { NextResponse } from "next/server";
9
9
  import { auth } from "@/lib/auth";
10
10
  import { getCsrfCookieOptions } from "@/lib/csrf-cookie";
@@ -1,5 +1,5 @@
1
- import { validateBody } from "@techstream/quark-core";
2
- import { prisma } from "@techstream/quark-db";
1
+ import { validateBody } from "@usequark/quark-core";
2
+ import { prisma } from "@usequark/quark-db";
3
3
  import { NextResponse } from "next/server";
4
4
  import { z } from "zod";
5
5
  import { extractBearerPayload } from "../../../../lib/jwt";
@@ -1,4 +1,4 @@
1
- import { AppError, createLogger } from "@techstream/quark-core";
1
+ import { AppError, createLogger } from "@usequark/quark-core";
2
2
  import { NextResponse } from "next/server";
3
3
 
4
4
  const logger = createLogger("api");
@@ -9,8 +9,8 @@ import {
9
9
  ForbiddenError,
10
10
  NotFoundError,
11
11
  withCsrfProtection,
12
- } from "@techstream/quark-core";
13
- import { file } from "@techstream/quark-db";
12
+ } from "@usequark/quark-core";
13
+ import { file } from "@usequark/quark-db";
14
14
  import { NextResponse } from "next/server";
15
15
  import { requireAuth } from "@/lib/auth-middleware";
16
16
  import { handleError } from "../../error-handler";
@@ -11,8 +11,8 @@ import {
11
11
  parsePaginationQuery,
12
12
  validateFile,
13
13
  withCsrfProtection,
14
- } from "@techstream/quark-core";
15
- import { file } from "@techstream/quark-db";
14
+ } from "@usequark/quark-core";
15
+ import { file } from "@usequark/quark-db";
16
16
  import { NextResponse } from "next/server";
17
17
  import { requireAuth } from "@/lib/auth-middleware";
18
18
  import { handleError } from "../error-handler";
@@ -9,8 +9,8 @@ import {
9
9
  createStorage,
10
10
  getRegisteredQueues,
11
11
  pingRedis,
12
- } from "@techstream/quark-core";
13
- import { pingDatabase } from "@techstream/quark-db";
12
+ } from "@usequark/quark-core";
13
+ import { pingDatabase } from "@usequark/quark-db";
14
14
  import { NextResponse } from "next/server";
15
15
 
16
16
  const logger = createLogger("health");
@@ -1,5 +1,5 @@
1
- import { validateBody, withCsrfProtection } from "@techstream/quark-core";
2
- import { user, userUpdateSchema } from "@techstream/quark-db";
1
+ import { validateBody, withCsrfProtection } from "@usequark/quark-core";
2
+ import { user, userUpdateSchema } from "@usequark/quark-db";
3
3
  import { NextResponse } from "next/server";
4
4
  import { requireRole } from "@/lib/auth-middleware";
5
5
  import { handleError } from "../../error-handler";
@@ -1,5 +1,5 @@
1
- import { validateBody, withCsrfProtection } from "@techstream/quark-core";
2
- import { user, userUpdateSchema } from "@techstream/quark-db";
1
+ import { validateBody, withCsrfProtection } from "@usequark/quark-core";
2
+ import { user, userUpdateSchema } from "@usequark/quark-db";
3
3
  import { NextResponse } from "next/server";
4
4
  import { extractBearerPayload } from "../../../../lib/jwt";
5
5
  import { handleError } from "../../error-handler";
@@ -2,8 +2,8 @@ import {
2
2
  parsePaginationQuery,
3
3
  validateBody,
4
4
  withCsrfProtection,
5
- } from "@techstream/quark-core";
6
- import { user, userCreateSchema } from "@techstream/quark-db";
5
+ } from "@usequark/quark-core";
6
+ import { user, userCreateSchema } from "@usequark/quark-db";
7
7
  import { NextResponse } from "next/server";
8
8
  import { requireRole } from "@/lib/auth-middleware";
9
9
  import { handleError } from "../error-handler";
@@ -1,4 +1,4 @@
1
- import { QuarkLogo } from "@techstream/quark-ui";
1
+ import { QuarkLogo } from "@usequark/quark-ui";
2
2
  import Link from "next/link";
3
3
 
4
4
  export const metadata = {
@@ -1,4 +1,4 @@
1
- import { QuarkLogo } from "@techstream/quark-ui";
1
+ import { QuarkLogo } from "@usequark/quark-ui";
2
2
  import Link from "next/link";
3
3
 
4
4
  export const metadata = {
@@ -7,7 +7,7 @@ import {
7
7
  Label,
8
8
  PasswordInput,
9
9
  QuarkLogo,
10
- } from "@techstream/quark-ui";
10
+ } from "@usequark/quark-ui";
11
11
  import Link from "next/link";
12
12
  import { useSearchParams } from "next/navigation";
13
13
  import { signIn } from "next-auth/react";
@@ -7,7 +7,7 @@ import {
7
7
  Label,
8
8
  PasswordInput,
9
9
  QuarkLogo,
10
- } from "@techstream/quark-ui";
10
+ } from "@usequark/quark-ui";
11
11
  import Link from "next/link";
12
12
  import { useSearchParams } from "next/navigation";
13
13
  import { signIn } from "next-auth/react";
@@ -2,7 +2,7 @@ import "./globals.css";
2
2
  import {
3
3
  THEME_ATTR,
4
4
  THEME_STORAGE_KEY,
5
- } from "@techstream/quark-ui/theme-constants";
5
+ } from "@usequark/quark-ui/theme-constants";
6
6
  import { buildUmamiBeforeSendScript } from "../lib/analytics/umami-before-send.js";
7
7
  import { getUmamiConfig } from "../lib/analytics/umami-config.js";
8
8
  import { getSiteMetadata } from "../lib/seo/site-metadata.js";
@@ -1,4 +1,4 @@
1
- import { config, getAppUrl } from "@techstream/quark-config";
1
+ import { config, getAppUrl } from "@usequark/quark-config";
2
2
 
3
3
  export default function manifest() {
4
4
  return {
@@ -8,7 +8,7 @@ const PANELS = [
8
8
  title: "Need a landing page?",
9
9
  description:
10
10
  "Build a high-converting landing page with a hero section, social proof, and lead capture",
11
- prompt: `You are a senior full-stack engineer building a production-ready landing page for a local business using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod validation, Biome linting). The app runs on Railway with PostgreSQL and Redis. ESM only, no TypeScript, no console.log in app code — use createLogger from @techstream/quark-core. No throw new Error — use AppError/ValidationError. All Server Actions must validate with Zod. Every Prisma model needs createdAt and updatedAt. Import UI from @techstream/quark-ui, never deep-import.
11
+ prompt: `You are a senior full-stack engineer building a production-ready landing page for a local business using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod validation, Biome linting). The app runs on Railway with PostgreSQL and Redis. ESM only, no TypeScript, no console.log in app code — use createLogger from @usequark/quark-core. No throw new Error — use AppError/ValidationError. All Server Actions must validate with Zod. Every Prisma model needs createdAt and updatedAt. Import UI from @usequark/quark-ui, never deep-import.
12
12
 
13
13
  Goal: Build an SEO-optimised landing page for a local business (e.g., plumber, restaurant, salon).
14
14
 
@@ -16,13 +16,13 @@ Ask the user: What is the business name and type? What services do they offer? D
16
16
 
17
17
  Build: Hero section with business name and tagline, services list, testimonials carousel, contact form with server-side Zod validation, SEO metadata (title, description, OG tags), responsive layout. Add a ContactInquiry Prisma model for form submissions with status tracking.
18
18
 
19
- Patterns to follow: Use AppError/ValidationError for error handling, prisma from @techstream/quark-db, validateBody with Zod, withCsrfProtection on POST routes.`,
19
+ Patterns to follow: Use AppError/ValidationError for error handling, prisma from @usequark/quark-db, validateBody with Zod, withCsrfProtection on POST routes.`,
20
20
  },
21
21
  {
22
22
  title: "Want a dashboard?",
23
23
  description:
24
24
  "Create an interactive analytics portal with live charts, auth, and customizable metrics",
25
- prompt: `You are a senior full-stack engineer building a management dashboard using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use createLogger from @techstream/quark-core for logging, AppError/ValidationError for errors. All Server Actions validate with Zod. Import UI from @techstream/quark-ui.
25
+ prompt: `You are a senior full-stack engineer building a management dashboard using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use createLogger from @usequark/quark-core for logging, AppError/ValidationError for errors. All Server Actions validate with Zod. Import UI from @usequark/quark-ui.
26
26
 
27
27
  Goal: Build an SEO performance dashboard where users can track site metrics, keyword rankings, and crawl health.
28
28
 
@@ -36,7 +36,7 @@ Patterns to follow: Use requireAuth() for protected routes, prisma queries with
36
36
  title: "Building a SaaS?",
37
37
  description:
38
38
  "Ship a multi-tenant SaaS foundation with subscription billing, team seats, and background jobs",
39
- prompt: `You are a senior full-stack engineer building a multi-tenant SaaS application using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod required on all Server Actions. Import UI from @techstream/quark-ui.
39
+ prompt: `You are a senior full-stack engineer building a multi-tenant SaaS application using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod required on all Server Actions. Import UI from @usequark/quark-ui.
40
40
 
41
41
  Goal: Build a SaaS platform with user auth, team workspaces, Stripe subscription billing, and background job processing.
42
42
 
@@ -50,7 +50,7 @@ Patterns to follow: Use Workspace-scoped queries (filter by workspaceId), requir
50
50
  title: "Running a store?",
51
51
  description:
52
52
  "Launch an e-commerce store with a searchable catalog, shopping cart, and Stripe checkout",
53
- prompt: `You are a senior full-stack engineer building an e-commerce storefront using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
53
+ prompt: `You are a senior full-stack engineer building an e-commerce storefront using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
54
54
 
55
55
  Goal: Build a product catalog with shopping cart, Stripe checkout, and order management.
56
56
 
@@ -64,7 +64,7 @@ Patterns to follow: Use Decimal for prices, cascade deletes for owned relationsh
64
64
  title: "Publishing content?",
65
65
  description:
66
66
  "Start a modern blog engine with MDX posts, category tags, instant search, and RSS",
67
- prompt: `You are a senior full-stack engineer building a content platform using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
67
+ prompt: `You are a senior full-stack engineer building a content platform using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
68
68
 
69
69
  Goal: Build a blog with MDX support, tag filtering, syntax highlighting, and an RSS feed.
70
70
 
@@ -78,7 +78,7 @@ Patterns to follow: Use Post model with published Boolean, include author relati
78
78
  title: "Need a booking system?",
79
79
  description:
80
80
  "Set up automated scheduling with calendar sync, client availability, and event reminders",
81
- prompt: `You are a senior full-stack engineer building a booking system using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for notifications. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
81
+ prompt: `You are a senior full-stack engineer building a booking system using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for notifications. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
82
82
 
83
83
  Goal: Build an appointment booking system with service listings, calendar availability, and email notifications.
84
84
 
@@ -92,21 +92,21 @@ Patterns to follow: Use DateTime fields for scheduling, unique constraints to pr
92
92
  title: "Building a portfolio?",
93
93
  description:
94
94
  "Showcase your work with a developer portfolio, project highlights, and a contact form",
95
- prompt: `You are a senior full-stack engineer building a developer portfolio using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
95
+ prompt: `You are a senior full-stack engineer building a developer portfolio using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
96
96
 
97
97
  Goal: Build a personal developer portfolio with project showcase, case study pages, and a contact form.
98
98
 
99
99
  Ask the user: What is the developer's name and tagline? What projects should be featured (give 3-5 examples with descriptions, tech stacks, and links)? Do they need a blog section? What social links (GitHub, LinkedIn, Twitter)? Should the theme toggle between dark and light?
100
100
 
101
- Build: Project and Skill Prisma models, home page with hero + featured projects grid, individual project pages with description, tech stack badges, and live/repo links, about page with skills and experience, contact form with Zod validation, dark/light theme toggle (use ThemeProvider from @techstream/quark-ui), responsive design.
101
+ Build: Project and Skill Prisma models, home page with hero + featured projects grid, individual project pages with description, tech stack badges, and live/repo links, about page with skills and experience, contact form with Zod validation, dark/light theme toggle (use ThemeProvider from @usequark/quark-ui), responsive design.
102
102
 
103
- Patterns to follow: Use Card components from @techstream/quark-ui, Badge for tech stack, contact form with ContactInquiry model, SEO metadata per page.`,
103
+ Patterns to follow: Use Card components from @usequark/quark-ui, Badge for tech stack, contact form with ContactInquiry model, SEO metadata per page.`,
104
104
  },
105
105
  {
106
106
  title: "Need an admin panel?",
107
107
  description:
108
108
  "Manage your app with an internal admin portal featuring CRUD workflows, roles, and audit logs",
109
- prompt: `You are a senior full-stack engineer building an admin panel using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
109
+ prompt: `You are a senior full-stack engineer building an admin panel using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
110
110
 
111
111
  Goal: Build an internal admin dashboard with role-based access, data tables, and audit logging.
112
112
 
@@ -120,7 +120,7 @@ Patterns to follow: Use adminConfig.modelOverrides for model customization, repl
120
120
  title: "Building a real-time app?",
121
121
  description:
122
122
  "Go live with real-time collaboration using WebSockets, presence indicators, and state sync",
123
- prompt: `You are a senior full-stack engineer building a real-time collaborative app using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis (for pub/sub and presence), BullMQ for background processing. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
123
+ prompt: `You are a senior full-stack engineer building a real-time collaborative app using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis (for pub/sub and presence), BullMQ for background processing. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
124
124
 
125
125
  Goal: Build a real-time collaborative application with live updates, user presence, and persistent state.
126
126
 
@@ -134,7 +134,7 @@ Patterns to follow: Use Redis for real-time pub/sub, BullMQ for debounced persis
134
134
  title: "Integrating AI features?",
135
135
  description:
136
136
  "Add AI capabilities with streaming responses, prompt templates, vector search, and token tracking",
137
- prompt: `You are a senior full-stack engineer building AI-powered features using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background processing. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
137
+ prompt: `You are a senior full-stack engineer building AI-powered features using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background processing. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
138
138
 
139
139
  Goal: Add AI capabilities to an existing Quark application — streaming chat, prompt management, vector search, and usage tracking.
140
140
 
@@ -148,7 +148,7 @@ Patterns to follow: Use Server-Sent Events for streaming, Prisma for conversatio
148
148
  title: "Building a community?",
149
149
  description:
150
150
  "Launch a discussion forum with user profiles, nested comments, upvoting, and moderation",
151
- prompt: `You are a senior full-stack engineer building a community platform using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
151
+ prompt: `You are a senior full-stack engineer building a community platform using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
152
152
 
153
153
  Goal: Build a discussion forum with user-generated content, threading, voting, and moderation tools.
154
154
 
@@ -162,7 +162,7 @@ Patterns to follow: Use nested set or parent relation for comment threading, opt
162
162
  title: "Creating an API?",
163
163
  description:
164
164
  "Build a scalable REST or GraphQL API with rate limiting, OpenAPI docs, and secure auth",
165
- prompt: `You are a senior full-stack engineer building an API layer using Quark (Next.js 16, App Router, Route Handlers, Prisma, Zod, Biome). Stack: PostgreSQL, Redis for rate limiting and caching. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all API routes. Import UI from @techstream/quark-ui where needed.
165
+ prompt: `You are a senior full-stack engineer building an API layer using Quark (Next.js 16, App Router, Route Handlers, Prisma, Zod, Biome). Stack: PostgreSQL, Redis for rate limiting and caching. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all API routes. Import UI from @usequark/quark-ui where needed.
166
166
 
167
167
  Goal: Build a well-documented, secure API with authentication, rate limiting, and OpenAPI specification.
168
168
 
@@ -176,7 +176,7 @@ Patterns to follow: Use Next.js Route Handlers for REST endpoints, Redis INCR wi
176
176
  title: "Need a marketplace?",
177
177
  description:
178
178
  "Connect buyers and sellers with vendor onboarding, split payments, and search filters",
179
- prompt: `You are a senior full-stack engineer building a marketplace platform using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
179
+ prompt: `You are a senior full-stack engineer building a marketplace platform using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
180
180
 
181
181
  Goal: Build a two-sided marketplace connecting buyers and sellers with vendor management and payment splitting.
182
182
 
@@ -190,7 +190,7 @@ Patterns to follow: Use Stripe Connect for marketplace payments, full-text searc
190
190
  title: "Building a mobile app?",
191
191
  description:
192
192
  "Kickstart a cross-platform mobile app with native navigation, offline storage, and push alerts",
193
- prompt: `You are a senior full-stack engineer building a mobile app backend and web companion using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
193
+ prompt: `You are a senior full-stack engineer building a mobile app backend and web companion using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL, Redis, BullMQ for background jobs. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
194
194
 
195
195
  Goal: Build the backend API and data layer for a cross-platform mobile app, with a responsive web companion.
196
196
 
@@ -204,7 +204,7 @@ Patterns to follow: Use JWT for mobile auth (separate from NextAuth web session)
204
204
  title: "Setting up docs?",
205
205
  description:
206
206
  "Publish developer documentation with full-text search, code blocks, and version switching",
207
- prompt: `You are a senior full-stack engineer building a documentation site using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @techstream/quark-ui, Zod, Biome). Stack: PostgreSQL for search indexing. ESM only, no TypeScript. Use AppError/ValidationError from @techstream/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @techstream/quark-ui.
207
+ prompt: `You are a senior full-stack engineer building a documentation site using Quark (Next.js 16, App Router, Server Actions, Prisma, Tailwind via @usequark/quark-ui, Zod, Biome). Stack: PostgreSQL for search indexing. ESM only, no TypeScript. Use AppError/ValidationError from @usequark/quark-core/errors, createLogger for logging. Zod on all Server Actions. Import UI from @usequark/quark-ui.
208
208
 
209
209
  Goal: Build a developer documentation site with search, code examples, and version management.
210
210
 
@@ -235,7 +235,7 @@ export default function Home() {
235
235
  </a>
236
236
  <span className="quark-home-sep">·</span>
237
237
  <a
238
- href="https://www.npmjs.com/package/@techstream/quark-create-app"
238
+ href="https://www.npmjs.com/package/@usequark/quark-create-app"
239
239
  target="_blank"
240
240
  rel="noopener noreferrer"
241
241
  className="quark-home-link"
@@ -1,4 +1,4 @@
1
- import { getAppUrl } from "@techstream/quark-config";
1
+ import { getAppUrl } from "@usequark/quark-config";
2
2
  import { isWebsiteIndexable } from "../lib/seo/indexing.js";
3
3
 
4
4
  export const revalidate = 3600;
@@ -1,4 +1,4 @@
1
- import { getAppUrl } from "@techstream/quark-config";
1
+ import { getAppUrl } from "@usequark/quark-config";
2
2
  import { STATIC_SITEMAP_ROUTES, buildSitemapEntries } from "../lib/sitemap-entries.js";
3
3
  import { isWebsiteIndexable } from "../lib/seo/indexing.js";
4
4
 
@@ -1,4 +1,4 @@
1
- import { createLogger } from "@techstream/quark-core/logger";
1
+ import { createLogger } from "@usequark/quark-core/logger";
2
2
  import { getUmamiConfig, normalizeUmamiUrl } from "./umami-config.js";
3
3
 
4
4
  const log = createLogger("umami-replay");
@@ -1,4 +1,4 @@
1
- import { ForbiddenError, UnauthorizedError } from "@techstream/quark-core";
1
+ import { ForbiddenError, UnauthorizedError } from "@usequark/quark-core";
2
2
  import { auth } from "./auth";
3
3
 
4
4
  const UNAUTHENTICATED = "You must be logged in to access this resource";
@@ -1,4 +1,4 @@
1
- import { loadConfig } from "@techstream/quark-config";
1
+ import { loadConfig } from "@usequark/quark-config";
2
2
 
3
3
  export function isSignupEnabled() {
4
4
  return loadConfig().auth.allowSignup;
@@ -3,8 +3,8 @@ import {
3
3
  createAuthConfig,
4
4
  createLogger,
5
5
  verifyPassword,
6
- } from "@techstream/quark-core";
7
- import { Prisma, prisma, user } from "@techstream/quark-db";
6
+ } from "@usequark/quark-core";
7
+ import { Prisma, prisma, user } from "@usequark/quark-db";
8
8
  import NextAuth from "next-auth";
9
9
  import CredentialsProvider from "next-auth/providers/credentials";
10
10
  import GithubProvider from "next-auth/providers/github";
@@ -1,4 +1,4 @@
1
- import { AppError, getAuthSecret } from "@techstream/quark-core";
1
+ import { AppError, getAuthSecret } from "@usequark/quark-core";
2
2
  import { jwtVerify, SignJWT } from "jose";
3
3
 
4
4
  const ISSUER = "quark-mobile";
@@ -1,4 +1,4 @@
1
- import { getAuthSecret } from "@techstream/quark-core/auth";
1
+ import { getAuthSecret } from "@usequark/quark-core/auth";
2
2
  import { getToken } from "next-auth/jwt";
3
3
 
4
4
  const STRICT_AUTH_RATE_LIMIT_ROUTES = new Set([
@@ -1,4 +1,4 @@
1
- import { config, getAppUrl } from "@techstream/quark-config";
1
+ import { config, getAppUrl } from "@usequark/quark-config";
2
2
  import { getMetadataRobots } from "./indexing.js";
3
3
 
4
4
  export function getSiteMetadata() {
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import { loadConfig } from "@techstream/quark-config";
4
- import { createLogger } from "@techstream/quark-core";
5
- import { pingDatabase } from "@techstream/quark-db";
3
+ import { loadConfig } from "@usequark/quark-config";
4
+ import { createLogger } from "@usequark/quark-core";
5
+ import { pingDatabase } from "@usequark/quark-db";
6
6
 
7
7
  const logger = createLogger("web-preflight");
8
8
 
@@ -8,7 +8,7 @@
8
8
  * 2. Rate limiting, CORS, security headers for all API routes.
9
9
  */
10
10
 
11
- import { getAllowedOrigins } from "@techstream/quark-config/app-url";
11
+ import { getAllowedOrigins } from "@usequark/quark-config/app-url";
12
12
  import { NextResponse } from "next/server";
13
13
 
14
14
  import { buildContentSecurityPolicy } from "./lib/analytics/umami-csp.js";
@@ -48,13 +48,13 @@ That is the fastest way to move from "starter" to "product code."
48
48
  Before taking Quark infrastructure updates, review scaffold-managed drift from the project root:
49
49
 
50
50
  ```bash
51
- npx @techstream/quark-create-app update --scaffold-check
51
+ npx @usequark/quark-create-app update --scaffold-check
52
52
  ```
53
53
 
54
54
  If you want CI to fail when scaffold-managed files drift, use:
55
55
 
56
56
  ```bash
57
- npx @techstream/quark-create-app update --scaffold-check --fail-on-drift
57
+ npx @usequark/quark-create-app update --scaffold-check --fail-on-drift
58
58
  ```
59
59
 
60
60
  ## Recover disk space
@@ -24,14 +24,14 @@
24
24
  "packageManager": "pnpm@10.12.1",
25
25
  "devDependencies": {
26
26
  "@faker-js/faker": "^10.6.0",
27
- "@techstream/quark-config": "workspace:*",
27
+ "@usequark/quark-config": "workspace:*",
28
28
  "bcryptjs": "^3.0.3",
29
29
  "prisma": "^7.10.0"
30
30
  },
31
31
  "dependencies": {
32
32
  "@prisma/adapter-pg": "^7.10.0",
33
33
  "@prisma/client": "^7.10.0",
34
- "@techstream/quark-core": "^2.0.0",
34
+ "@usequark/quark-core": "^2.0.0",
35
35
  "pg": "^8.23.0",
36
36
  "zod": "^4.6.5"
37
37
  }
@@ -38,12 +38,12 @@ function getPrismaClient() {
38
38
  // Assign base client immediately so the proxy never blocks.
39
39
  globalForPrisma.__prisma = baseClient;
40
40
 
41
- // Apply optional query instrumentation extension from @techstream/quark-core.
41
+ // Apply optional query instrumentation extension from @usequark/quark-core.
42
42
  // Loaded asynchronously — the base client is used in the meantime, then
43
43
  // upgraded in-place once the extension module arrives.
44
44
  // The extension handles slow-query logging, argument masking, and Prometheus
45
45
  // metrics. It is schema-agnostic and respects the DB_INSTRUMENTATION env var.
46
- import("@techstream/quark-core")
46
+ import("@usequark/quark-core")
47
47
  .then(({ createDbInstrumentation }) => {
48
48
  const ext = createDbInstrumentation();
49
49
  if (ext) {
@@ -51,7 +51,7 @@ function getPrismaClient() {
51
51
  }
52
52
  })
53
53
  .catch(() => {
54
- // @techstream/quark-core not available or old version — base client remains.
54
+ // @usequark/quark-core not available or old version — base client remains.
55
55
  });
56
56
  }
57
57
  return globalForPrisma.__prisma;
@@ -4,7 +4,7 @@
4
4
  * No API key needed — we connect to the same DB Umami uses.
5
5
  */
6
6
 
7
- import { createLogger } from "@techstream/quark-core";
7
+ import { createLogger } from "@usequark/quark-core";
8
8
 
9
9
  const log = createLogger("lib:umami-db");
10
10