2025-12-14 11:30:22 -08:00
|
|
|
{
|
|
|
|
|
"name": "markdown-site",
|
|
|
|
|
"private": true,
|
|
|
|
|
"version": "1.0.0",
|
|
|
|
|
"type": "module",
|
|
|
|
|
"scripts": {
|
|
|
|
|
"dev": "vite",
|
|
|
|
|
"dev:convex": "convex dev",
|
2025-12-14 12:13:20 -08:00
|
|
|
"build": "npx vite build",
|
2025-12-14 11:53:19 -08:00
|
|
|
"typecheck": "tsc --noEmit",
|
2025-12-14 11:30:22 -08:00
|
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
|
|
|
"preview": "vite preview",
|
|
|
|
|
"sync": "npx tsx scripts/sync-posts.ts",
|
|
|
|
|
"sync:prod": "SYNC_ENV=production npx tsx scripts/sync-posts.ts",
|
2025-12-24 23:16:34 -08:00
|
|
|
"sync:discovery": "npx tsx scripts/sync-discovery-files.ts",
|
|
|
|
|
"sync:discovery:prod": "SYNC_ENV=production npx tsx scripts/sync-discovery-files.ts",
|
|
|
|
|
"sync:all": "npm run sync && npm run sync:discovery",
|
|
|
|
|
"sync:all:prod": "npm run sync:prod && npm run sync:discovery:prod",
|
2026-01-05 18:30:48 -08:00
|
|
|
"export:db": "npx tsx scripts/export-db-posts.ts",
|
|
|
|
|
"export:db:prod": "SYNC_ENV=production npx tsx scripts/export-db-posts.ts",
|
2025-12-18 12:28:25 -08:00
|
|
|
"import": "npx tsx scripts/import-url.ts",
|
feat(fork-config): add automated fork configuration with npm run configure
Add a complete fork configuration system that allows users to set up their
forked site with a single command or follow manual instructions.
## New files
- FORK_CONFIG.md: Comprehensive guide with two setup options
- Option 1: Automated JSON config + npm run configure
- Option 2: Manual step-by-step instructions with code snippets
- AI agent prompt for automated updates
- fork-config.json.example: JSON template with all configuration fields
- Site info (name, title, description, URL, domain)
- GitHub and contact details
- Creator section for footer links
- Optional feature toggles (logo gallery, GitHub graph, blog page)
- Theme selection
- scripts/configure-fork.ts: Automated configuration script
- Reads fork-config.json and applies changes to all files
- Updates 11 configuration files in one command
- Type-safe with ForkConfig interface
- Detailed console output showing each file updated
## Updated files
- package.json: Added configure script (npm run configure)
- .gitignore: Added fork-config.json to keep user config local
- files.md: Added new fork configuration files
- changelog.md: Added v1.18.0 entry
- changelog-page.md: Added v1.18.0 section with full details
- TASK.md: Updated status and completed tasks
- README.md: Replaced Files to Update section with Fork Configuration
- content/blog/setup-guide.md: Added Fork Configuration Options section
- content/pages/docs.md: Added Fork Configuration section
- content/pages/about.md: Added fork configuration mention
- content/blog/fork-configuration-guide.md: New featured blog post
## Files updated by configure script
| File | What it updates |
| ----------------------------------- | -------------------------------------- |
| src/config/siteConfig.ts | Site name, bio, GitHub, features |
| src/pages/Home.tsx | Intro paragraph, footer links |
| src/pages/Post.tsx | SITE_URL, SITE_NAME constants |
| convex/http.ts | SITE_URL, SITE_NAME constants |
| convex/rss.ts | SITE_URL, SITE_TITLE, SITE_DESCRIPTION |
| index.html | Meta tags, JSON-LD, page title |
| public/llms.txt | Site info, GitHub link |
| public/robots.txt | Sitemap URL |
| public/openapi.yaml | Server URL, site name |
| public/.well-known/ai-plugin.json | Plugin metadata |
| src/context/ThemeContext.tsx | Default theme |
## Usage
Automated:
cp fork-config.json.example fork-config.json
# Edit fork-config.json
npm run configure
Manual:
Follow FORK_CONFIG.md step-by-step guide
2025-12-20 22:15:33 -08:00
|
|
|
"configure": "npx tsx scripts/configure-fork.ts",
|
2025-12-27 15:32:07 -08:00
|
|
|
"newsletter:send": "npx tsx scripts/send-newsletter.ts",
|
|
|
|
|
"newsletter:send:stats": "npx tsx scripts/send-newsletter-stats.ts",
|
2025-12-29 22:11:52 -08:00
|
|
|
"sync-server": "npx tsx scripts/sync-server.ts",
|
2025-12-14 11:30:22 -08:00
|
|
|
"deploy": "npm run sync && npm run build",
|
|
|
|
|
"deploy:prod": "npx convex deploy && npm run sync:prod"
|
|
|
|
|
},
|
|
|
|
|
"dependencies": {
|
2025-12-26 12:31:33 -08:00
|
|
|
"@anthropic-ai/sdk": "^0.71.2",
|
2025-12-20 14:39:53 -08:00
|
|
|
"@convex-dev/aggregate": "^0.2.0",
|
2026-01-06 21:05:20 -08:00
|
|
|
"@convex-dev/persistent-text-streaming": "^0.3.0",
|
2025-12-29 22:11:52 -08:00
|
|
|
"@convex-dev/workos": "^0.0.1",
|
2026-01-05 18:30:48 -08:00
|
|
|
"@google/genai": "^1.0.1",
|
2025-12-18 12:28:25 -08:00
|
|
|
"@mendable/firecrawl-js": "^1.21.1",
|
2025-12-29 22:11:52 -08:00
|
|
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
2025-12-17 22:02:52 -08:00
|
|
|
"@phosphor-icons/react": "^2.1.10",
|
2026-01-07 23:20:50 -08:00
|
|
|
"@pierre/diffs": "^1.0.4",
|
2025-12-14 11:30:22 -08:00
|
|
|
"@radix-ui/react-icons": "^1.3.2",
|
2025-12-29 22:11:52 -08:00
|
|
|
"@workos-inc/authkit-react": "^0.15.0",
|
|
|
|
|
"@workos-inc/widgets": "^1.6.1",
|
2025-12-27 15:32:07 -08:00
|
|
|
"agentmail": "^0.1.15",
|
2025-12-14 11:30:22 -08:00
|
|
|
"convex": "^1.17.4",
|
|
|
|
|
"date-fns": "^3.3.1",
|
2026-01-09 23:02:28 -08:00
|
|
|
"diff": "^8.0.2",
|
2025-12-14 11:30:22 -08:00
|
|
|
"gray-matter": "^4.0.3",
|
|
|
|
|
"lucide-react": "^0.344.0",
|
2026-01-01 22:28:38 -08:00
|
|
|
"openai": "^4.79.0",
|
2025-12-14 11:30:22 -08:00
|
|
|
"react": "^18.2.0",
|
|
|
|
|
"react-dom": "^18.2.0",
|
|
|
|
|
"react-markdown": "^9.0.1",
|
2026-01-05 18:30:48 -08:00
|
|
|
"react-quill": "^2.0.0",
|
2025-12-14 11:30:22 -08:00
|
|
|
"react-router-dom": "^6.22.0",
|
|
|
|
|
"react-syntax-highlighter": "^15.5.0",
|
2025-12-23 00:21:57 -08:00
|
|
|
"rehype-raw": "^7.0.0",
|
|
|
|
|
"rehype-sanitize": "^6.0.0",
|
2025-12-14 11:30:22 -08:00
|
|
|
"remark-breaks": "^4.0.0",
|
2026-01-05 18:30:48 -08:00
|
|
|
"remark-gfm": "^4.0.0",
|
|
|
|
|
"showdown": "^2.1.0",
|
|
|
|
|
"turndown": "^7.2.2"
|
2025-12-14 11:30:22 -08:00
|
|
|
},
|
|
|
|
|
"devDependencies": {
|
2025-12-14 12:16:31 -08:00
|
|
|
"@types/node": "^25.0.2",
|
2025-12-14 11:30:22 -08:00
|
|
|
"@types/react": "^18.2.56",
|
|
|
|
|
"@types/react-dom": "^18.2.19",
|
|
|
|
|
"@types/react-syntax-highlighter": "^15.5.11",
|
2026-01-05 18:30:48 -08:00
|
|
|
"@types/showdown": "^2.0.6",
|
|
|
|
|
"@types/turndown": "^5.0.6",
|
2025-12-14 11:30:22 -08:00
|
|
|
"@typescript-eslint/eslint-plugin": "^7.0.2",
|
|
|
|
|
"@typescript-eslint/parser": "^7.0.2",
|
|
|
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
|
|
|
"dotenv": "^16.4.5",
|
|
|
|
|
"eslint": "^8.56.0",
|
|
|
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
|
|
|
"eslint-plugin-react-refresh": "^0.4.5",
|
|
|
|
|
"tsx": "^4.7.1",
|
|
|
|
|
"typescript": "^5.2.2",
|
|
|
|
|
"vite": "^5.1.4"
|
|
|
|
|
}
|
|
|
|
|
}
|