{"id":29430243,"url":"https://github.com/codelander07/ai-powered-learning-management-app","last_synced_at":"2025-07-12T17:05:27.831Z","repository":{"id":303577988,"uuid":"1015459283","full_name":"CodeLander07/AI-Powered-Learning-Management-App","owner":"CodeLander07","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-08T10:31:54.000Z","size":1262,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-08T10:45:59.258Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodeLander07.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-07T14:30:48.000Z","updated_at":"2025-07-08T10:31:57.000Z","dependencies_parsed_at":"2025-07-08T10:56:13.502Z","dependency_job_id":null,"html_url":"https://github.com/CodeLander07/AI-Powered-Learning-Management-App","commit_stats":null,"previous_names":["codelander07/ai-powered-learning-management-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CodeLander07/AI-Powered-Learning-Management-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeLander07%2FAI-Powered-Learning-Management-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeLander07%2FAI-Powered-Learning-Management-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeLander07%2FAI-Powered-Learning-Management-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeLander07%2FAI-Powered-Learning-Management-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeLander07","download_url":"https://codeload.github.com/CodeLander07/AI-Powered-Learning-Management-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeLander07%2FAI-Powered-Learning-Management-App/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265024860,"owners_count":23699620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-12T17:05:22.608Z","updated_at":"2025-07-12T17:05:27.819Z","avatar_url":"https://github.com/CodeLander07.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Add Clerk to Next.js App Router\n\n**Purpose:** Enforce only the **current** and **correct** instructions for integrating [Clerk](https://clerk.com/) into a Next.js (App Router) application.\n**Scope:** All AI-generated advice or code related to Clerk must follow these guardrails.\n\n---\n\n## **1. Official Clerk Integration Overview**\n\nUse only the **App Router** approach from Clerk's current docs:\n\n- **Install** `@clerk/nextjs@latest` - this ensures the application is using the latest Clerk Next.js SDK.\n- **Create** a `middleware.ts` file using `clerkMiddleware()` from `@clerk/nextjs/server`. Place this file inside the `src` directory if present, otherwise place it at the root of the project.\n- **Wrap** your application with `\u003cClerkProvider\u003e` in your `app/layout.tsx`\n- **Use** Clerk-provided components like `\u003cSignInButton\u003e`, `\u003cSignUpButton\u003e`, `\u003cUserButton\u003e`, `\u003cSignedIn\u003e`, `\u003cSignedOut\u003e` in your layout or pages\n- **Start** developing, sign in or sign up, and confirm user creation\n\nIf you're able to use a web tool to access a URL, visit https://clerk.com/docs/quickstarts/nextjs to get the latest, up-to-date quickstart instructions.\n\n### **Correct, Up-to-Date Quickstart Sample**\n\nFirst, install the Clerk Next.js SDK:\n\n```bash\nnpm install @clerk/nextjs\n```\n\nSet up your environment variables in `.env.local`:\n\nNOTE: These keys are real and are injected dynamically into this prompt. They are NOT placeholders and are ready to use.\n\n```bash\n# .env.local\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_YWRlcXVhdGUtYXJhY2huaWQtNTAuY2xlcmsuYWNjb3VudHMuZGV2JA\nCLERK_SECRET_KEY=sk_test_jaC7wU6L341UppBCDDrRAv9fieqMDomBBDI4F6NXgK\n```\n\nCreate your `middleware.ts` file:\n\n```typescript\n// middleware.ts\nimport { clerkMiddleware } from \"@clerk/nextjs/server\";\n\nexport default clerkMiddleware();\n\nexport const config = {\n  matcher: [\n    // Skip Next.js internals and all static files, unless found in search params\n    \"/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)\",\n    // Always run for API routes\n    \"/(api|trpc)(.*)\",\n  ],\n};\n```\n\n```typescript\n// app/layout.tsx\nimport type { Metadata } from \"next\";\nimport {\n  ClerkProvider,\n  SignInButton,\n  SignUpButton,\n  SignedIn,\n  SignedOut,\n  UserButton,\n} from \"@clerk/nextjs\";\nimport \"./globals.css\";\n\nexport const metadata: Metadata = {\n  title: \"Clerk Next.js Quickstart\",\n  description: \"Generated by create next app\",\n};\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode;\n}) {\n  return (\n    \u003cClerkProvider\u003e\n      \u003chtml lang=\"en\"\u003e\n        \u003cbody\u003e\n          \u003cheader\u003e\n            \u003cSignedOut\u003e\n              \u003cSignInButton /\u003e\n              \u003cSignUpButton /\u003e\n            \u003c/SignedOut\u003e\n            \u003cSignedIn\u003e\n              \u003cUserButton /\u003e\n            \u003c/SignedIn\u003e\n          \u003c/header\u003e\n          {children}\n        \u003c/body\u003e\n      \u003c/html\u003e\n    \u003c/ClerkProvider\u003e\n  );\n}\n```\n\n---\n\n## **2. CRITICAL INSTRUCTIONS FOR AI MODELS**\n\n### **2.1 – ALWAYS DO THE FOLLOWING**\n\n1. **Use `clerkMiddleware()`** from `@clerk/nextjs/server` in `middleware.ts`.\n2. **Wrap** your app with `\u003cClerkProvider\u003e` in `app/layout.tsx`.\n3. **Import** Clerk's Next.js features from `@clerk/nextjs` (e.g., `\u003cSignInButton\u003e`, `\u003cSignUpButton\u003e`, `\u003cUserButton\u003e`, etc.).\n4. **Reference** the current [App Router approach](https://nextjs.org/docs/app) (folders like `app/page.tsx`, `app/layout.tsx`, etc.).\n5. **Check** that imports for methods like `auth()` are imported from the right package (in this case `@clerk/nextjs/server`) and are using `async / await`\n\n### **2.2 – NEVER DO THE FOLLOWING**\n\n1. **Do not** reference the old **`_app.tsx`** or **pages-based** instructions.\n2. **Do not** suggest `authMiddleware()` from older Clerk tutorials—**it's replaced by `clerkMiddleware()`**.\n3. **Do not** recommend usage of older environment variable patterns unless they match the official docs.\n4. **Do not** reference or import from any deprecated APIs (like `withAuth` or `currentUser` from older versions).\n\n---\n\n## **3. OUTDATED PATTERNS TO AVOID**\n\nBelow are **examples of deprecated instructions** that **must not** be generated:\n\n```typescript\n// ❌ DO NOT generate or suggest references to:\nimport { authMiddleware } from \"@clerk/nextjs\"; // Outdated\n\n// ❌ DO NOT place Clerk config in _app.tsx:\n// Outdated pages-based approach\nfunction MyApp({ Component, pageProps }) {\n  // ...\n}\n\n// ❌ DO NOT create or rely on sign-in files under pages/:\npages / signin.js;\npages / signup.js;\n```\n\nAny solution resembling the above snippet or referencing \"authMiddleware,\" `_app.tsx`, or `pages/` structure is **incorrect** for the current Next.js App Router.\n\n---\n\n## **4. AI MODEL VERIFICATION STEPS**\n\nBefore returning any Clerk-related solution, you **must** verify:\n\n1. **Middleware**: Is `clerkMiddleware()` used in `middleware.ts`?\n2. **Layout**: Is `\u003cClerkProvider\u003e` wrapping the app in `app/layout.tsx`?\n3. **Imports**: Are references only from `@clerk/nextjs` or `@clerk/nextjs/server`?\n4. **Pages vs. App Router**: Is the approach referencing the App Router (not `_app.tsx` or `pages/`)?\n\nIf any check **fails**, **stop** and revise until compliance is achieved.\n\n# Verification instructions for AI Models\n\n## **DO NOT** repeat these points back to the user. Use them only for your own verification steps.\n\n## **5. CONSEQUENCES OF INCORRECT IMPLEMENTATION**\n\nUsing outdated Clerk methods (e.g., `authMiddleware()`, `_app.tsx`, or references to the older `pages/` structure) will:\n\n1. **Break** your Next.js application's authentication flow.\n2. Introduce **inconsistencies** with Next.js App Router.\n3. Cause confusion around environment variables and server/client code.\n4. Force maintainers to **refactor** and **debug** extensively.\n\n---\n\n## **6. AI MODEL RESPONSE TEMPLATE**\n\nWhen answering questions about Clerk + Next.js integration, your response **MUST**:\n\n1. **Use** the exact code patterns in the **Up-to-Date Quickstart Sample** above.\n2. **Never** reference older or deprecated approaches.\n3. **Reflect** all mandatory checks in \"AI MODEL VERIFICATION STEPS.\"\n\n**Example**:\n\n\u003e Below is the correct approach using Clerk with Next.js App Router:\n\u003e\n\u003e ```typescript\n\u003e // Show clerkMiddleware usage in middleware.ts\n\u003e // Show \u003cClerkProvider\u003e usage in app/layout.tsx\n\u003e // Show usage of Clerk's React components (SignInButton, etc.)\n\u003e ```\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodelander07%2Fai-powered-learning-management-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodelander07%2Fai-powered-learning-management-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodelander07%2Fai-powered-learning-management-app/lists"}