Security & Stability: - Add Next.js 16 proxy.ts for BetterAuth cookie-based auth protection - Add rate limiting for API routes (src/lib/rate-limit.ts) - Add Zod validation for chat API request bodies - Add session auth check to chat and diagnostics endpoints - Add security headers in next.config.ts (CSP, X-Frame-Options, etc.) - Add file upload validation and sanitization in storage.ts Core UX Components: - Add error boundaries (error.tsx, not-found.tsx, chat/error.tsx) - Add loading states (skeleton.tsx, spinner.tsx, loading.tsx files) - Add toast notifications with Sonner - Add form components (input.tsx, textarea.tsx, label.tsx) - Add database indexes for performance (schema.ts) - Enhance chat UX: timestamps, copy-to-clipboard, thinking indicator, error display, localStorage message persistence Polish & Accessibility: - Add Open Graph and Twitter card metadata - Add JSON-LD structured data for SEO - Add sitemap.ts, robots.ts, manifest.ts - Add skip-to-content link and ARIA labels in site-header - Enable profile page quick action buttons with dialogs - Update Next.js 15 references to Next.js 16 Developer Experience: - Add GitHub Actions CI workflow (lint, typecheck, build) - Add Prettier configuration (.prettierrc, .prettierignore) - Add .nvmrc pinning Node 20 - Add ESLint rules: import/order, react-hooks/exhaustive-deps - Add stricter TypeScript settings (exactOptionalPropertyTypes, noImplicitOverride) - Add interactive setup script (scripts/setup.ts) - Add session utility functions (src/lib/session.ts) All changes mirrored to create-agentic-app/template/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
217 lines
5.6 KiB
Markdown
217 lines
5.6 KiB
Markdown
# create-agentic-app
|
|
|
|
Scaffold a new agentic AI application with Next.js, Better Auth, and AI SDK.
|
|
|
|
## Usage
|
|
|
|
Create a new project in the current directory:
|
|
|
|
```bash
|
|
npx create-agentic-app@latest .
|
|
```
|
|
|
|
Create a new project in a subdirectory:
|
|
|
|
```bash
|
|
npx create-agentic-app@latest my-app
|
|
```
|
|
|
|
## What's Included
|
|
|
|
This starter kit includes:
|
|
|
|
- **Next.js 16** with App Router and Turbopack
|
|
- **Better Auth** for authentication (email/password, OAuth)
|
|
- **AI SDK** by Vercel for AI chat functionality
|
|
- **Drizzle ORM** with PostgreSQL database
|
|
- **Tailwind CSS** with shadcn/ui components
|
|
- **TypeScript** for type safety
|
|
- **Dark mode** support with next-themes
|
|
|
|
## Next Steps
|
|
|
|
After creating your project:
|
|
|
|
1. **Update environment variables**: Edit `.env` with your API keys and database credentials
|
|
2. **Start the database**: `docker compose up -d`
|
|
3. **Run migrations**: `pnpm run db:migrate` (or `npm`/`yarn`)
|
|
4. **Start dev server**: `pnpm run dev`
|
|
|
|
Visit `http://localhost:3000` to see your app!
|
|
|
|
## Publishing to npm
|
|
|
|
To publish this package to npm:
|
|
|
|
1. **Update package.json**: Set your author, repository URL, and version in `create-agentic-app/package.json`
|
|
2. **Test locally** (optional): Test the package before publishing:
|
|
```bash
|
|
cd create-agentic-app
|
|
npm link
|
|
cd /path/to/test/directory
|
|
create-agentic-app my-test-app
|
|
```
|
|
3. **Publish**: The sync happens automatically!
|
|
```bash
|
|
cd create-agentic-app
|
|
npm publish
|
|
```
|
|
The `prepublishOnly` hook will automatically sync the template from the main project before publishing.
|
|
|
|
## Maintainer Guide: Updating & Publishing
|
|
|
|
This section is for maintainers who need to update the npm package after making changes to the main project.
|
|
|
|
### Complete Publishing Workflow
|
|
|
|
Follow these steps **every time** you make changes to the main project and want to publish them:
|
|
|
|
#### Step 1: Make Changes to Main Project
|
|
|
|
Edit any files in the main project (outside of `create-agentic-app/` folder):
|
|
- `src/` components and pages
|
|
- `docker-compose.yml`
|
|
- `package.json`
|
|
- Configuration files
|
|
- etc.
|
|
|
|
#### Step 2: Navigate to create-agentic-app Directory
|
|
|
|
```bash
|
|
cd create-agentic-app
|
|
```
|
|
|
|
#### Step 3: Sync Template from Main Project
|
|
|
|
This copies all your changes from the main project into the template folder:
|
|
|
|
```bash
|
|
npm run sync
|
|
```
|
|
|
|
**What this does:**
|
|
- Deletes everything in `create-agentic-app/template/`
|
|
- Copies ALL files from your main project into `template/`
|
|
- Excludes: `node_modules`, `.next`, `.git`, lock files, `.env`, and the `create-agentic-app` folder itself
|
|
- Cleans up the template's `package.json` (removes `private` field and `sync-template` script)
|
|
|
|
#### Step 4: Bump the Version
|
|
|
|
Update the version number in `create-agentic-app/package.json`:
|
|
|
|
**Option A - Using npm version command (recommended):**
|
|
```bash
|
|
npm version patch # 1.1.3 → 1.1.4 (bug fixes)
|
|
# or
|
|
npm version minor # 1.1.3 → 1.2.0 (new features)
|
|
# or
|
|
npm version major # 1.1.3 → 2.0.0 (breaking changes)
|
|
```
|
|
|
|
**Option B - Manual:**
|
|
Edit `create-agentic-app/package.json` and change the version number.
|
|
|
|
#### Step 5: Verify Everything Looks Good (Optional)
|
|
|
|
Quick check to make sure your changes are in the package:
|
|
|
|
```bash
|
|
npm pack --dry-run | grep "template/"
|
|
```
|
|
|
|
This shows all files that will be published. Look for your changed files.
|
|
|
|
#### Step 6: Publish to npm
|
|
|
|
```bash
|
|
npm publish
|
|
```
|
|
|
|
**What happens:**
|
|
- The `prepublishOnly` hook automatically runs `npm run sync` again (safety check)
|
|
- Your package gets published to npm with the new version
|
|
|
|
#### Step 7: Test It
|
|
|
|
In a different directory, test that it works:
|
|
|
|
```bash
|
|
cd /path/to/test-directory
|
|
npx create-agentic-app@latest test-project
|
|
# or use the specific version
|
|
npx create-agentic-app@1.1.4 test-project
|
|
```
|
|
|
|
### Quick Reference Commands
|
|
|
|
```bash
|
|
# Complete workflow in 4 commands:
|
|
cd create-agentic-app
|
|
npm run sync
|
|
npm version patch
|
|
npm publish
|
|
```
|
|
|
|
### Common Scenarios
|
|
|
|
**Scenario 1: You edited `docker-compose.yml` in the main project**
|
|
```bash
|
|
cd create-agentic-app
|
|
npm run sync # Copies docker-compose.yml to template/
|
|
npm version patch # Bumps to next version
|
|
npm publish # Publishes to npm
|
|
```
|
|
|
|
**Scenario 2: You added a new component in `src/components/`**
|
|
```bash
|
|
cd create-agentic-app
|
|
npm run sync # Copies new component to template/
|
|
npm version patch # Bumps version
|
|
npm publish # Publishes
|
|
```
|
|
|
|
**Scenario 3: You updated multiple files**
|
|
```bash
|
|
cd create-agentic-app
|
|
npm run sync # Copies ALL changes to template/
|
|
npm version patch # Bumps version
|
|
npm publish # Publishes
|
|
```
|
|
|
|
### What Gets Excluded from the Template
|
|
|
|
The sync script excludes these patterns (see `scripts/sync-templates.js`):
|
|
- `node_modules`
|
|
- `.next`
|
|
- `.git`
|
|
- `pnpm-lock.yaml`
|
|
- `package-lock.json`
|
|
- `yarn.lock`
|
|
- `tsconfig.tsbuildinfo`
|
|
- `.env`
|
|
- `create-agentic-app` (the folder itself)
|
|
|
|
### Troubleshooting
|
|
|
|
**Issue: npmjs.com shows old version after publishing**
|
|
- The npm website can take 5-10 minutes to update due to CDN caching
|
|
- Verify actual registry: `npm view create-agentic-app version`
|
|
- The package is available to users immediately via `npx` even if the website hasn't updated
|
|
|
|
**Issue: Users getting old version with `npx`**
|
|
- Users may have cached versions. Tell them to:
|
|
```bash
|
|
npx clear-npx-cache
|
|
npx create-agentic-app@latest my-project
|
|
# or use specific version
|
|
npx create-agentic-app@1.1.4 my-project
|
|
```
|
|
|
|
**Issue: Forgot to run sync before publishing**
|
|
- No problem! The `prepublishOnly` hook runs it automatically
|
|
- But it's good practice to run manually first to verify changes
|
|
|
|
## License
|
|
|
|
MIT
|