@polymorphism-tech/morph-spec 7.0.0 → 7.1.0
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.
- package/README.md +367 -367
- package/framework/agents.json +132 -127
- package/framework/rubrics/backend.json +41 -36
- package/framework/rules/ai-agents-standards.md +45 -15
- package/framework/rules/neon-standards.md +25 -26
- package/framework/standards/STANDARDS.json +1729 -1133
- package/framework/standards/ai-agents/agent-session.md +160 -0
- package/framework/standards/ai-agents/batching.md +193 -0
- package/framework/standards/ai-agents/context-providers.md +188 -0
- package/framework/standards/ai-agents/mcp-server.md +250 -0
- package/framework/standards/ai-agents/mcp-tools.md +197 -0
- package/framework/standards/ai-agents/middleware-patterns.md +207 -0
- package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
- package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
- package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
- package/framework/standards/ai-agents/modalities-vision.md +201 -0
- package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
- package/framework/standards/ai-agents/production.md +114 -258
- package/framework/standards/ai-agents/prompts-in-db.md +214 -0
- package/framework/standards/ai-agents/providers/model-registry.md +158 -0
- package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
- package/framework/standards/ai-agents/service-tier-flex.md +135 -0
- package/framework/standards/ai-agents/setup.md +142 -316
- package/framework/standards/ai-agents/structured-output.md +249 -0
- package/framework/standards/ai-agents/sweet-spot.md +109 -0
- package/framework/standards/ai-agents/workflows.md +114 -284
- package/framework/standards/architecture/vertical-slice/vertical-slice.md +433 -429
- package/framework/standards/backend/api/validation.md +92 -88
- package/framework/standards/backend/database/postgresql/database.md +336 -332
- package/framework/standards/backend/database/vector-search-rag.md +599 -541
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
- package/framework/standards/backend/dotnet/result-pattern.md +4 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
- package/framework/standards/backend/dotnet/scrutor.md +4 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +278 -274
- package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
- package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
- package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
- package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
- package/framework/standards/data/nosql/cache/redis.md +106 -97
- package/framework/standards/data/nosql/cosmos-db.md +127 -118
- package/framework/standards/data/vector-search/rag-chunking.md +113 -104
- package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
- package/framework/standards/frontend/design-system/animations.md +164 -160
- package/framework/standards/frontend/design-system/naming.md +68 -64
- package/framework/standards/frontend/gsap/gsap-core.md +14 -8
- package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
- package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
- package/framework/standards/frontend/nextjs/app-router.md +127 -123
- package/framework/standards/frontend/nextjs/components.md +136 -132
- package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
- package/framework/standards/frontend/nextjs/forms.md +134 -128
- package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
- package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
- package/framework/standards/frontend/nextjs/project-structure.md +106 -102
- package/framework/standards/frontend/nextjs/state-management.md +76 -72
- package/framework/standards/frontend/nextjs/testing.md +115 -111
- package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
- package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
- package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
- package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
- package/framework/standards/integration/mcp/mcp-tools.md +471 -462
- package/framework/templates/REGISTRY.json +1745 -1239
- package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
- package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
- package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
- package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
- package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
- package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
- package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
- package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
- package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
- package/package.json +89 -83
- package/src/core/templates/template-registry.js +289 -256
- package/src/lib/generators/context-generator.js +516 -518
- package/src/lib/generators/scaffold-generator.js +23 -26
- package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
- package/framework/templates/integrations/semantic-kernel-neon.cs +0 -125
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
> **Keywords:** neon auth, better auth, authentication, nextjs, user management, session, JWT
|
|
6
6
|
> **Load When:** neon auth or authentication keywords detected
|
|
7
7
|
|
|
8
|
+
**Verified against:** Neon Auth — @neondatabase/auth + @neondatabase/auth-ui (Better Auth). Last-verified: 2026-05-20.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
8
12
|
Managed authentication powered by Better Auth, with all auth data stored directly in your Neon database (`neon_auth` schema). No external auth providers, no webhooks, no sync delays.
|
|
9
13
|
|
|
10
14
|
---
|
|
@@ -37,15 +41,23 @@ Neon Auth provides:
|
|
|
37
41
|
### Install Packages
|
|
38
42
|
|
|
39
43
|
```bash
|
|
40
|
-
|
|
44
|
+
# Core auth + UI components are separate packages
|
|
45
|
+
npm install @neondatabase/auth@latest @neondatabase/auth-ui @neondatabase/serverless
|
|
41
46
|
```
|
|
42
47
|
|
|
48
|
+
> The UI components (`AuthView`, `UserButton`, `SignedIn`, `SignedOut`,
|
|
49
|
+
> `RedirectToSignIn`) live in `@neondatabase/auth-ui`, not in the core
|
|
50
|
+
> `@neondatabase/auth` package. The legacy `@stackframe/stack` packages and
|
|
51
|
+
> `@neondatabase/neon-auth-next` are deprecated — do not install them.
|
|
52
|
+
|
|
43
53
|
### Environment Variables
|
|
44
54
|
|
|
45
55
|
```bash
|
|
46
56
|
# .env.local
|
|
47
57
|
NEON_AUTH_BASE_URL=https://ep-xxx.neonauth.us-east-2.aws.neon.build/neondb/auth
|
|
48
58
|
NEON_AUTH_COOKIE_SECRET=your-secret-at-least-32-characters-long
|
|
59
|
+
# Public auth URL consumed by the browser auth client
|
|
60
|
+
NEXT_PUBLIC_AUTH_URL=https://ep-xxx.neonauth.us-east-2.aws.neon.build/neondb/auth
|
|
49
61
|
```
|
|
50
62
|
|
|
51
63
|
Generate cookie secret:
|
|
@@ -59,7 +71,10 @@ openssl rand -base64 32
|
|
|
59
71
|
// lib/auth/client.ts
|
|
60
72
|
'use client';
|
|
61
73
|
import { createAuthClient } from '@neondatabase/auth/next';
|
|
62
|
-
|
|
74
|
+
// createAuthClient takes the public auth URL as a positional argument
|
|
75
|
+
export const authClient = createAuthClient(process.env.NEXT_PUBLIC_AUTH_URL!);
|
|
76
|
+
// Re-export the React hooks from the client instance for ergonomic imports
|
|
77
|
+
export const { useSession } = authClient;
|
|
63
78
|
|
|
64
79
|
// lib/auth/server.ts
|
|
65
80
|
import { createNeonAuth } from '@neondatabase/auth/next/server';
|
|
@@ -73,25 +88,21 @@ export const auth = createNeonAuth({
|
|
|
73
88
|
|
|
74
89
|
### Root Layout Provider
|
|
75
90
|
|
|
91
|
+
Import the Tailwind styles for the UI components in `globals.css`:
|
|
92
|
+
|
|
93
|
+
```css
|
|
94
|
+
@import '@neondatabase/auth-ui/tailwind';
|
|
95
|
+
```
|
|
96
|
+
|
|
76
97
|
```tsx
|
|
77
98
|
// app/providers.tsx
|
|
78
99
|
'use client';
|
|
79
|
-
import { NeonAuthUIProvider } from '@neondatabase/auth
|
|
80
|
-
import '@neondatabase/auth/ui/css';
|
|
81
|
-
import Link from 'next/link';
|
|
82
|
-
import { useRouter } from 'next/navigation';
|
|
100
|
+
import { NeonAuthUIProvider } from '@neondatabase/auth-ui';
|
|
83
101
|
import { authClient } from '@/lib/auth/client';
|
|
84
102
|
|
|
85
103
|
export function Providers({ children }: { children: React.ReactNode }) {
|
|
86
|
-
const router = useRouter();
|
|
87
104
|
return (
|
|
88
|
-
<NeonAuthUIProvider
|
|
89
|
-
authClient={authClient}
|
|
90
|
-
navigate={router.push}
|
|
91
|
-
replace={router.replace}
|
|
92
|
-
onSessionChange={router.refresh}
|
|
93
|
-
Link={Link}
|
|
94
|
-
>
|
|
105
|
+
<NeonAuthUIProvider authClient={authClient}>
|
|
95
106
|
{children}
|
|
96
107
|
</NeonAuthUIProvider>
|
|
97
108
|
);
|
|
@@ -115,23 +126,23 @@ export const { GET, POST } = auth.handler();
|
|
|
115
126
|
|
|
116
127
|
```tsx
|
|
117
128
|
// app/auth/sign-in/page.tsx
|
|
118
|
-
import { AuthView } from '@neondatabase/auth
|
|
129
|
+
import { AuthView } from '@neondatabase/auth-ui';
|
|
119
130
|
|
|
120
131
|
export default function SignInPage() {
|
|
121
132
|
return (
|
|
122
133
|
<div className="flex items-center justify-center min-h-screen">
|
|
123
|
-
<AuthView
|
|
134
|
+
<AuthView path="sign-in" />
|
|
124
135
|
</div>
|
|
125
136
|
);
|
|
126
137
|
}
|
|
127
138
|
|
|
128
139
|
// app/auth/sign-up/page.tsx
|
|
129
|
-
import { AuthView } from '@neondatabase/auth
|
|
140
|
+
import { AuthView } from '@neondatabase/auth-ui';
|
|
130
141
|
|
|
131
142
|
export default function SignUpPage() {
|
|
132
143
|
return (
|
|
133
144
|
<div className="flex items-center justify-center min-h-screen">
|
|
134
|
-
<AuthView
|
|
145
|
+
<AuthView path="sign-up" />
|
|
135
146
|
</div>
|
|
136
147
|
);
|
|
137
148
|
}
|
|
@@ -200,7 +211,7 @@ export const config = {
|
|
|
200
211
|
### Component-Level Protection
|
|
201
212
|
|
|
202
213
|
```tsx
|
|
203
|
-
import { SignedIn, RedirectToSignIn } from '@neondatabase/auth
|
|
214
|
+
import { SignedIn, RedirectToSignIn } from '@neondatabase/auth-ui';
|
|
204
215
|
|
|
205
216
|
export default function ProtectedPage() {
|
|
206
217
|
return (
|