From 95cc8a46770f6a2500bce0d9c74f18d01deee64e Mon Sep 17 00:00:00 2001 From: Wayne Sutton Date: Sat, 10 Jan 2026 15:53:27 -0800 Subject: [PATCH] New and Updated: ConvexFS Media Library with Bunny CDN integration ,OpenCode AI development tool integration, AI image generation download and copy options --- .opencode/agent/content-writer.md | 96 +++ .opencode/agent/orchestrator.md | 72 ++ .opencode/agent/sync-manager.md | 105 +++ .opencode/command/create-page.md | 70 ++ .opencode/command/create-post.md | 60 ++ .opencode/command/deploy.md | 70 ++ .opencode/command/import.md | 62 ++ .opencode/command/sync-prod.md | 44 ++ .opencode/command/sync.md | 42 ++ .opencode/config.json | 6 + .opencode/plugin/sync-helper.ts | 47 ++ .opencode/skill/content.md | 187 +++++ .opencode/skill/convex.md | 192 +++++ .opencode/skill/frontmatter.md | 194 +++++ .opencode/skill/sync.md | 126 ++++ AGENTS.md | 6 +- CLAUDE.md | 2 +- README.md | 500 +----------- TASK.md | 44 +- changelog.md | 102 +++ content/blog/docs-opencode.md | 195 +++++ content/pages/changelog-page.md | 108 +++ content/pages/docs-media-setup.md | 234 ++++++ convex/_generated/api.d.ts | 568 ++++++++++++++ convex/convex.config.ts | 4 + convex/files.ts | 222 ++++++ convex/fs.ts | 34 + convex/http.ts | 24 +- files.md | 55 +- opencode.json | 5 + package-lock.json | 50 +- package.json | 1 + public/images/opencode.png | Bin 0 -> 433467 bytes public/llms.txt | 6 +- public/raw/changelog.md | 85 +++ public/raw/docs-media-setup.md | 229 ++++++ public/raw/docs-opencode.md | 180 +++++ public/raw/index.md | 9 +- src/components/ImageUploadModal.tsx | 553 ++++++++++++++ src/components/MediaLibrary.tsx | 509 +++++++++++++ src/config/siteConfig.ts | 20 + src/pages/Dashboard.tsx | 260 ++++++- src/styles/global.css | 1089 +++++++++++++++++++++++++++ 43 files changed, 5941 insertions(+), 526 deletions(-) create mode 100644 .opencode/agent/content-writer.md create mode 100644 .opencode/agent/orchestrator.md create mode 100644 .opencode/agent/sync-manager.md create mode 100644 .opencode/command/create-page.md create mode 100644 .opencode/command/create-post.md create mode 100644 .opencode/command/deploy.md create mode 100644 .opencode/command/import.md create mode 100644 .opencode/command/sync-prod.md create mode 100644 .opencode/command/sync.md create mode 100644 .opencode/config.json create mode 100644 .opencode/plugin/sync-helper.ts create mode 100644 .opencode/skill/content.md create mode 100644 .opencode/skill/convex.md create mode 100644 .opencode/skill/frontmatter.md create mode 100644 .opencode/skill/sync.md create mode 100644 content/blog/docs-opencode.md create mode 100644 content/pages/docs-media-setup.md create mode 100644 convex/files.ts create mode 100644 convex/fs.ts create mode 100644 opencode.json create mode 100644 public/images/opencode.png create mode 100644 public/raw/docs-media-setup.md create mode 100644 public/raw/docs-opencode.md create mode 100644 src/components/ImageUploadModal.tsx create mode 100644 src/components/MediaLibrary.tsx diff --git a/.opencode/agent/content-writer.md b/.opencode/agent/content-writer.md new file mode 100644 index 0000000..f380b91 --- /dev/null +++ b/.opencode/agent/content-writer.md @@ -0,0 +1,96 @@ +--- +description: Content creation specialist for posts and pages +mode: subagent +model: claude-sonnet-4-20250514 +tools: + write: true + edit: true + bash: false +--- + +# Content Writer Agent + +You are a content creation specialist for the markdown publishing framework. + +## Responsibilities + +1. Create new blog posts in `content/blog/` +2. Create new pages in `content/pages/` +3. Edit existing content +4. Validate frontmatter +5. Suggest when to run sync + +## Creating a Blog Post + +Location: `content/blog/{slug}.md` + +Required frontmatter: + +```yaml +--- +title: "Post Title" +description: "SEO description" +date: "YYYY-MM-DD" +slug: "url-slug" +published: true +tags: ["tag1", "tag2"] +--- +``` + +Optional fields: featured, featuredOrder, image, showImageAtTop, excerpt, readTime, authorName, authorImage, layout, rightSidebar, aiChat, blogFeatured, newsletter, contactForm, unlisted, showFooter, footer, showSocialFooter + +## Creating a Page + +Location: `content/pages/{slug}.md` + +Required frontmatter: + +```yaml +--- +title: "Page Title" +slug: "url-slug" +published: true +--- +``` + +Optional fields: order, showInNav, featured, featuredOrder, image, showImageAtTop, excerpt, authorName, authorImage, layout, rightSidebar, aiChat, contactForm, newsletter, textAlign, showFooter, footer, showSocialFooter + +## Docs Navigation + +To include content in the docs sidebar: + +```yaml +docsSection: true +docsSectionGroup: "Group Name" +docsSectionOrder: 1 +docsSectionGroupOrder: 1 +docsSectionGroupIcon: "Rocket" +``` + +## Validation Checklist + +Before creating content: + +- [ ] Slug is unique (not used by any other post/page) +- [ ] Date is in YYYY-MM-DD format +- [ ] published is boolean (true/false) +- [ ] tags is an array (for posts) +- [ ] Required fields are present + +## After Creating Content + +Always remind the user to run: + +```bash +npm run sync # Development +npm run sync:prod # Production +``` + +Or use the `/sync` command. + +## Writing Guidelines + +- No emojis unless requested +- No em dashes between words +- Sentence case for headings +- Keep descriptions under 160 characters for SEO diff --git a/.opencode/agent/orchestrator.md b/.opencode/agent/orchestrator.md new file mode 100644 index 0000000..4879f7c --- /dev/null +++ b/.opencode/agent/orchestrator.md @@ -0,0 +1,72 @@ +--- +description: Main orchestrator for markdown publishing framework +mode: primary +model: claude-sonnet-4-20250514 +tools: + write: true + edit: true + bash: true +--- + +# Orchestrator Agent + +You are the main orchestrator for a markdown publishing framework built with React, Vite, and Convex. + +## Workflow + +Follow this structured approach: + +1. **Understand** - Analyze the user's request +2. **Plan** - Determine which specialist agent or action is needed +3. **Delegate** - Route to the appropriate agent or execute directly +4. **Verify** - Check that the task completed successfully +5. **Report** - Summarize what was done + +## Routing Rules + +**Content creation tasks** (new posts, pages, writing): +- Delegate to @content-writer agent + +**Sync and deployment tasks** (sync, deploy, environment): +- Delegate to @sync-manager agent + +**Code changes** (components, functions, styling): +- Handle directly or use default code capabilities + +## Key Commands + +Quick commands available via `/` prefix: + +| Command | Purpose | +|---------|---------| +| `/sync` | Sync content to development | +| `/sync-prod` | Sync content to production | +| `/create-post` | Create a new blog post | +| `/create-page` | Create a new page | +| `/import` | Import content from URL | +| `/deploy` | Deploy to production | + +## Project Structure + +- `content/blog/` - Markdown blog posts +- `content/pages/` - Static pages +- `convex/` - Backend functions +- `src/` - React frontend +- `scripts/` - Sync and utility scripts + +## Skills Reference + +Use these skills for detailed documentation: + +- **frontmatter** - Frontmatter syntax for posts/pages +- **sync** - How the sync system works +- **convex** - Convex patterns and conventions +- **content** - Content management guide + +## Important Rules + +1. Never break existing functionality +2. Always validate frontmatter before creating content +3. Run sync after content changes +4. Use indexes in Convex queries (never .filter()) +5. No emojis unless explicitly requested diff --git a/.opencode/agent/sync-manager.md b/.opencode/agent/sync-manager.md new file mode 100644 index 0000000..b36c3c2 --- /dev/null +++ b/.opencode/agent/sync-manager.md @@ -0,0 +1,105 @@ +--- +description: Sync and deployment specialist +mode: subagent +model: claude-sonnet-4-20250514 +tools: + write: false + edit: false + bash: true +--- + +# Sync Manager Agent + +You are the sync and deployment specialist for the markdown publishing framework. + +## Responsibilities + +1. Execute sync commands +2. Manage development vs production environments +3. Handle deployments +4. Troubleshoot sync issues +5. Import content from URLs + +## Sync Commands + +| Command | Environment | Purpose | +|---------|-------------|---------| +| `npm run sync` | Development | Sync markdown to dev Convex | +| `npm run sync:prod` | Production | Sync markdown to prod Convex | +| `npm run sync:discovery` | Development | Update AGENTS.md, llms.txt | +| `npm run sync:discovery:prod` | Production | Update discovery files | +| `npm run sync:all` | Development | Sync everything | +| `npm run sync:all:prod` | Production | Sync everything | + +## Import External Content + +```bash +npm run import https://example.com/article +``` + +Requires FIRECRAWL_API_KEY in `.env.local`. After import, run sync. + +## Export Dashboard Content + +```bash +npm run export:db # Development +npm run export:db:prod # Production +``` + +Exports dashboard-created content to markdown files. + +## Environment Files + +| File | Purpose | +|------|---------| +| `.env.local` | Development Convex URL | +| `.env.production.local` | Production Convex URL | + +## Deployment Workflow + +1. Sync content to production: + ```bash + npm run sync:all:prod + ``` + +2. Deploy Convex functions: + ```bash + npx convex deploy + ``` + +3. Build and deploy frontend (Netlify handles automatically) + +## Troubleshooting + +### "VITE_CONVEX_URL not set" + +Run `npx convex dev` first to create `.env.local`. + +### Posts not appearing + +1. Check `published: true` in frontmatter +2. Verify required fields +3. Check Convex dashboard for errors +4. Run sync again + +### Sync to wrong environment + +Check which command you ran: +- `npm run sync` = development +- `npm run sync:prod` = production + +## Sync Server + +The project includes a local sync server at `localhost:3001` for Dashboard integration: + +- Start: `npm run sync-server` +- Endpoint: POST `/api/sync` with `{ command: "sync" }` +- Health: GET `/health` + +## Verification + +After any sync, verify: + +1. Content appears on the site +2. No errors in terminal output +3. Convex dashboard shows updated records diff --git a/.opencode/command/create-page.md b/.opencode/command/create-page.md new file mode 100644 index 0000000..1218d64 --- /dev/null +++ b/.opencode/command/create-page.md @@ -0,0 +1,70 @@ +--- +description: Create a new static page with proper frontmatter +--- + +# /create-page + +Creates a new static page in `content/pages/` with validated frontmatter. + +## Workflow + +1. Ask for page details (title, slug) +2. Validate slug uniqueness +3. Create the markdown file with frontmatter +4. Remind to run sync + +## Required information + +| Field | Description | +|-------|-------------| +| title | Page title | +| slug | URL path (must be unique) | + +## Optional information + +| Field | Description | +|-------|-------------| +| order | Navigation order (lower = first) | +| showInNav | Show in navigation menu (default: true) | +| featured | Show in featured section | +| excerpt | Short text for cards | +| layout | "sidebar" for docs-style | + +## File template + +```markdown +--- +title: "{title}" +slug: "{slug}" +published: true +order: {order} +showInNav: true +--- + +{content} +``` + +## Special pages + +| Page | Slug | Purpose | +|------|------|---------| +| Homepage intro | home-intro | Content shown on homepage | +| Footer | footer | Footer content | + +## After creation + +Run sync to publish: + +```bash +npm run sync +``` + +## For docs navigation + +Add these fields to include in docs sidebar: + +```yaml +docsSection: true +docsSectionGroup: "Group Name" +docsSectionOrder: 1 +``` diff --git a/.opencode/command/create-post.md b/.opencode/command/create-post.md new file mode 100644 index 0000000..81b60c6 --- /dev/null +++ b/.opencode/command/create-post.md @@ -0,0 +1,60 @@ +--- +description: Create a new blog post with proper frontmatter +--- + +# /create-post + +Creates a new blog post in `content/blog/` with validated frontmatter. + +## Workflow + +1. Ask for post details (title, description, tags) +2. Generate a URL-safe slug +3. Create the markdown file with frontmatter +4. Remind to run sync + +## Required information + +| Field | Description | +|-------|-------------| +| title | Post title | +| description | SEO description (under 160 chars) | +| tags | Array of topic tags | + +## Optional information + +| Field | Description | +|-------|-------------| +| image | Header/OG image path | +| featured | Show in featured section | +| excerpt | Short text for cards | +| authorName | Author display name | + +## File template + +```markdown +--- +title: "{title}" +description: "{description}" +date: "{YYYY-MM-DD}" +slug: "{slug}" +published: true +tags: [{tags}] +--- + +{content} +``` + +## After creation + +Run sync to publish: + +```bash +npm run sync +``` + +## Validation + +- Slug must be unique across all posts/pages +- Date must be YYYY-MM-DD format +- Tags must be an array diff --git a/.opencode/command/deploy.md b/.opencode/command/deploy.md new file mode 100644 index 0000000..d1ee573 --- /dev/null +++ b/.opencode/command/deploy.md @@ -0,0 +1,70 @@ +--- +description: Deploy changes to production +--- + +# /deploy + +Full deployment workflow for pushing changes to production. + +## Deployment steps + +### 1. Sync content to production + +```bash +npm run sync:all:prod +``` + +This syncs: +- All posts and pages +- Discovery files (AGENTS.md, llms.txt) +- Raw markdown files + +### 2. Deploy Convex functions + +```bash +npx convex deploy +``` + +This pushes any changes to: +- Mutations and queries +- Schema changes +- HTTP endpoints +- Cron jobs + +### 3. Build and deploy frontend + +If using Netlify (automatic): +- Push to main branch triggers build +- Netlify runs: `npm ci --include=dev && npx convex deploy --cmd 'npm run build'` + +If manual: +```bash +npm run build +``` + +## Verification checklist + +After deployment: + +- [ ] Production site loads correctly +- [ ] New content appears +- [ ] Existing content still works +- [ ] No console errors +- [ ] RSS feed updates +- [ ] Sitemap includes new pages + +## Environment requirements + +| File | Purpose | +|------|---------| +| `.env.production.local` | Production Convex URL | +| Netlify env vars | API keys, Convex deployment | + +## Rollback + +If something goes wrong: + +1. Check Convex dashboard for function errors +2. Redeploy previous Convex version if needed +3. Check Netlify for build logs +4. Trigger a redeploy in Netlify dashboard diff --git a/.opencode/command/import.md b/.opencode/command/import.md new file mode 100644 index 0000000..65ed7f5 --- /dev/null +++ b/.opencode/command/import.md @@ -0,0 +1,62 @@ +--- +description: Import external URL content as a markdown post +--- + +# /import + +Imports content from an external URL and creates a new blog post. + +## Usage + +```bash +npm run import https://example.com/article +``` + +## Requirements + +- `FIRECRAWL_API_KEY` in `.env.local` +- Valid, accessible URL + +## What it does + +1. Fetches the URL via Firecrawl API +2. Converts HTML to clean markdown +3. Extracts metadata (title, description) +4. Generates frontmatter +5. Creates file in `content/blog/` + +## After import + +You still need to run sync: + +```bash +npm run sync +``` + +## Editing imported content + +After import, you can edit the generated file in `content/blog/` to: + +- Adjust the title +- Update the description +- Add/remove tags +- Edit the content +- Add images + +## Troubleshooting + +### "FIRECRAWL_API_KEY not set" + +Add to your `.env.local`: + +``` +FIRECRAWL_API_KEY=your_api_key_here +``` + +### Content looks wrong + +Some sites may not convert cleanly. Edit the generated markdown manually. + +### Import failed + +Check if the URL is accessible and not blocked by robots.txt or authentication. diff --git a/.opencode/command/sync-prod.md b/.opencode/command/sync-prod.md new file mode 100644 index 0000000..92ddbdd --- /dev/null +++ b/.opencode/command/sync-prod.md @@ -0,0 +1,44 @@ +--- +description: Sync markdown content to production Convex database +--- + +# /sync-prod + +Syncs all markdown content to the production Convex database. + +## What it does + +Same as `/sync` but targets the production environment using `.env.production.local`. + +## Usage + +```bash +npm run sync:prod +``` + +## Requirements + +- `.env.production.local` file must exist with `VITE_CONVEX_URL` +- Production Convex deployment must be configured + +## When to use + +- Before deploying changes to production +- When updating live content +- As part of the deployment workflow + +## Full production sync + +To sync everything including discovery files: + +```bash +npm run sync:all:prod +``` + +## Verification + +After production sync: + +1. Check your production site +2. Verify content appears correctly +3. Check Convex dashboard for the production deployment diff --git a/.opencode/command/sync.md b/.opencode/command/sync.md new file mode 100644 index 0000000..736afbe --- /dev/null +++ b/.opencode/command/sync.md @@ -0,0 +1,42 @@ +--- +description: Sync markdown content to development Convex database +--- + +# /sync + +Syncs all markdown content from `content/blog/` and `content/pages/` to the development Convex database. + +## What it does + +1. Reads all `.md` files from content directories +2. Parses frontmatter with gray-matter +3. Validates required fields +4. Calculates reading time if not provided +5. Upserts content to Convex database +6. Generates raw markdown files in `public/raw/` + +## Usage + +```bash +npm run sync +``` + +## When to use + +- After creating or editing markdown files +- After importing content from URLs +- When content is not appearing on the site + +## Output + +The command shows: +- Number of posts synced +- Number of pages synced +- Any validation warnings +- Generated raw files + +## Next steps + +After syncing, visit `http://localhost:5173` to see your content. + +For production sync, use `/sync-prod` instead. diff --git a/.opencode/config.json b/.opencode/config.json new file mode 100644 index 0000000..35f0439 --- /dev/null +++ b/.opencode/config.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://opencode.ai/schemas/config.json", + "name": "markdown-publishing-framework", + "description": "AI-first markdown publishing with Convex real-time sync. Write markdown, run sync, content appears instantly.", + "version": "1.0.0" +} diff --git a/.opencode/plugin/sync-helper.ts b/.opencode/plugin/sync-helper.ts new file mode 100644 index 0000000..330a763 --- /dev/null +++ b/.opencode/plugin/sync-helper.ts @@ -0,0 +1,47 @@ +/** + * Sync Helper Plugin for OpenCode + * + * Provides helpful reminders when content files are edited. + * Minimal implementation - just logging, no auto-sync. + */ + +import type { Plugin } from "@opencode-ai/plugin"; + +export const SyncHelper: Plugin = async ({ client }) => { + // Track if we've reminded recently to avoid spam + let lastReminder = 0; + const REMINDER_COOLDOWN = 30000; // 30 seconds + + return { + hooks: { + // When a file is edited + "file.edited": async (event) => { + const path = event.path; + + // Check if it's a content file + if ( + path.startsWith("content/blog/") || + path.startsWith("content/pages/") + ) { + const now = Date.now(); + + // Only remind if cooldown has passed + if (now - lastReminder > REMINDER_COOLDOWN) { + lastReminder = now; + await client.app.log( + "info", + `Content changed: ${path} - Run /sync to publish` + ); + } + } + }, + + // When session becomes idle + "session.idle": async () => { + // Could add pending sync detection here in the future + }, + }, + }; +}; + +export default SyncHelper; diff --git a/.opencode/skill/content.md b/.opencode/skill/content.md new file mode 100644 index 0000000..b8af248 --- /dev/null +++ b/.opencode/skill/content.md @@ -0,0 +1,187 @@ +--- +description: Content management guide +--- + +# Content Management Guide + +How to manage content in the markdown publishing framework. + +## Content locations + +| Type | Location | Purpose | +|------|----------|---------| +| Blog posts | `content/blog/*.md` | Time-based articles | +| Pages | `content/pages/*.md` | Static pages | +| Raw files | `public/raw/*.md` | Generated static copies | +| Images | `public/images/` | Static images | + +## Creating content + +### New blog post + +1. Create file: `content/blog/my-post.md` +2. Add required frontmatter: + ```yaml + --- + title: "My Post Title" + description: "SEO description" + date: "2025-01-15" + slug: "my-post" + published: true + tags: ["topic"] + --- + ``` +3. Write content in markdown +4. Run `npm run sync` +5. View at `localhost:5173/my-post` + +### New page + +1. Create file: `content/pages/my-page.md` +2. Add required frontmatter: + ```yaml + --- + title: "My Page" + slug: "my-page" + published: true + --- + ``` +3. Write content +4. Run `npm run sync` +5. View at `localhost:5173/my-page` + +## Special pages + +| Slug | Purpose | +|------|---------| +| `home-intro` | Homepage intro content | +| `footer` | Footer content | + +These render in special locations. Set `showInNav: false` to hide from navigation. + +## Content workflow + +``` +Write markdown --> npm run sync --> Convex DB --> Site +``` + +### Development + +1. Edit markdown files +2. Run `npm run sync` +3. View changes at `localhost:5173` + +### Production + +1. Edit markdown files +2. Run `npm run sync:prod` +3. View changes on production site + +## Images + +### Local images + +Place in `public/images/` and reference: + +```markdown +![Alt text](/images/my-image.png) +``` + +### External images + +Use full URLs: + +```markdown +![Alt text](https://example.com/image.png) +``` + +### Image in frontmatter + +```yaml +image: "/images/og-image.png" +showImageAtTop: true +``` + +## Markdown features + +### Code blocks + +````markdown +```typescript +const example = "code"; +``` +```` + +### Tables + +```markdown +| Header | Header | +|--------|--------| +| Cell | Cell | +``` + +### Links + +```markdown +[Link text](/internal-path) +[External](https://example.com) +``` + +### Headings + +```markdown +# H1 (demoted to H2 in posts) +## H2 +### H3 +``` + +## Docs section + +To add content to the docs sidebar: + +```yaml +docsSection: true +docsSectionGroup: "Group Name" +docsSectionOrder: 1 +``` + +## Unlisted content + +To hide from listings but keep accessible: + +```yaml +published: true +unlisted: true +``` + +## Draft content + +To hide completely: + +```yaml +published: false +``` + +## Import from URL + +```bash +npm run import https://example.com/article +npm run sync +``` + +## Export from Dashboard + +```bash +npm run export:db # Dev +npm run export:db:prod # Prod +``` + +Exports dashboard-created content to markdown files. + +## Best practices + +1. **Unique slugs** - Every post/page needs a unique slug +2. **SEO descriptions** - Keep under 160 characters +3. **Tags** - Use consistent tag names +4. **Images** - Optimize before uploading +5. **Sync after changes** - Always run sync diff --git a/.opencode/skill/convex.md b/.opencode/skill/convex.md new file mode 100644 index 0000000..dc4a14b --- /dev/null +++ b/.opencode/skill/convex.md @@ -0,0 +1,192 @@ +--- +description: Convex patterns and conventions +--- + +# Convex Patterns Reference + +Convex patterns and conventions for this markdown publishing framework. + +## Function structure + +Every Convex function needs argument and return validators: + +```typescript +import { query } from "./_generated/server"; +import { v } from "convex/values"; + +export const myQuery = query({ + args: { slug: v.string() }, + returns: v.union(v.object({...}), v.null()), + handler: async (ctx, args) => { + // implementation + }, +}); +``` + +If a function returns nothing, use `returns: v.null()` and `return null;`. + +## Always use indexes + +Never use `.filter()` on queries. Define indexes in schema and use `.withIndex()`: + +```typescript +// Good +const post = await ctx.db + .query("posts") + .withIndex("by_slug", (q) => q.eq("slug", args.slug)) + .first(); + +// Bad - causes table scans +const post = await ctx.db + .query("posts") + .filter((q) => q.eq(q.field("slug"), args.slug)) + .first(); +``` + +## Make mutations idempotent + +Mutations should be safe to call multiple times: + +```typescript +export const heartbeat = mutation({ + args: { sessionId: v.string(), currentPath: v.string() }, + returns: v.null(), + handler: async (ctx, args) => { + const now = Date.now(); + const existing = await ctx.db + .query("activeSessions") + .withIndex("by_sessionId", (q) => q.eq("sessionId", args.sessionId)) + .first(); + + if (existing) { + // Early return if recently updated with same data + if (existing.currentPath === args.currentPath && + now - existing.lastSeen < 10000) { + return null; + } + await ctx.db.patch(existing._id, { + currentPath: args.currentPath, + lastSeen: now + }); + return null; + } + + await ctx.db.insert("activeSessions", { ...args, lastSeen: now }); + return null; + }, +}); +``` + +## Patch directly without reading + +When you only need to update fields, patch directly: + +```typescript +// Good - patch directly +await ctx.db.patch(args.id, { content: args.content }); + +// Bad - unnecessary read creates conflict window +const doc = await ctx.db.get(args.id); +if (!doc) throw new Error("Not found"); +await ctx.db.patch(args.id, { content: args.content }); +``` + +## Use event records for counters + +Never increment counters on documents. Use separate event records: + +```typescript +// Good - insert event record +await ctx.db.insert("pageViews", { + path, + sessionId, + timestamp: Date.now() +}); + +// Bad - counter updates cause write conflicts +await ctx.db.patch(pageId, { views: page.views + 1 }); +``` + +## Schema indexes in this project + +Key indexes defined in `convex/schema.ts`: + +```typescript +posts: defineTable({...}) + .index("by_slug", ["slug"]) + .index("by_published", ["published"]) + .index("by_featured", ["featured"]) + .searchIndex("search_title", { searchField: "title" }) + .searchIndex("search_content", { searchField: "content" }) + +pages: defineTable({...}) + .index("by_slug", ["slug"]) + .index("by_published", ["published"]) + .index("by_featured", ["featured"]) +``` + +## Common query patterns + +### Get post by slug + +```typescript +const post = await ctx.db + .query("posts") + .withIndex("by_slug", (q) => q.eq("slug", args.slug)) + .first(); +``` + +### Get all published posts + +```typescript +const posts = await ctx.db + .query("posts") + .withIndex("by_published", (q) => q.eq("published", true)) + .order("desc") + .collect(); +``` + +### Get featured items + +```typescript +const featured = await ctx.db + .query("posts") + .withIndex("by_featured", (q) => q.eq("featured", true)) + .collect(); +``` + +### Full text search + +```typescript +const results = await ctx.db + .query("posts") + .withSearchIndex("search_content", (q) => q.search("content", searchTerm)) + .take(10); +``` + +## File locations + +| File | Purpose | +|------|---------| +| `convex/schema.ts` | Database schema and indexes | +| `convex/posts.ts` | Post queries/mutations | +| `convex/pages.ts` | Page queries/mutations | +| `convex/stats.ts` | Analytics (heartbeat, pageViews) | +| `convex/search.ts` | Full text search | +| `convex/http.ts` | HTTP endpoints | +| `convex/rss.ts` | RSS feed generation | +| `convex/crons.ts` | Scheduled jobs | + +## Write conflict prevention + +This project uses specific patterns to avoid write conflicts: + +**Backend (convex/stats.ts):** +- 10-second dedup window for heartbeats +- Early return when session was recently updated +- Indexed queries for efficient lookups + +**Frontend (src/hooks/usePageTracking.ts):** +- 5-second debounce window using refs +- Pending state tracking prevents overlapping calls +- Path tracking skips redundant heartbeats diff --git a/.opencode/skill/frontmatter.md b/.opencode/skill/frontmatter.md new file mode 100644 index 0000000..aed5a55 --- /dev/null +++ b/.opencode/skill/frontmatter.md @@ -0,0 +1,194 @@ +--- +description: Frontmatter syntax for posts and pages +--- + +# Frontmatter Reference + +How to write frontmatter for markdown-blog posts and pages. + +## Blog post frontmatter + +Location: `content/blog/*.md` + +### Required fields + +| Field | Type | Description | +|-------|------|-------------| +| title | string | Post title | +| description | string | SEO description | +| date | string | YYYY-MM-DD format | +| slug | string | URL path (must be unique) | +| published | boolean | true to show publicly | +| tags | string[] | Array of topic tags | + +### Optional fields + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| featured | boolean | false | Show in featured section | +| featuredOrder | number | - | Display order (lower = first) | +| image | string | - | OG/header image path | +| showImageAtTop | boolean | false | Display image at top of post | +| excerpt | string | - | Short text for card view | +| readTime | string | auto | Reading time (auto-calculated if omitted) | +| authorName | string | - | Author display name | +| authorImage | string | - | Author avatar URL (round) | +| layout | string | - | "sidebar" for docs-style layout | +| rightSidebar | boolean | true | Show right sidebar | +| aiChat | boolean | false | Enable AI chat in sidebar | +| blogFeatured | boolean | false | Hero featured on /blog page | +| newsletter | boolean | - | Override newsletter signup | +| contactForm | boolean | false | Enable contact form | +| unlisted | boolean | false | Hide from listings but allow direct access via slug | +| showFooter | boolean | - | Override footer display | +| footer | string | - | Custom footer markdown | +| showSocialFooter | boolean | - | Override social footer | + +### Example blog post + +```markdown +--- +title: "How to write a blog post" +description: "A guide to writing posts with frontmatter" +date: "2025-01-15" +slug: "how-to-write-a-blog-post" +published: true +tags: ["tutorial", "markdown"] +featured: true +featuredOrder: 1 +image: "/images/my-post.png" +excerpt: "Learn how to create blog posts" +authorName: "Your Name" +authorImage: "/images/authors/you.png" +--- + +Your content here... +``` + +## Page frontmatter + +Location: `content/pages/*.md` + +### Required fields + +| Field | Type | Description | +|-------|------|-------------| +| title | string | Page title | +| slug | string | URL path (must be unique) | +| published | boolean | true to show publicly | + +### Optional fields + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| order | number | - | Nav order (lower = first) | +| showInNav | boolean | true | Show in navigation menu | +| featured | boolean | false | Show in featured section | +| featuredOrder | number | - | Display order (lower = first) | +| image | string | - | Thumbnail/OG image for cards | +| showImageAtTop | boolean | false | Display image at top | +| excerpt | string | - | Short text for card view | +| authorName | string | - | Author display name | +| authorImage | string | - | Author avatar URL | +| layout | string | - | "sidebar" for docs-style | +| rightSidebar | boolean | true | Show right sidebar | +| aiChat | boolean | false | Enable AI chat | +| contactForm | boolean | false | Enable contact form | +| newsletter | boolean | - | Override newsletter signup | +| textAlign | string | "left" | "left", "center", "right" | +| showFooter | boolean | - | Override footer display | +| footer | string | - | Custom footer markdown | +| showSocialFooter | boolean | - | Override social footer | + +### Example page + +```markdown +--- +title: "About" +slug: "about" +published: true +order: 1 +showInNav: true +featured: true +featuredOrder: 2 +excerpt: "Learn about this site" +--- + +Page content here... +``` + +## Common patterns + +### Featured post on homepage + +```yaml +featured: true +featuredOrder: 1 +``` + +### Hero post on /blog page + +```yaml +blogFeatured: true +image: "/images/hero.png" +``` + +### Docs-style page with sidebar + +```yaml +layout: "sidebar" +rightSidebar: true +``` + +### Hide from navigation + +```yaml +showInNav: false +``` + +### Unlisted post + +```yaml +published: true +unlisted: true +``` + +## Docs section navigation + +Posts and pages can appear in the docs sidebar: + +| Field | Type | Description | +|-------|------|-------------| +| docsSection | boolean | Include in docs navigation | +| docsSectionGroup | string | Sidebar group name | +| docsSectionOrder | number | Order within group | +| docsSectionGroupOrder | number | Order of group itself | +| docsSectionGroupIcon | string | Phosphor icon name | +| docsLanding | boolean | Use as /docs landing page | + +### Example docs post + +```yaml +--- +title: "Getting Started" +slug: "getting-started" +published: true +docsSection: true +docsSectionGroup: "Quick Start" +docsSectionOrder: 1 +docsSectionGroupOrder: 1 +docsSectionGroupIcon: "Rocket" +layout: "sidebar" +--- +``` + +## Validation + +The sync script validates: + +- Required fields must be present +- `slug` must be unique +- `date` should be YYYY-MM-DD format +- `published` must be boolean + +Missing required fields will cause the file to be skipped with a warning. diff --git a/.opencode/skill/sync.md b/.opencode/skill/sync.md new file mode 100644 index 0000000..0e0b927 --- /dev/null +++ b/.opencode/skill/sync.md @@ -0,0 +1,126 @@ +--- +description: How the content sync system works +--- + +# Sync System Reference + +How the content sync system works in this markdown publishing framework. + +## Overview + +Content flows from markdown files to Convex database via sync scripts. Changes appear instantly because Convex provides real-time updates. + +``` +content/blog/*.md --+ + +--> npm run sync --> Convex DB --> Site +content/pages/*.md --+ +``` + +## Sync commands + +| Command | Environment | What it syncs | +|---------|-------------|---------------| +| `npm run sync` | Development | Posts + pages to dev Convex | +| `npm run sync:prod` | Production | Posts + pages to prod Convex | +| `npm run sync:discovery` | Development | AGENTS.md + llms.txt | +| `npm run sync:discovery:prod` | Production | AGENTS.md + llms.txt | +| `npm run sync:all` | Development | Everything | +| `npm run sync:all:prod` | Production | Everything | + +## How sync works + +### Content sync (sync-posts.ts) + +1. Reads all `.md` files from `content/blog/` and `content/pages/` +2. Parses frontmatter with `gray-matter` +3. Validates required fields (title, slug, etc.) +4. Calculates reading time if not provided +5. Calls Convex mutations to upsert content +6. Generates raw markdown files in `public/raw/` + +### Discovery sync (sync-discovery-files.ts) + +1. Reads site configuration from `src/config/siteConfig.ts` +2. Queries Convex for post/page counts +3. Updates `AGENTS.md` with current status +4. Generates `public/llms.txt` with API info + +## File locations + +| Script | Purpose | +|--------|---------| +| `scripts/sync-posts.ts` | Syncs markdown content | +| `scripts/sync-discovery-files.ts` | Updates discovery files | +| `scripts/import-url.ts` | Imports external URLs | + +## Environment variables + +| File | Used by | +|------|---------| +| `.env.local` | Development sync (default) | +| `.env.production.local` | Production sync | + +Both files contain `VITE_CONVEX_URL` pointing to the Convex deployment. + +## What gets synced + +### Posts (content/blog/) + +- Frontmatter fields (title, description, date, tags, etc.) +- Full markdown content +- Calculated reading time + +### Pages (content/pages/) + +- Frontmatter fields (title, slug, order, etc.) +- Full markdown content + +### Generated files (public/raw/) + +For each published post/page, a static markdown file is generated at `public/raw/{slug}.md`. Also generates `public/raw/index.md` listing all content. + +## Sync mutations + +The sync scripts call these Convex mutations: + +```typescript +// Posts +api.posts.syncPostsPublic({ posts: ParsedPost[] }) + +// Pages +api.pages.syncPagesPublic({ pages: ParsedPage[] }) +``` + +## Adding a new frontmatter field + +1. Add to interface in `scripts/sync-posts.ts` +2. Add to Convex schema in `convex/schema.ts` +3. Add to sync mutation in `convex/posts.ts` or `convex/pages.ts` +4. Add to return validators in queries +5. Run `npm run sync` to apply + +## Import from URL + +```bash +npm run import https://example.com/article +``` + +Requires `FIRECRAWL_API_KEY`. After import, run sync. + +## Troubleshooting + +### "VITE_CONVEX_URL not set" + +Run `npx convex dev` first to create `.env.local`. + +### Posts not appearing + +1. Check `published: true` in frontmatter +2. Verify required fields are present +3. Check Convex dashboard for errors +4. Run `npm run sync` again + +### Sync to wrong environment + +- `npm run sync` = development +- `npm run sync:prod` = production diff --git a/AGENTS.md b/AGENTS.md index 04dd670..10948b0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -19,10 +19,10 @@ Your content is instantly available to browsers, LLMs, and AI agents.. Write mar - **Site Name**: markdown - **Site Title**: markdown sync framework - **Site URL**: https://yoursite.example.com -- **Total Posts**: 18 +- **Total Posts**: 19 - **Total Pages**: 4 -- **Latest Post**: 2026-01-07 -- **Last Updated**: 2026-01-09T07:02:12.472Z +- **Latest Post**: 2026-01-10 +- **Last Updated**: 2026-01-10T23:49:21.881Z ## Tech stack diff --git a/CLAUDE.md b/CLAUDE.md index 251e7fb..7d1adef 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,7 +5,7 @@ Project instructions for Claude Code. ## Project context - + Markdown sync framework. Write markdown in `content/`, run sync commands, content appears instantly via Convex real-time database. Built for developers and AI agents. diff --git a/README.md b/README.md index a66506b..13fea80 100644 --- a/README.md +++ b/README.md @@ -43,13 +43,18 @@ npm run sync # dev npm run sync:prod # production ``` -**MCP Server:** The site includes an HTTP-based Model Context Protocol (MCP) server at `/mcp` for AI tool integration. Connect Cursor, Claude Desktop, and other MCP clients to access blog content programmatically. See [How to Use the MCP Server](https://www.markdown.fast/how-to-use-mcp-server) for setup instructions. - ## Documentation -- **[Setup Guide](https://www.markdown.fast/setup-guide)** - Complete fork and deployment guide -- **[Configuration Guide](https://www.markdown.fast/fork-configuration-guide)** - Automated or manual fork setup -- **[Full Documentation](https://www.markdown.fast/docs)** - Docs for all features and configuration +Full documentation is available at **[markdown.fast/docs](https://www.markdown.fast/docs)** + +### Guides + +- [Setup Guide](https://www.markdown.fast/setup-guide) - Complete fork and deployment guide +- [Fork Configuration Guide](https://www.markdown.fast/fork-configuration-guide) - Automated or manual fork setup +- [Dashboard Guide](https://www.markdown.fast/how-to-use-the-markdown-sync-dashboard) - Content management and site configuration +- [WorkOS Setup](https://www.markdown.fast/how-to-setup-workos) - Authentication for dashboard protection +- [MCP Server](https://www.markdown.fast/how-to-use-mcp-server) - AI tool integration for Cursor and Claude Desktop +- [AgentMail Setup](https://www.markdown.fast/blog/how-to-use-agentmail) - Newsletter and contact form integration ### AI Development Tools @@ -57,6 +62,7 @@ The project includes documentation optimized for AI coding assistants: - **CLAUDE.md** - Project instructions for Claude Code CLI with workflows, commands, and conventions - **AGENTS.md** - General AI agent instructions for understanding the codebase structure +- **llms.txt** - AI agent discovery file at `/llms.txt` - **.claude/skills/** - Focused skill documentation: - `frontmatter.md` - Complete frontmatter syntax and all field options - `convex.md` - Convex patterns specific to this app @@ -64,144 +70,23 @@ The project includes documentation optimized for AI coding assistants: These files are automatically updated during `npm run sync:discovery` with current site statistics. +## Features + +See the full feature list on the [About page](https://www.markdown.fast/about). + +Key features include real-time sync, four theme options, full-text search, analytics dashboard, MCP server for AI tools, newsletter integration, and SEO optimization with RSS feeds, sitemaps, and structured data. + ## Fork Configuration -After forking this project, you have two options to configure your site: - -### Option 1: Automated (Recommended) - -Run a single command to configure all files automatically: +After forking, run the automated configuration: ```bash -# Copy the example config cp fork-config.json.example fork-config.json - -# Edit with your site information -# Open fork-config.json and update the values - -# Apply all changes +# Edit fork-config.json with your site info npm run configure ``` -This updates all 11 configuration files in one step. - -### Option 2: Manual - -Follow the step-by-step guide in `FORK_CONFIG.md` to update each file manually. This guide includes code snippets and an AI agent prompt for assistance. - -## Features - -- Markdown-based blog posts with frontmatter -- Syntax highlighting for code blocks -- Four theme options: Dark, Light, Tan (default), Cloud -- Real-time data with Convex -- Fully responsive design -- Real-time analytics at `/stats` with visitor map -- Full text search with Command+K shortcut -- Featured section with list/card view toggle -- Logo gallery with continuous marquee scroll or static grid -- GitHub contributions graph with year navigation -- Static raw markdown files at `/raw/{slug}.md` -- Dedicated blog page with configurable navigation order and featured layout -- Markdown writing page at `/write` with frontmatter reference -- AI Agent chat (powered by Anthropic Claude) on Write page and optionally in right sidebar -- Tag pages at `/tags/[tag]` with view mode toggle -- Related posts based on shared tags -- Footer component with markdown support and images -- Social footer with customizable social links and copyright -- Right sidebar for CopyPageDropdown and AI chat -- Contact forms on any page or post -- Newsletter subscriptions and admin UI -- Homepage post limit with optional "read more" link -- Blog page featured layout with hero post -- Show image at top of posts/pages -- Version control with 3-day history for posts and pages (diff view, one-click restore) - -### SEO and Discovery - -- RSS feeds at `/rss.xml` and `/rss-full.xml` (with full content) -- Dynamic sitemap at `/sitemap.xml` -- JSON-LD structured data for Google rich results -- Open Graph and Twitter Card meta tags -- `robots.txt` with AI crawler rules -- `llms.txt` for AI agent discovery - -### AI and LLM Access - -- `/api/posts` - JSON list of all posts for agents -- `/api/post?slug=xxx` - Single post JSON or markdown -- `/api/export` - Batch export all posts with full content -- `/raw/{slug}.md` - Static raw markdown files for each post and page -- `/rss-full.xml` - Full content RSS for LLM ingestion -- `/.well-known/ai-plugin.json` - AI plugin manifest -- `/openapi.yaml` - OpenAPI 3.0 specification -- Copy Page dropdown for sharing to ChatGPT, Claude, Perplexity (uses raw markdown URLs for better AI parsing) - -### MCP Server - -The site includes an HTTP-based Model Context Protocol (MCP) server for AI tool integration. It allows AI assistants like Cursor and Claude Desktop to access blog content programmatically. - -**Endpoint:** `https://www.markdown.fast/mcp` - -**Features:** - -- 24/7 availability via Netlify Edge Functions (no local machine required) -- Public access with rate limiting (50 req/min per IP) -- Optional API key for higher limits (1000 req/min) -- Seven tools: `list_posts`, `get_post`, `list_pages`, `get_page`, `get_homepage`, `search_content`, `export_all` - -**Configuration:** - -Add to your Cursor config (`~/.cursor/mcp.json`): - -```json -{ - "mcpServers": { - "markdown-fast": { - "url": "https://www.markdown.fast/mcp" - } - } -} -``` - -**For forks:** Set `VITE_CONVEX_URL` in Netlify environment variables. Optionally set `MCP_API_KEY` for authenticated access. - -See [How to Use the MCP Server](https://www.markdown.fast/how-to-use-mcp-server) for full documentation. - -### Content Import - -- Import external URLs as markdown posts using Firecrawl -- Run `npm run import ` to scrape and create draft posts locally -- Then sync to dev or prod with `npm run sync` or `npm run sync:prod` - -### Dashboard - -The framework includes a centralized dashboard at `/dashboard` for managing content and configuring your site. Features include: - -- Content management: Edit posts and pages with live preview -- Version control: View history, compare diffs, restore previous versions (3-day retention) -- Sync commands: Run sync operations from the browser -- Site configuration: Configure all settings via UI -- Newsletter management: Integrated subscriber and email management -- AI Agent: Writing assistance powered by Claude -- Analytics: Real-time stats dashboard - -WorkOS authentication is recommended so no one has access to your dashboard if it's enabled. Configure it in `siteConfig.ts` to protect the dashboard in production. See [How to use the Markdown sync dashboard](https://www.markdown.fast/how-to-use-the-markdown-sync-dashboard) and [How to setup WorkOS](https://www.markdown.fast/how-to-setup-workos) for details. - -### Newsletter and Email - -The framework includes AgentMail integration for newsletter subscriptions and contact forms. Features include: - -- Newsletter subscriptions and sending -- Contact forms on any post or page -- Automated weekly digests (Sundays 9am UTC) -- Developer notifications (new subscriber alerts, weekly stats summaries) -- Admin UI for subscriber management at `/newsletter-admin` -- CLI tools for sending newsletters and stats -- Custom email composition with markdown support -- Email statistics dashboard - -See the [AgentMail setup guide](https://www.markdown.fast/blog/how-to-use-agentmail) for configuration instructions. +See the [Fork Configuration Guide](https://www.markdown.fast/fork-configuration-guide) for detailed instructions. ## Getting Started @@ -234,370 +119,31 @@ npm run dev 4. Open http://localhost:5173 -## Writing Blog Posts - -Create markdown files in `content/blog/` with frontmatter: - -## Static Pages (Optional) - -Create optional pages like About, Projects, or Contact in `content/pages/`: - -```markdown ---- -title: "About" -slug: "about" -published: true -order: 1 ---- - -Your page content here... -``` - -Pages appear as navigation links in the top right, next to the theme toggle. The `order` field controls display order (lower numbers first). - -```markdown ---- -title: "Your Post Title" -description: "A brief description" -date: "2025-01-15" -slug: "your-post-slug" -published: true -tags: ["tag1", "tag2"] -readTime: "5 min read" -image: "/images/my-header.png" -excerpt: "Short text for featured cards" ---- - -Your markdown content here... -``` - -## Logo Gallery - -The homepage includes a scrolling logo gallery with sample logos. Configure in `siteConfig`: - -### Disable the gallery - -```typescript -logoGallery: { - enabled: false, - // ... -}, -``` - -## GitHub Contributions Graph - -Display your GitHub contribution activity on the homepage. Configure in `src/config/siteConfig.ts`: - -```typescript -gitHubContributions: { - enabled: true, // Set to false to hide - username: "yourusername", // Your GitHub username - showYearNavigation: true, // Show arrows to navigate between years - linkToProfile: true, // Click graph to open GitHub profile - title: "GitHub Activity", // Optional title above the graph -}, -``` - -## Visitor Map - -Display real-time visitor locations on a world map on the stats page. Uses Netlify's built-in geo detection (no third-party API needed). Privacy friendly: only stores city, country, and coordinates. No IP addresses stored. - -Configure in `src/config/siteConfig.ts`: - -```typescript -visitorMap: { - enabled: true, // Set to false to hide the visitor map - title: "Live Visitors", // Optional title above the map -}, -``` - -## Syncing Posts - -Posts are synced to Convex. The sync script reads markdown files from `content/blog/` and `content/pages/`, then uploads them to your Convex database. - -### Environment Files - -| File | Purpose | -| ----------------------- | -------------------------------------------------------- | -| `.env.local` | Development deployment URL (created by `npx convex dev`) | -| `.env.production.local` | Production deployment URL (create manually) | - -Both files are gitignored. Each developer creates their own. - -### Sync Commands - -Sync command scripts are located in `scripts/` (sync-posts.ts, sync-discovery-files.ts). - -**Development:** - -- `npm run sync` - Sync markdown content to development Convex -- `npm run sync:discovery` - Update discovery files (AGENTS.md, llms.txt) with development data -- `npm run sync:all` - Sync content + discovery files together - -**Production:** - -- `npm run sync:prod` - Sync markdown content to production Convex -- `npm run sync:discovery:prod` - Update discovery files with production data -- `npm run sync:all:prod` - Sync content + discovery files together - -**Export dashboard content:** - -- `npm run export:db` - Export dashboard posts/pages to content folders (development) -- `npm run export:db:prod` - Export dashboard posts/pages (production) - -**Development sync:** - -```bash -npm run sync -``` - -**Production sync:** - -First, create `.env.production.local` with your production Convex URL: - -``` -VITE_CONVEX_URL=https://your-prod-deployment.convex.cloud -``` - -Then sync: - -```bash -npm run sync:prod -``` - ## Deployment ### Netlify [![Netlify Status](https://api.netlify.com/api/v1/badges/d8c4d83d-7486-42de-844b-6f09986dc9aa/deploy-status)](https://app.netlify.com/projects/markdowncms/deploys) -For detailed setup, see the [Convex Netlify Deployment Guide](https://docs.convex.dev/production/hosting/netlify). - 1. Deploy Convex functions to production: ```bash npx convex deploy ``` -Note the production URL (e.g., `https://your-deployment.convex.cloud`). - 2. Connect your repository to Netlify 3. Configure build settings: - Build command: `npm ci --include=dev && npx convex deploy --cmd 'npm run build'` - Publish directory: `dist` 4. Add environment variables in Netlify dashboard: - `CONVEX_DEPLOY_KEY` - Generate from [Convex Dashboard](https://dashboard.convex.dev) > Project Settings > Deploy Key - - `VITE_CONVEX_URL` - Your production Convex URL (e.g., `https://your-deployment.convex.cloud`) + - `VITE_CONVEX_URL` - Your production Convex URL -The `CONVEX_DEPLOY_KEY` deploys functions at build time. The `VITE_CONVEX_URL` is required for edge functions (RSS, sitemap, API) to proxy requests at runtime. - -**Build issues?** Netlify sets `NODE_ENV=production` which skips devDependencies. The `--include=dev` flag fixes this. See [netlify-deploy-fix.md](./netlify-deploy-fix.md) for detailed troubleshooting. - -## Project Structure - -``` -markdown-site/ -├── content/blog/ # Markdown blog posts -├── convex/ # Convex backend -│ ├── http.ts # HTTP endpoints (sitemap, API, RSS) -│ ├── posts.ts # Post queries and mutations -│ ├── rss.ts # RSS feed generation -│ └── schema.ts # Database schema -├── netlify/ # Netlify edge functions -│ └── edge-functions/ -│ ├── rss.ts # RSS feed proxy -│ ├── sitemap.ts # Sitemap proxy -│ ├── api.ts # API endpoint proxy -│ └── botMeta.ts # OG crawler detection -├── public/ # Static assets -│ ├── images/ # Blog images and OG images -│ ├── robots.txt # Crawler rules -│ └── llms.txt # AI agent discovery -├── scripts/ # Build scripts -└── src/ - ├── components/ # React components - ├── context/ # Theme context - ├── pages/ # Page components - └── styles/ # Global CSS -``` - -## Scripts Reference - -| Script | Description | -| ----------------------------- | ---------------------------------------------- | -| `npm run dev` | Start Vite dev server | -| `npm run dev:convex` | Start Convex dev backend | -| `npm run sync` | Sync posts to dev deployment | -| `npm run sync:prod` | Sync posts to production deployment | -| `npm run sync:discovery` | Update discovery files (development) | -| `npm run sync:discovery:prod` | Update discovery files (production) | -| `npm run sync:all` | Sync content + discovery (development) | -| `npm run sync:all:prod` | Sync content + discovery (production) | -| `npm run import` | Import URL as local markdown draft (then sync) | -| `npm run build` | Build for production | -| `npm run deploy` | Sync + build (for manual deploys) | -| `npm run deploy:prod` | Deploy Convex functions + sync to production | +For detailed setup, see the [Convex Netlify Deployment Guide](https://docs.convex.dev/production/hosting/netlify) and [netlify-deploy-fix.md](./netlify-deploy-fix.md) for troubleshooting. ## Tech Stack -- React 18 -- TypeScript -- Vite -- Convex -- react-markdown -- react-syntax-highlighter -- date-fns -- lucide-react -- @phosphor-icons/react -- Netlify - -## Search - -Press `Command+K` (Mac) or `Ctrl+K` (Windows/Linux) to open the search modal. The search uses Convex full text search to find posts and pages by title and content. - -Features: - -- Real-time results as you type -- Keyboard navigation (arrow keys, Enter, Escape) -- Result snippets with context around matches -- Distinguishes between posts and pages -- Works with all four themes - -The search icon appears in the top navigation bar next to the theme toggle. - -## Real-time Stats - -The `/stats` page shows real-time analytics powered by Convex: - -- **Active visitors**: Current visitors on the site with per-page breakdown -- **Total page views**: All-time view count -- **Unique visitors**: Based on anonymous session IDs -- **Views by page**: List of all pages sorted by view count - -Stats update automatically via Convex subscriptions. No page refresh needed. - -How it works: - -- Page views are recorded as event records (not counters) to avoid write conflicts -- Active sessions use heartbeat presence (30s interval, 2min timeout) -- A cron job cleans up stale sessions every 5 minutes -- No PII stored (only anonymous session UUIDs) - -## API Endpoints - -| Endpoint | Description | -| ------------------------------ | ----------------------------------- | -| `/stats` | Real-time site analytics | -| `/rss.xml` | RSS feed with post descriptions | -| `/rss-full.xml` | RSS feed with full post content | -| `/sitemap.xml` | Dynamic XML sitemap | -| `/api/posts` | JSON list of all posts | -| `/api/post?slug=xxx` | Single post as JSON | -| `/api/post?slug=xxx&format=md` | Single post as markdown | -| `/api/export` | Batch export all posts with content | -| `/meta/post?slug=xxx` | Open Graph HTML for crawlers | -| `/.well-known/ai-plugin.json` | AI plugin manifest | -| `/openapi.yaml` | OpenAPI 3.0 specification | -| `/llms.txt` | AI agent discovery | - -## Import External Content - -Use Firecrawl to import articles from external URLs as markdown posts: - -```bash -npm run import https://example.com/article -``` - -This will: - -1. Scrape the URL using Firecrawl API -2. Convert to clean markdown -3. Create a draft post in `content/blog/` locally -4. Add frontmatter with title, description, and today's date - -**Setup:** - -1. Get an API key from [firecrawl.dev](https://firecrawl.dev) -2. Add to `.env.local`: - -``` -FIRECRAWL_API_KEY=fc-your-api-key -``` - -**Why no `npm run import:prod`?** The import command only creates local markdown files. It does not interact with Convex. After importing, sync to your target environment: - -- `npm run sync` for development -- `npm run sync:prod` for production -- Use `npm run sync:all` or `npm run sync:all:prod` to sync content and update discovery files together - -Imported posts are created as drafts (`published: false`). Review, edit, set `published: true`, then sync. - -## Theme Configuration - -The default theme is Tan. Users can cycle through themes using the toggle: - -- Dark (Moon icon) -- Light (Sun icon) -- Tan (Half icon) - default -- Cloud (Cloud icon) - -To change the default theme, edit `src/context/ThemeContext.tsx`: - -```typescript -const DEFAULT_THEME: Theme = "tan"; // Change to "dark", "light", or "cloud" -``` - -## Font Configuration - -The blog uses a serif font (New York) by default. To switch fonts, edit `src/styles/global.css`: - -### Font Sizes - -All font sizes use CSS variables defined in `:root`. Customize sizes by editing the variables: - -## Write Page - -A public markdown writing page at `/write` (not linked in navigation). - -Access directly at `yourdomain.com/write`. Content is stored in localStorage only (not synced to database). Use it to draft posts, then copy the content to a markdown file in `content/blog/` or `content/pages/` and run `npm run sync`. - -**Features:** - -- Three-column Cursor docs-style layout -- Content type selector (Blog Post or Page) with dynamic frontmatter templates -- Frontmatter field reference with individual copy buttons -- Font switcher (Serif/Sans-serif/Monospace) -- Theme toggle matching site themes -- Word, line, and character counts -- localStorage persistence for content, type, and font preference - -**AI Agent mode:** When `siteConfig.aiChat.enabledOnWritePage` is enabled, a toggle button appears in the Actions section. Clicking it replaces the textarea with the AI Agent chat interface. The page title changes to "Agent" when in chat mode. Requires `ANTHROPIC_API_KEY` environment variable in Convex. - -## AI Agent Chat - -The site includes an AI writing assistant (Agent) powered by Anthropic Claude API. Agent can be enabled in two places: - -**1. Write page (`/write`):** Enable via `siteConfig.aiChat.enabledOnWritePage`. Toggle replaces textarea with Agent chat interface. - -**2. Right sidebar on posts/pages:** Enable via `aiChat: true` frontmatter field (requires `rightSidebar: true` and `siteConfig.aiChat.enabledOnContent: true`). - -**Environment variables required:** - -- `ANTHROPIC_API_KEY` (required): Your Anthropic API key -- `CLAUDE_PROMPT_STYLE`, `CLAUDE_PROMPT_COMMUNITY`, `CLAUDE_PROMPT_RULES` (optional): Split system prompts -- `CLAUDE_SYSTEM_PROMPT` (optional): Single system prompt fallback - -Set these in [Convex Dashboard](https://dashboard.convex.dev) > Settings > Environment Variables. - -**Features:** - -- Per-page chat history stored in Convex (per-session, per-context) -- Page content can be provided as context for AI responses -- Markdown rendering for AI responses with copy functionality -- User-friendly error messages when API key is not configured -- Anonymous session authentication using localStorage -- Chat history limited to last 20 messages for efficiency -- System prompt configurable via environment variables (split or single prompt) +React 18, TypeScript, Vite, Convex, Netlify ## Source diff --git a/TASK.md b/TASK.md index de6b7d0..b36b7c4 100644 --- a/TASK.md +++ b/TASK.md @@ -4,10 +4,52 @@ ## Current Status -v2.16.3 ready. Social icons in hamburger menu and Dashboard Config alignment. +v2.18.1 ready. README cleanup with docs links. ## Completed +- [x] README.md streamlined with docs links (v2.18.1) + - [x] Reduced from 609 lines to 155 lines + - [x] Added Documentation section with links to markdown.fast/docs + - [x] Added Guides subsection with links to specific doc pages + - [x] Simplified Features section with link to About page + - [x] Simplified Fork Configuration with doc link + - [x] Removed detailed sections covered by live docs + +- [x] OpenCode AI development tool integration (v2.18.0) + - [x] Created `.opencode/` directory structure + - [x] Created `opencode.json` root configuration + - [x] Created 3 agents: orchestrator, content-writer, sync-manager + - [x] Created 6 commands: sync, sync-prod, create-post, create-page, import, deploy + - [x] Adapted 4 skills from .claude/skills/: frontmatter, sync, convex, content + - [x] Created sync-helper plugin for content change reminders + - [x] Created docs-opencode.md documentation page + - [x] Updated files.md with OpenCode Configuration section + - [x] Works alongside Claude Code and Cursor without conflicts + + +- [x] ConvexFS Media Library with Bunny CDN (v2.17.0) + - [x] Installed convex-fs package and configured Convex component + - [x] Created convex/fs.ts with Bunny CDN configuration + - [x] Created convex/files.ts with file mutations and queries + - [x] Added ConvexFS routes to convex/http.ts + - [x] Created MediaLibrary component with upload, copy, delete + - [x] Added bulk select and delete functionality + - [x] Enhanced ImageUploadModal with Media Library tab + - [x] Added size presets (Original, Large, Medium, Small, Thumbnail, Custom) + - [x] Added image dimensions display with aspect ratio + - [x] Added file expiration support via setFileExpiration action + - [x] Created docs-media-setup.md with ConvexFS documentation links + - [x] Added ~400 lines of CSS for media library and modal styles + +- [x] AI image generation download and copy options (v2.16.4) + - [x] Added Download button to save generated image to computer + - [x] Added MD button to copy Markdown code to clipboard + - [x] Added HTML button to copy HTML code to clipboard + - [x] Added code preview section showing Markdown and HTML snippets + - [x] Filename generated from prompt (sanitized and truncated) + - [x] Added CSS styles for action buttons and code preview + - [x] Social icons in hamburger menu and Dashboard Config (v2.16.3) - [x] Added social icons to MobileMenu below navigation links - [x] Removed social icons from mobile header (now only in hamburger menu) diff --git a/changelog.md b/changelog.md index fa4ae32..6dd8cfe 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,108 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.18.1] - 2026-01-10 + +### Changed + +- README.md streamlined from 609 lines to 155 lines + - Removed detailed feature documentation (now links to live docs) + - Kept sync commands, setup, and Netlify deployment sections + - Added Documentation section with links to markdown.fast/docs + - Added Guides subsection with links to specific doc pages + - Simplified Features section with link to About page + - Simplified Fork Configuration to quick commands with doc link + +## [2.18.0] - 2026-01-10 + +### Added + +- OpenCode AI development tool integration + - Full `.opencode/` directory structure for OpenCode CLI compatibility + - 3 specialized agents: orchestrator, content-writer, sync-manager + - 6 commands: /sync, /sync-prod, /create-post, /create-page, /import, /deploy + - 4 skills: frontmatter, sync, convex, content + - sync-helper plugin for content change reminders + - Works alongside Claude Code and Cursor without conflicts + +- OpenCode documentation page at /docs-opencode + - How OpenCode integration works + - Directory structure reference + - Command and agent descriptions + - Getting started guide + +### Technical + +- `opencode.json` - Root OpenCode project configuration +- `.opencode/config.json` - OpenCode app configuration +- `.opencode/agent/orchestrator.md` - Main routing agent +- `.opencode/agent/content-writer.md` - Content creation specialist +- `.opencode/agent/sync-manager.md` - Sync and deployment specialist +- `.opencode/command/sync.md` - /sync command definition +- `.opencode/command/sync-prod.md` - /sync-prod command +- `.opencode/command/create-post.md` - /create-post command +- `.opencode/command/create-page.md` - /create-page command +- `.opencode/command/import.md` - /import command +- `.opencode/command/deploy.md` - /deploy command +- `.opencode/skill/frontmatter.md` - Frontmatter reference (adapted from .claude/skills/) +- `.opencode/skill/sync.md` - Sync system reference +- `.opencode/skill/convex.md` - Convex patterns reference +- `.opencode/skill/content.md` - Content management guide +- `.opencode/plugin/sync-helper.ts` - Minimal reminder plugin +- `content/pages/docs-opencode.md` - Documentation page +- `files.md` - Added OpenCode Configuration section + +## [2.17.0] - 2026-01-10 + +### Added + +- ConvexFS Media Library with Bunny CDN integration + - Upload images via drag-and-drop or click to upload + - Copy as Markdown, HTML, or direct URL + - Bulk select and delete multiple images + - File size display and pagination + - Configuration warning when Bunny CDN not configured + +- Enhanced Image Insert Modal in Write Post/Page + - Two tabs: "Upload New" and "Media Library" for selecting existing images + - Image dimensions display (original size with aspect ratio) + - Size presets: Original, Large (1200px), Medium (800px), Small (400px), Thumbnail (200px), Custom + - Custom dimensions input with automatic aspect ratio preservation + - Alt text field for accessibility + - Calculated dimensions shown before insert + +- File expiration support via ConvexFS + - `setFileExpiration` action to set time-based auto-deletion + - Pass `expiresInMs` for automatic cleanup after specified time + - Pass `null` to remove expiration and make file permanent + +### Technical + +- `convex/convex.config.ts` - Added ConvexFS component registration +- `convex/fs.ts` - ConvexFS instance with Bunny CDN configuration, conditional instantiation +- `convex/files.ts` - File mutations/queries: commitFile, listFiles, deleteFile, deleteFiles, setFileExpiration, isConfigured +- `convex/http.ts` - ConvexFS routes for /fs/upload and /fs/blobs/{blobId} +- `src/components/MediaLibrary.tsx` - Media library gallery with bulk select/delete +- `src/components/ImageUploadModal.tsx` - Enhanced modal with library selection and size presets +- `src/styles/global.css` - Added ~400 lines for media library and image modal styles +- `content/pages/docs-media-setup.md` - Setup documentation with ConvexFS links + +## [2.16.4] - 2026-01-10 + +### Added + +- AI image generation download and copy options + - Download button to save generated image to computer + - MD button to copy Markdown code (`![prompt](url)`) to clipboard + - HTML button to copy HTML code (`prompt`) to clipboard + - Code preview section showing both Markdown and HTML snippets + - Filename generated from prompt (sanitized and truncated) + +### Technical + +- `src/pages/Dashboard.tsx` - Added copiedFormat state, getMarkdownCode/getHtmlCode helpers, handleCopyCode, handleDownloadImage functions, updated generated image display JSX +- `src/styles/global.css` - Added CSS for .ai-image-actions, .ai-image-action-btn, .ai-image-code-preview, .ai-image-code-block + ## [2.16.3] - 2026-01-10 ### Added diff --git a/content/blog/docs-opencode.md b/content/blog/docs-opencode.md new file mode 100644 index 0000000..5f59636 --- /dev/null +++ b/content/blog/docs-opencode.md @@ -0,0 +1,195 @@ +--- +title: "OpenCode Integration" +slug: "docs-opencode" +date: "2026-01-10" +published: true +tags: ["opencode", "plugins", "terminal"] +readTime: "4 min read" +order: 2 +showInNav: false +layout: "sidebar" +featuredOrder: 2 +blogFeatured: true +rightSidebar: true +showImageAtTop: false +image: /images/opencode.png +authorName: "Markdown" +authorImage: "/images/authors/markdown.png" +showFooter: true +docsSection: true +docsSectionOrder: 6 +docsSectionGroup: "Setup" +docsSectionGroupIcon: "Rocket" +--- + +## OpenCode Integration + +OpenCode is an AI-first development tool that works alongside Claude Code and Cursor. This framework includes full OpenCode support with agents, commands, skills, and plugins. + +--- + +### How OpenCode works + +``` ++------------------+ +-------------------+ +------------------+ +| User request |--->| Orchestrator |--->| Specialist | +| "Create a post" | | Agent routes | | Agent executes | +| | | to specialist | | the task | ++------------------+ +-------------------+ +--------+---------+ + | + v ++------------------+ +-------------------+ +------------------+ +| Result |<---| Skills provide |<---| Commands wrap | +| returned to | | context and | | npm scripts | +| user | | documentation | | for quick access| ++------------------+ +-------------------+ +------------------+ +``` + +1. User makes a request in OpenCode +2. Orchestrator agent analyzes and routes the task +3. Specialist agent (content-writer or sync-manager) handles it +4. Skills provide documentation context +5. Commands offer quick keyboard shortcuts +6. Plugins automate common workflows + +### Directory structure + +OpenCode configuration lives in `.opencode/` alongside existing `.claude/` and `.cursor/` directories: + +``` +.opencode/ +├── config.json # OpenCode app configuration +├── agent/ +│ ├── orchestrator.md # Main routing agent +│ ├── content-writer.md # Content creation specialist +│ └── sync-manager.md # Sync and deployment specialist +├── command/ +│ ├── sync.md # /sync command +│ ├── sync-prod.md # /sync-prod command +│ ├── create-post.md # /create-post command +│ ├── create-page.md # /create-page command +│ ├── import.md # /import command +│ └── deploy.md # /deploy command +├── skill/ +│ ├── frontmatter.md # Frontmatter syntax reference +│ ├── sync.md # How sync works +│ ├── convex.md # Convex patterns +│ └── content.md # Content management guide +└── plugin/ + └── sync-helper.ts # Reminder plugin for content changes +``` + +### Available commands + +Quick commands accessible via `/` prefix in OpenCode: + +| Command | Purpose | +| -------------- | ---------------------------------------------- | +| `/sync` | Sync markdown content to development Convex | +| `/sync-prod` | Sync markdown content to production Convex | +| `/create-post` | Create a new blog post with proper frontmatter | +| `/create-page` | Create a new static page | +| `/import` | Import content from an external URL | +| `/deploy` | Full deployment workflow to production | + +### Agents + +Three specialized agents handle different types of tasks: + +**Orchestrator** (primary agent) + +- Routes tasks to appropriate specialists +- Handles general code changes directly +- Coordinates multi-step workflows + +**Content Writer** (subagent) + +- Creates blog posts and pages +- Validates frontmatter +- Knows content directory structure +- Reminds you to run sync + +**Sync Manager** (subagent) + +- Executes sync commands +- Handles dev vs prod environments +- Troubleshoots sync issues +- Manages deployments + +### Skills + +Skills provide documentation context to agents: + +| Skill | Purpose | +| ----------- | --------------------------------------------- | +| frontmatter | Complete frontmatter syntax for posts/pages | +| sync | How the sync system works end-to-end | +| convex | Convex patterns (indexes, mutations, queries) | +| content | Content management workflows | + +### Plugins + +The sync-helper plugin provides automation: + +```typescript +// When content files change, log a reminder +"file.edited": async (event) => { + if (event.path.startsWith("content/")) { + await client.app.log("info", "Content changed - run /sync to publish") + } +} +``` + +Plugins hook into OpenCode events like file edits and session idle states. + +### Getting started + +1. Install OpenCode CLI (see [opencode.ai](https://opencode.ai)) +2. Open your project directory +3. OpenCode automatically recognizes the `.opencode/` configuration +4. Use `/sync` after creating content + +### Compatibility + +This framework works with multiple AI development tools simultaneously: + +| Tool | Configuration Directory | +| ----------- | ----------------------- | +| OpenCode | `.opencode/` | +| Claude Code | `.claude/skills/` | +| Cursor | `.cursor/rules/` | + +All tools can be used without conflicts. Skills are duplicated (not shared) to ensure each tool works independently. + +### Configuration files + +| File | Purpose | +| ----------------------- | -------------------------- | +| `opencode.json` | Root project configuration | +| `.opencode/config.json` | App-level settings | + +Example `opencode.json`: + +```json +{ + "name": "markdown-publishing-framework", + "description": "AI-first markdown publishing with Convex real-time sync", + "plugin": [] +} +``` + +### When to use OpenCode vs other tools + +| Task | Recommended Tool | +| ---------------------- | ----------------------------- | +| Quick content creation | OpenCode (`/create-post`) | +| Complex code changes | Claude Code or Cursor | +| Sync workflows | OpenCode (`/sync`, `/deploy`) | +| Debugging | Any tool with your preference | + +### Resources + +- [OpenCode Documentation](https://opencode.ai/docs/) +- [OpenCode Plugins](https://opencode.ai/docs/plugins/) +- [OpenCode SDK](https://opencode.ai/docs/sdk/) +- [OpenCode Workflow Examples](https://github.com/CloudAI-X/opencode-workflow) diff --git a/content/pages/changelog-page.md b/content/pages/changelog-page.md index cb6bc1f..098e9b2 100644 --- a/content/pages/changelog-page.md +++ b/content/pages/changelog-page.md @@ -11,6 +11,114 @@ docsSectionOrder: 4 All notable changes to this project. +## v2.18.1 + +Released January 10, 2026 + +**README.md streamlined with docs links** + +Reduced README from 609 lines to 155 lines. Detailed documentation now lives on the live site at markdown.fast/docs. + +**Changes:** + +- Added Documentation section with link to markdown.fast/docs +- Added Guides subsection with links to Setup, Fork Configuration, Dashboard, WorkOS, MCP Server, and AgentMail guides +- Simplified Features section to brief summary with link to About page +- Simplified Fork Configuration to quick commands with doc link +- Kept sync commands, setup, and Netlify deployment sections +- Removed sections now covered by live docs + +**Files changed:** + +- `README.md` - Streamlined from 609 to 155 lines + +--- + +## v2.18.0 + +Released January 10, 2026 + +**OpenCode AI development tool integration** + +Added full OpenCode support to make the framework compatible with the OpenCode AI-first development tool. This works alongside existing Claude Code and Cursor integrations without conflicts. + +**Changes:** + +- Created `.opencode/` directory structure with config, agents, commands, skills, and plugins +- 3 specialized agents: orchestrator (main router), content-writer, sync-manager +- 6 commands: /sync, /sync-prod, /create-post, /create-page, /import, /deploy +- 4 skills adapted from .claude/skills/: frontmatter, sync, convex, content +- sync-helper plugin logs reminders when content files change +- Documentation page at /docs-opencode + +**Files changed:** + +- `opencode.json` - Root OpenCode project configuration +- `.opencode/config.json` - OpenCode app configuration +- `.opencode/agent/*.md` - Agent definitions (3 files) +- `.opencode/command/*.md` - Command definitions (6 files) +- `.opencode/skill/*.md` - Skill documentation (4 files) +- `.opencode/plugin/sync-helper.ts` - Reminder plugin +- `content/pages/docs-opencode.md` - Documentation page +- `files.md` - Added OpenCode Configuration section + +--- + +## v2.17.0 + +Released January 10, 2026 + +**ConvexFS Media Library with Bunny CDN integration** + +Added a full-featured media library for uploading and managing images in the dashboard. Images are stored on Bunny.net Edge Storage and served via their global CDN. The Image Insert modal now supports selecting from existing media and choosing image sizes. + +**Changes:** + +- Upload images via drag-and-drop or click to upload +- Copy images as Markdown, HTML, or direct URL +- Bulk select and delete multiple images at once +- Media Library tab in Image Insert modal for selecting existing images +- Size presets: Original, Large (1200px), Medium (800px), Small (400px), Thumbnail (200px), Custom +- Image dimensions displayed before insert with aspect ratio preserved +- File expiration support for automatic cleanup +- Configuration warning when Bunny CDN not set up + +**Files changed:** + +- `convex/convex.config.ts` - Added ConvexFS component +- `convex/fs.ts` - ConvexFS instance with Bunny CDN config +- `convex/files.ts` - File mutations and queries +- `convex/http.ts` - ConvexFS routes for upload/download +- `src/components/MediaLibrary.tsx` - Media library gallery +- `src/components/ImageUploadModal.tsx` - Enhanced modal with library and sizes +- `src/styles/global.css` - Media library and modal styles +- `content/pages/docs-media-setup.md` - Setup documentation + +--- + +## v2.16.4 + +Released January 10, 2026 + +**AI image generation download and copy options** + +Added download and copy functionality to the Dashboard AI Agent image generation section. After generating an image with Nano Banana, users can now download the image or copy Markdown/HTML code for embedding. + +**Changes:** + +- Download button saves generated image to computer with filename from prompt +- MD button copies Markdown code (`![prompt](url)`) to clipboard +- HTML button copies HTML code (`prompt`) to clipboard +- Code preview section displays both Markdown and HTML snippets +- Visual feedback when code is copied (button changes to "Copied") + +**Files changed:** + +- `src/pages/Dashboard.tsx` - Added download/copy handlers and updated UI +- `src/styles/global.css` - Added CSS for action buttons and code preview + +--- + ## v2.16.3 Released January 10, 2026 diff --git a/content/pages/docs-media-setup.md b/content/pages/docs-media-setup.md new file mode 100644 index 0000000..6960dcb --- /dev/null +++ b/content/pages/docs-media-setup.md @@ -0,0 +1,234 @@ +--- +title: "Media Upload Setup" +slug: docs-media-setup +published: true +showInNav: false +docsSection: true +docsSectionGroup: "Setup" +docsSectionOrder: 5 +docsSectionGroupOrder: 1 +docsSectionGroupIcon: "Gear" +--- + +Set up image uploads for the dashboard using ConvexFS and Bunny.net CDN. + +## ConvexFS Documentation + +This media library is powered by [ConvexFS](https://convexfs.dev/), a virtual filesystem for Convex with CDN integration. + +**Resources:** +- [ConvexFS Documentation](https://convexfs.dev/) - Complete setup guides, API reference, and examples +- [ConvexFS GitHub](https://github.com/jamwt/convex-fs) - Source code and issues + +For detailed setup instructions including app configuration, garbage collection, file expiration, and advanced features, follow the official ConvexFS documentation. + +## Overview + +The media library allows you to upload images directly from the dashboard and insert them into your content. Images are stored on Bunny.net Edge Storage and served via their global CDN for fast delivery. + +## Prerequisites + +- A Bunny.net account +- Convex project deployed +- Access to Convex Dashboard environment variables + +## Create Bunny.net account + +1. Go to [bunny.net](https://bunny.net) and sign up +2. Bunny offers a 14-day free trial with no credit card required +3. After trial, storage costs around $0.01/GB/month + +## Create storage zone + +1. In the Bunny Dashboard, go to **Storage** in the sidebar +2. Click **Add Storage Zone** +3. Configure your storage zone: + - **Name**: Choose a unique name (e.g., `mysite-media`) + - **Main Storage Region**: Select the region closest to your users + - **Replication Regions**: Optional, select additional regions for redundancy +4. Click **Create Storage Zone** + +## Set up Pull Zone (CDN) + +1. After creating the storage zone, click **Connected Pull Zone** +2. Create a new pull zone or connect to an existing one +3. Note your **Pull Zone Hostname** (e.g., `mysite-media.b-cdn.net`) +4. Enable **Token Authentication** under Security settings for signed URLs + +## Get API credentials + +From your Bunny Dashboard, collect these values: + +| Credential | Location | +|------------|----------| +| **API Key** | Account > API > API Key (password icon) | +| **Storage Zone Name** | Storage > [Your Zone] > Name | +| **CDN Hostname** | Storage > [Your Zone] > Connected Pull Zone hostname | +| **Token Key** | Pull Zone > Security > Token Authentication > Token Key | + +## Add environment variables + +### Local development (.env.local) + +Create or edit `.env.local` in your project root: + +```bash +BUNNY_API_KEY=your-api-key-here +BUNNY_STORAGE_ZONE=your-zone-name +BUNNY_CDN_HOSTNAME=your-zone.b-cdn.net +BUNNY_TOKEN_KEY=your-token-key +``` + +### Convex Dashboard + +1. Go to your project in the [Convex Dashboard](https://dashboard.convex.dev) +2. Navigate to **Settings** > **Environment Variables** +3. Add each of these variables: + - `BUNNY_API_KEY` + - `BUNNY_STORAGE_ZONE` + - `BUNNY_CDN_HOSTNAME` + - `BUNNY_TOKEN_KEY` (optional, for signed URLs) + +4. Click **Save** + +## Deploy changes + +After setting environment variables: + +```bash +npx convex deploy +``` + +This pushes the ConvexFS configuration with your Bunny credentials. + +## Test upload workflow + +1. Go to Dashboard > Create > Media +2. Click the upload zone or drag an image +3. Verify the image appears in the grid +4. Click **MD** to copy markdown and paste in a post + +## Using in content + +### Media Library + +Access the Media Library from Dashboard sidebar under **Create > Media**. From here you can: + +- Upload multiple images via drag-and-drop +- Copy markdown, HTML, or direct URL +- Select multiple images for bulk delete +- View file sizes + +### Bulk delete + +To delete multiple images at once: + +1. Click the **Select** button in the toolbar +2. Click images to select them (or use **Select All**) +3. Click **Delete (N)** to remove selected images +4. Confirm deletion in the dialog + +### Insert in editor + +When writing a post or page in the dashboard: + +1. Click the **Image** button in the toolbar +2. Choose **Upload New** to upload a new image, or **Media Library** to select an existing image +3. After selecting/uploading, you'll see: + - Image preview with original dimensions (e.g., 1920 x 1080px) + - Alt text field for accessibility + - Size presets: Original, Large (1200px), Medium (800px), Small (400px), Thumbnail (200px), or Custom +4. Choose a size - the display shows the calculated dimensions with aspect ratio preserved +5. Click **Insert** to add the image to your content + +### Size options + +| Preset | Max Width | Use Case | +|--------|-----------|----------| +| Original | Full size | High-resolution displays | +| Large | 1200px | Hero images, full-width content | +| Medium | 800px | Standard content images | +| Small | 400px | Thumbnails, sidebars | +| Thumbnail | 200px | Grids, galleries | +| Custom | Any | Specific dimensions needed | + +When using a size other than Original, images are inserted with explicit width/height attributes to prevent layout shift. + +### Frontmatter images + +For post header images, upload via Media Library then copy the URL: + +```yaml +--- +title: "My Post" +image: https://your-zone.b-cdn.net/uploads/12345-image.png +--- +``` + +## Configuration options + +In `siteConfig.ts`: + +```typescript +media: { + enabled: true, // Toggle media features + maxFileSize: 10, // Max file size in MB + allowedTypes: [ // Allowed MIME types + "image/png", + "image/jpeg", + "image/gif", + "image/webp" + ], +} +``` + +## Troubleshooting + +### "Upload failed" error + +- Verify all four environment variables are set in Convex Dashboard +- Check that the API key has write permissions +- Ensure the storage zone name matches exactly + +### Images not loading + +- Verify the CDN hostname is correct +- Check the Pull Zone is connected to your Storage Zone +- Try accessing the image URL directly in browser + +### 403 Forbidden errors + +- Token authentication may be blocking unsigned requests +- Either disable token auth in Pull Zone settings +- Or ensure `BUNNY_TOKEN_KEY` is set correctly + +### Files uploading but not visible + +- Check browser console for errors +- Verify the `/fs/upload` route is registered in `http.ts` +- Run `npx convex deploy` to sync configuration + +## File organization + +Uploaded files are stored at `/uploads/{timestamp}-{filename}`: + +``` +/uploads/ + 1704067200000-hero-image.png + 1704067201000-screenshot.jpg + 1704067202000-diagram.webp +``` + +Timestamps ensure unique filenames and provide chronological ordering. + +## Cost estimate + +Bunny.net pricing (as of 2024): + +| Service | Cost | +|---------|------| +| Storage | $0.01/GB/month | +| Bandwidth (EU/US) | $0.01/GB | +| Bandwidth (APAC) | $0.03/GB | + +For a typical blog with 1GB of images and 10GB monthly bandwidth: ~$0.11/month. diff --git a/convex/_generated/api.d.ts b/convex/_generated/api.d.ts index 5aa5f93..a942293 100644 --- a/convex/_generated/api.d.ts +++ b/convex/_generated/api.d.ts @@ -18,6 +18,8 @@ import type * as contactActions from "../contactActions.js"; import type * as crons from "../crons.js"; import type * as embeddings from "../embeddings.js"; import type * as embeddingsQueries from "../embeddingsQueries.js"; +import type * as files from "../files.js"; +import type * as fs from "../fs.js"; import type * as http from "../http.js"; import type * as importAction from "../importAction.js"; import type * as newsletter from "../newsletter.js"; @@ -48,6 +50,8 @@ declare const fullApi: ApiFromModules<{ crons: typeof crons; embeddings: typeof embeddings; embeddingsQueries: typeof embeddingsQueries; + files: typeof files; + fs: typeof fs; http: typeof http; importAction: typeof importAction; newsletter: typeof newsletter; @@ -682,4 +686,568 @@ export declare const components: { >; }; }; + fs: { + lib: { + commitFiles: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + files: Array<{ + attributes?: { expiresAt?: number }; + basis?: null | string; + blobId: string; + path: string; + }>; + }, + null + >; + copyByPath: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + destPath: string; + sourcePath: string; + }, + null + >; + deleteByPath: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + path: string; + }, + null + >; + getDownloadUrl: FunctionReference< + "action", + "internal", + { + blobId: string; + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + extraParams?: Record; + }, + string + >; + list: FunctionReference< + "query", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + paginationOpts: { + cursor: string | null; + endCursor?: string | null; + id?: number; + maximumBytesRead?: number; + maximumRowsRead?: number; + numItems: number; + }; + prefix?: string; + }, + { + continueCursor: string; + isDone: boolean; + page: Array<{ + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }>; + } + >; + moveByPath: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + destPath: string; + sourcePath: string; + }, + null + >; + registerPendingUpload: FunctionReference< + "mutation", + "internal", + { + blobId: string; + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + contentType: string; + size: number; + }, + null + >; + stat: FunctionReference< + "query", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + path: string; + }, + null | { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + } + >; + transact: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + ops: Array< + | { + dest: { basis?: null | string; path: string }; + op: "move"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + | { + dest: { basis?: null | string; path: string }; + op: "copy"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + | { + op: "delete"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + | { + attributes: { expiresAt?: null | number }; + op: "setAttributes"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + >; + }, + null + >; + }; + ops: { + basics: { + copyByPath: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + destPath: string; + sourcePath: string; + }, + null + >; + deleteByPath: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + path: string; + }, + null + >; + list: FunctionReference< + "query", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + paginationOpts: { + cursor: string | null; + endCursor?: string | null; + id?: number; + maximumBytesRead?: number; + maximumRowsRead?: number; + numItems: number; + }; + prefix?: string; + }, + { + continueCursor: string; + isDone: boolean; + page: Array<{ + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }>; + } + >; + moveByPath: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + destPath: string; + sourcePath: string; + }, + null + >; + stat: FunctionReference< + "query", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + path: string; + }, + null | { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + } + >; + }; + transact: { + commitFiles: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + files: Array<{ + attributes?: { expiresAt?: number }; + basis?: null | string; + blobId: string; + path: string; + }>; + }, + null + >; + transact: FunctionReference< + "mutation", + "internal", + { + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + ops: Array< + | { + dest: { basis?: null | string; path: string }; + op: "move"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + | { + dest: { basis?: null | string; path: string }; + op: "copy"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + | { + op: "delete"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + | { + attributes: { expiresAt?: null | number }; + op: "setAttributes"; + source: { + attributes?: { expiresAt?: number }; + blobId: string; + contentType: string; + path: string; + size: number; + }; + } + >; + }, + null + >; + }; + }; + transfer: { + getDownloadUrl: FunctionReference< + "action", + "internal", + { + blobId: string; + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + extraParams?: Record; + }, + string + >; + registerPendingUpload: FunctionReference< + "mutation", + "internal", + { + blobId: string; + config: { + blobGracePeriod?: number; + downloadUrlTtl?: number; + storage: + | { + apiKey: string; + cdnHostname: string; + region?: string; + storageZoneName: string; + tokenKey?: string; + type: "bunny"; + } + | { type: "test" }; + }; + contentType: string; + size: number; + }, + null + >; + }; + }; }; diff --git a/convex/convex.config.ts b/convex/convex.config.ts index 6370927..974edd7 100644 --- a/convex/convex.config.ts +++ b/convex/convex.config.ts @@ -1,6 +1,7 @@ import { defineApp } from "convex/server"; import aggregate from "@convex-dev/aggregate/convex.config.js"; import persistentTextStreaming from "@convex-dev/persistent-text-streaming/convex.config"; +import fs from "convex-fs/convex.config.js"; const app = defineApp(); @@ -16,5 +17,8 @@ app.use(aggregate, { name: "uniqueVisitors" }); // Persistent text streaming for real-time AI responses in Ask AI feature app.use(persistentTextStreaming); +// ConvexFS for file storage with Bunny CDN +app.use(fs); + export default app; diff --git a/convex/files.ts b/convex/files.ts new file mode 100644 index 0000000..46feda1 --- /dev/null +++ b/convex/files.ts @@ -0,0 +1,222 @@ +import { mutation, query, action } from "./_generated/server"; +import { v } from "convex/values"; +import { paginationOptsValidator } from "convex/server"; +import { fs, isBunnyConfigured } from "./fs"; + +// Allowed image MIME types +const ALLOWED_TYPES = [ + "image/png", + "image/jpeg", + "image/gif", + "image/webp", +]; + +// Max file size in bytes (10MB) +const MAX_FILE_SIZE = 10 * 1024 * 1024; + +// Check if media uploads are configured +export const isConfigured = query({ + args: {}, + handler: async () => { + return { configured: isBunnyConfigured }; + }, +}); + +// Commit uploaded file to storage path +export const commitFile = action({ + args: { + blobId: v.string(), + filename: v.string(), + contentType: v.string(), + size: v.number(), + width: v.optional(v.number()), + height: v.optional(v.number()), + }, + handler: async (ctx, args) => { + if (!fs) { + throw new Error( + "Media uploads not configured. Set BUNNY_API_KEY, BUNNY_STORAGE_ZONE, and BUNNY_CDN_HOSTNAME in Convex Dashboard." + ); + } + + // Validate file type + if (!ALLOWED_TYPES.includes(args.contentType)) { + throw new Error( + `Invalid file type: ${args.contentType}. Allowed: ${ALLOWED_TYPES.join(", ")}` + ); + } + + // Validate file size + if (args.size > MAX_FILE_SIZE) { + throw new Error( + `File too large: ${(args.size / 1024 / 1024).toFixed(2)}MB. Max: 10MB` + ); + } + + // Sanitize filename (remove special chars, preserve extension) + const sanitizedName = args.filename + .replace(/[^a-zA-Z0-9.-]/g, "-") + .replace(/-+/g, "-") + .toLowerCase(); + + // Create unique path with timestamp + const timestamp = Date.now(); + const path = `/uploads/${timestamp}-${sanitizedName}`; + + // Commit file to ConvexFS + await fs.commitFiles(ctx, [{ path, blobId: args.blobId }]); + + return { + path, + filename: sanitizedName, + contentType: args.contentType, + size: args.size, + width: args.width, + height: args.height, + }; + }, +}); + +// List files with pagination +export const listFiles = query({ + args: { + prefix: v.optional(v.string()), + paginationOpts: paginationOptsValidator, + }, + handler: async (ctx, args) => { + if (!fs) { + // Return empty results when not configured + return { + page: [], + isDone: true, + continueCursor: "", + }; + } + + return await fs.list(ctx, { + prefix: args.prefix ?? "/uploads/", + paginationOpts: args.paginationOpts, + }); + }, +}); + +// Get file info by path +export const getFileInfo = query({ + args: { path: v.string() }, + handler: async (ctx, args) => { + if (!fs) { + return null; + } + + const file = await fs.stat(ctx, args.path); + + if (!file) { + return null; + } + + return { + path: file.path, + blobId: file.blobId, + contentType: file.contentType, + size: file.size, + }; + }, +}); + +// Get signed download URL for a file +export const getDownloadUrl = action({ + args: { path: v.string() }, + handler: async (ctx, args) => { + if (!fs) { + throw new Error("Media uploads not configured"); + } + + const file = await fs.stat(ctx, args.path); + + if (!file) { + throw new Error("File not found"); + } + + // Generate time-limited signed URL + const url = await fs.getDownloadUrl(ctx, file.blobId); + + return { url, expiresIn: 3600 }; + }, +}); + +// Delete file by path +export const deleteFile = mutation({ + args: { path: v.string() }, + handler: async (ctx, args) => { + if (!fs) { + throw new Error("Media uploads not configured"); + } + + await fs.delete(ctx, args.path); + return { success: true }; + }, +}); + +// Delete multiple files at once +export const deleteFiles = mutation({ + args: { paths: v.array(v.string()) }, + handler: async (ctx, args) => { + if (!fs) { + throw new Error("Media uploads not configured"); + } + + let deleted = 0; + for (const path of args.paths) { + await fs.delete(ctx, path); + deleted++; + } + return { success: true, deleted }; + }, +}); + +// Set file expiration +export const setFileExpiration = action({ + args: { + path: v.string(), + expiresInMs: v.optional(v.number()), // null to remove expiration + }, + handler: async (ctx, args) => { + if (!fs) { + throw new Error("Media uploads not configured"); + } + + // Get current file info + const file = await fs.stat(ctx, args.path); + if (!file) { + throw new Error("File not found"); + } + + const expiresAt = args.expiresInMs ? Date.now() + args.expiresInMs : null; + + await fs.transact(ctx, [ + { + op: "setAttributes", + source: file, + attributes: { expiresAt }, + }, + ]); + + return { success: true, expiresAt }; + }, +}); + +// Get total file count +export const getFileCount = query({ + args: {}, + handler: async (ctx) => { + if (!fs) { + return 0; + } + + const result = await fs.list(ctx, { + prefix: "/uploads/", + paginationOpts: { numItems: 1000, cursor: null }, + }); + return result.page.length; + }, +}); diff --git a/convex/fs.ts b/convex/fs.ts new file mode 100644 index 0000000..57ce046 --- /dev/null +++ b/convex/fs.ts @@ -0,0 +1,34 @@ +import { ConvexFS } from "convex-fs"; +import { components } from "./_generated/api"; + +// Check if Bunny CDN is configured +// All three required env vars must be set +export const isBunnyConfigured = + !!process.env.BUNNY_API_KEY && + !!process.env.BUNNY_STORAGE_ZONE && + !!process.env.BUNNY_CDN_HOSTNAME; + +// ConvexFS instance with Bunny.net Edge Storage +// Set these environment variables in Convex Dashboard: +// - BUNNY_API_KEY: Your Bunny.net API key +// - BUNNY_STORAGE_ZONE: Storage zone name (e.g., "my-storage") +// - BUNNY_CDN_HOSTNAME: CDN hostname (e.g., "my-storage.b-cdn.net") +// - BUNNY_TOKEN_KEY: Optional, for signed URLs +// - BUNNY_REGION: Optional, storage region ("ny", "la", "sg", etc.) + +// Only create ConvexFS instance if configured +// This prevents validation errors when env vars are not set +export const fs = isBunnyConfigured + ? new ConvexFS(components.fs, { + storage: { + type: "bunny", + apiKey: process.env.BUNNY_API_KEY!, + storageZoneName: process.env.BUNNY_STORAGE_ZONE!, + cdnHostname: process.env.BUNNY_CDN_HOSTNAME!, + region: process.env.BUNNY_REGION, + tokenKey: process.env.BUNNY_TOKEN_KEY, + }, + downloadUrlTtl: 3600, // URL expiration in seconds (1 hour) + blobGracePeriod: 86400, // Orphaned blobs deleted after 24 hours + }) + : null; diff --git a/convex/http.ts b/convex/http.ts index e8d71dc..90b735e 100644 --- a/convex/http.ts +++ b/convex/http.ts @@ -1,8 +1,10 @@ import { httpRouter } from "convex/server"; import { httpAction } from "./_generated/server"; -import { api } from "./_generated/api"; +import { api, components } from "./_generated/api"; import { rssFeed, rssFullFeed } from "./rss"; import { streamResponse, streamResponseOptions } from "./askAI.node"; +import { registerRoutes } from "convex-fs"; +import { fs } from "./fs"; const http = httpRouter(); @@ -414,4 +416,24 @@ http.route({ handler: streamResponseOptions, }); +// ConvexFS routes for file uploads/downloads +// Only register routes when Bunny CDN is configured +// - POST /fs/upload - Upload files to Bunny.net storage +// - GET /fs/blobs/{blobId} - Returns 302 redirect to signed CDN URL +if (fs) { + registerRoutes(http, components.fs, fs, { + pathPrefix: "/fs", + uploadAuth: async () => { + // TODO: Add authentication check for production + // const identity = await ctx.auth.getUserIdentity(); + // return identity !== null; + return true; + }, + downloadAuth: async () => { + // Public downloads - images should be accessible to all + return true; + }, + }); +} + export default http; diff --git a/files.md b/files.md index 43e0483..4e5c474 100644 --- a/files.md +++ b/files.md @@ -11,7 +11,7 @@ A brief description of each file in the codebase. | `vite.config.ts` | Vite bundler configuration | | `index.html` | Main HTML entry with SEO meta tags, JSON-LD, critical CSS inline, and resource hints | | `netlify.toml` | Netlify deployment and Convex HTTP redirects | -| `README.md` | Project documentation | +| `README.md` | Project documentation (streamlined with links to docs)| | `AGENTS.md` | AI coding agent instructions (agents.md spec) | | `CLAUDE.md` | Claude Code instructions for project workflows | | `files.md` | This file - codebase structure | @@ -49,7 +49,7 @@ A brief description of each file in the codebase. | `TagPage.tsx` | Tag archive page displaying posts filtered by a specific tag. Includes view mode toggle (list/cards) with localStorage persistence | | `AuthorPage.tsx` | Author archive page displaying posts by a specific author. Includes view mode toggle (list/cards) with localStorage persistence. Author name clickable in posts links to this page. | | `Write.tsx` | Three-column markdown writing page with Cursor docs-style UI, frontmatter reference with copy buttons, theme toggle, font switcher (serif/sans/monospace), localStorage persistence, and optional AI Agent mode (toggleable via siteConfig.aiChat.enabledOnWritePage). When enabled, Agent replaces the textarea with AIChatView component. Includes scroll prevention when switching to Agent mode to prevent page jump. Title changes to "Agent" when in AI chat mode. | -| `Dashboard.tsx` | Centralized dashboard at `/dashboard` for content management and site configuration. **Cloud CMS Features:** Direct database save ("Save to DB" button), source tracking (Dashboard vs Synced badges), delete confirmation modal with warning, CRUD operations for dashboard-created content. **Content Management:** Posts and Pages list views with filtering, search, pagination, items per page selector, source badges, delete buttons (dashboard content only); Post/Page editor with markdown editor, live preview, "Save Changes" button, draggable/resizable frontmatter sidebar (200px-600px), independent scrolling, download markdown, export to markdown; Write Post/Page sections with three editor modes (Markdown, Rich Text via Quill, Preview), full-screen writing interface. **Rich Text Editor:** Quill-based WYSIWYG editor with toolbar (headers, bold, italic, lists, links, code, blockquote), automatic HTML-to-Markdown conversion on mode switch, theme-aware styling. **AI Agent:** Tab-based UI for Chat and Image Generation, multi-model selector (Claude Sonnet 4, GPT-4o, Gemini 2.0 Flash), image generation with Nano Banana models and aspect ratio selection. **Other Features:** Newsletter management (all Newsletter Admin features integrated); Content import (direct database import via Firecrawl, no file sync needed); Site configuration (Config Generator UI with Version Control toggle); Index HTML editor; Analytics (real-time stats dashboard); Sync commands UI with sync server integration; Header sync buttons; Dashboard search; Toast notifications; Command modal; Version history modal for viewing diffs and restoring previous versions; Mobile responsive design. Uses Convex queries for real-time data, localStorage for preferences, ReactMarkdown for preview. Optional WorkOS authentication via siteConfig.dashboard.requireAuth. | +| `Dashboard.tsx` | Centralized dashboard at `/dashboard` for content management and site configuration. **Cloud CMS Features:** Direct database save ("Save to DB" button), source tracking (Dashboard vs Synced badges), delete confirmation modal with warning, CRUD operations for dashboard-created content. **Content Management:** Posts and Pages list views with filtering, search, pagination, items per page selector, source badges, delete buttons (dashboard content only); Post/Page editor with markdown editor, live preview, "Save Changes" button, draggable/resizable frontmatter sidebar (200px-600px), independent scrolling, download markdown, export to markdown; Write Post/Page sections with three editor modes (Markdown, Rich Text via Quill, Preview), full-screen writing interface. **Rich Text Editor:** Quill-based WYSIWYG editor with toolbar (headers, bold, italic, lists, links, code, blockquote), automatic HTML-to-Markdown conversion on mode switch, theme-aware styling. **AI Agent:** Tab-based UI for Chat and Image Generation, multi-model selector (Claude Sonnet 4, GPT-4o, Gemini 2.0 Flash), image generation with Nano Banana models, aspect ratio selection, download button, and MD/HTML copy options with code preview. **Other Features:** Newsletter management (all Newsletter Admin features integrated); Content import (direct database import via Firecrawl, no file sync needed); Site configuration (Config Generator UI with Version Control toggle); Index HTML editor; Analytics (real-time stats dashboard); Sync commands UI with sync server integration; Header sync buttons; Dashboard search; Toast notifications; Command modal; Version history modal for viewing diffs and restoring previous versions; Mobile responsive design. Uses Convex queries for real-time data, localStorage for preferences, ReactMarkdown for preview. Optional WorkOS authentication via siteConfig.dashboard.requireAuth. | | `Callback.tsx` | OAuth callback handler for WorkOS authentication. Handles redirect from WorkOS after user login, exchanges authorization code for user information, then redirects to dashboard. Only used when WorkOS is configured. | | `NewsletterAdmin.tsx` | Three-column newsletter admin page for managing subscribers and sending newsletters. Left sidebar with navigation and stats, main area with searchable subscriber list, right sidebar with send newsletter panel and recent sends. Access at /newsletter-admin, configurable via siteConfig.newsletterAdmin. | @@ -80,6 +80,8 @@ A brief description of each file in the codebase. | `SocialFooter.tsx` | Social footer component with social icons on left (GitHub, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, Discord, Website) and copyright on right. Configurable via siteConfig.socialFooter. Shows below main footer on homepage, blog posts, and pages. Supports frontmatter override via showSocialFooter: true/false. Auto-updates copyright year. Exports `platformIcons` for reuse in header. | | `AskAIModal.tsx` | Ask AI chat modal for RAG-based Q&A about site content. Opens via header button (Cmd+J) when enabled. Uses Convex Persistent Text Streaming for real-time responses. Supports model selection (Claude, GPT-4o). Features streaming messages with markdown rendering, internal link handling via React Router, and source citations. Requires siteConfig.askAI.enabled and siteConfig.semanticSearch.enabled. | | `VersionHistoryModal.tsx` | Version history modal for viewing and restoring previous content versions. Shows version list with dates and source badges, diff view using DiffCodeBlock component, preview mode, and one-click restore. Used in Dashboard editor when version control is enabled. | +| `MediaLibrary.tsx` | Media library component for uploading and managing images. Features drag-and-drop upload, copy as Markdown/HTML/URL, bulk select and delete, file size display, and pagination. Shows configuration warning when Bunny CDN not configured. Uses ConvexFS for storage with Bunny.net Edge Storage and CDN delivery. | +| `ImageUploadModal.tsx` | Image insert modal for Write Post/Page sections. Two tabs: "Upload New" for uploading images and "Media Library" for selecting existing images. Shows image dimensions with aspect ratio, size presets (Original, Large 1200px, Medium 800px, Small 400px, Thumbnail 200px, Custom), alt text field, and calculated dimensions before insert. Uses HTML img tag with explicit width/height for non-original sizes. | ### Context (`src/context/`) @@ -137,7 +139,9 @@ A brief description of each file in the codebase. | `versions.ts` | Version control system: isEnabled, setEnabled, createVersion, getVersionHistory, getVersion, restoreVersion, cleanupOldVersions, getStats. Captures content snapshots before updates, provides 3-day history with diff view and restore functionality. | | `askAI.ts` | Ask AI session management: createSession mutation (creates streaming session with question/model in DB), getStreamBody query (for database fallback), getSessionByStreamId internal query (retrieves question/model for HTTP action). Uses Persistent Text Streaming component. | | `askAI.node.ts` | Ask AI HTTP action for streaming responses (Node.js runtime). Retrieves question from database, performs vector search using existing semantic search embeddings, generates AI response via Anthropic Claude or OpenAI GPT-4o, streams via appendChunk. Includes CORS headers and source citations. | -| `convex.config.ts` | Convex app configuration with aggregate component registrations (pageViewsByPath, totalPageViews, uniqueVisitors) and persistentTextStreaming component | +| `fs.ts` | ConvexFS instance configuration with Bunny.net Edge Storage integration. Conditionally creates ConvexFS instance only when BUNNY_API_KEY, BUNNY_STORAGE_ZONE, and BUNNY_CDN_HOSTNAME environment variables are set. Exports `isBunnyConfigured` boolean and `fs` instance (or null if not configured). | +| `files.ts` | File management mutations and queries for media library: commitFile (upload with validation), listFiles (paginated), deleteFile, deleteFiles (bulk), setFileExpiration, getFileInfo, getDownloadUrl, getFileCount, isConfigured. Validates file types (PNG, JPG, GIF, WebP) and size (10MB max). | +| `convex.config.ts` | Convex app configuration with aggregate component registrations (pageViewsByPath, totalPageViews, uniqueVisitors), persistentTextStreaming component, and ConvexFS component for media storage. | | `tsconfig.json` | Convex TypeScript configuration | ### HTTP Endpoints (defined in `http.ts`) @@ -360,3 +364,48 @@ Files include a metadata header with type (post/page), date, reading time, and t | `sec-check.mdc` | Security guidelines and audit checklist | | `task.mdc` | Task list management guidelines | | `write.mdc` | Writing style guide (activate with @write) | + +## OpenCode Configuration (`.opencode/`) + +OpenCode AI-first development tool integration. Works alongside Claude Code and Cursor. + +### Root Config + +| File | Description | +| ---- | ----------- | +| `opencode.json` | Root OpenCode project configuration | +| `.opencode/config.json` | OpenCode app configuration | + +### Agents (`.opencode/agent/`) + +| File | Description | +| ---- | ----------- | +| `orchestrator.md` | Main orchestrator agent - routes tasks to specialists | +| `content-writer.md` | Content creation specialist for posts and pages | +| `sync-manager.md` | Sync and deployment specialist | + +### Commands (`.opencode/command/`) + +| File | Description | +| ---- | ----------- | +| `sync.md` | `/sync` - Sync content to development | +| `sync-prod.md` | `/sync-prod` - Sync content to production | +| `create-post.md` | `/create-post` - Create new blog post | +| `create-page.md` | `/create-page` - Create new page | +| `import.md` | `/import` - Import content from URL | +| `deploy.md` | `/deploy` - Deploy to production | + +### Skills (`.opencode/skill/`) + +| File | Description | +| ---- | ----------- | +| `frontmatter.md` | Frontmatter syntax for posts and pages | +| `sync.md` | How the sync system works | +| `convex.md` | Convex patterns and conventions | +| `content.md` | Content management guide | + +### Plugins (`.opencode/plugin/`) + +| File | Description | +| ---- | ----------- | +| `sync-helper.ts` | Logs reminders when content files change | diff --git a/opencode.json b/opencode.json new file mode 100644 index 0000000..02ff2ec --- /dev/null +++ b/opencode.json @@ -0,0 +1,5 @@ +{ + "name": "markdown-publishing-framework", + "description": "AI-first markdown publishing with Convex real-time sync", + "plugin": [] +} diff --git a/package-lock.json b/package-lock.json index bcedd4d..c361476 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@workos-inc/widgets": "^1.6.1", "agentmail": "^0.1.15", "convex": "^1.17.4", + "convex-fs": "^0.2.0", "date-fns": "^3.3.1", "diff": "^8.0.2", "gray-matter": "^4.0.3", @@ -4879,6 +4880,54 @@ } } }, + "node_modules/convex-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/convex-fs/-/convex-fs-0.2.0.tgz", + "integrity": "sha512-udtiG2Nb5tif0poCa+UHsIlPrL4BCc3cQhrQtKpf5PFYiSMyb6Ay76otYFYLcgfM7AQswMQBoEzmendGYqdP6g==", + "license": "Apache-2.0", + "dependencies": { + "convex-helpers": "^0.1.108", + "fast-json-stable-stringify": "^2.1.0" + }, + "peerDependencies": { + "convex": "^1.29.3", + "react": "^18.3.1 || ^19.0.0" + } + }, + "node_modules/convex-helpers": { + "version": "0.1.109", + "resolved": "https://registry.npmjs.org/convex-helpers/-/convex-helpers-0.1.109.tgz", + "integrity": "sha512-3Yzi+4M+szpqze2/NjTqBdA6nit1vgtU0M3Ga6lUw2oNjOMrQ6si2Dx2M524GHXJ+5icBNM/6cii4Nrx58zMEw==", + "license": "Apache-2.0", + "bin": { + "convex-helpers": "bin.cjs" + }, + "peerDependencies": { + "@standard-schema/spec": "^1.0.0", + "convex": "^1.25.4", + "hono": "^4.0.5", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "typescript": "^5.5", + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@standard-schema/spec": { + "optional": true + }, + "hono": { + "optional": true + }, + "react": { + "optional": true + }, + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", @@ -5798,7 +5847,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { diff --git a/package.json b/package.json index 5d6ffc0..3f9d141 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@workos-inc/widgets": "^1.6.1", "agentmail": "^0.1.15", "convex": "^1.17.4", + "convex-fs": "^0.2.0", "date-fns": "^3.3.1", "diff": "^8.0.2", "gray-matter": "^4.0.3", diff --git a/public/images/opencode.png b/public/images/opencode.png new file mode 100644 index 0000000000000000000000000000000000000000..1186376685f9a81706454ac726f9c2b7fa3f618f GIT binary patch literal 433467 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%0A}t7WqD^B_cd*}BOcG5AsW(SM{0x=@6pvT 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⪙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 Your content is instantly available to browsers, LLMs, and AI agents. @@ -9,8 +9,8 @@ - URL: https://yoursite.example.com - Description: Your content is instantly available to browsers, LLMs, and AI agents. Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify. - Topics: Markdown, Convex, React, TypeScript, Netlify, Open Source, AI, LLM, AEO, GEO -- Total Posts: 18 -- Latest Post: 2026-01-07 +- Total Posts: 19 +- Latest Post: 2026-01-10 - GitHub: https://github.com/waynesutton/markdown-site # API Endpoints diff --git a/public/raw/changelog.md b/public/raw/changelog.md index 41ad046..d6724d8 100644 --- a/public/raw/changelog.md +++ b/public/raw/changelog.md @@ -7,6 +7,91 @@ Date: 2026-01-10 All notable changes to this project. +## v2.18.0 + +Released January 10, 2026 + +**OpenCode AI development tool integration** + +Added full OpenCode support to make the framework compatible with the OpenCode AI-first development tool. This works alongside existing Claude Code and Cursor integrations without conflicts. + +**Changes:** + +- Created `.opencode/` directory structure with config, agents, commands, skills, and plugins +- 3 specialized agents: orchestrator (main router), content-writer, sync-manager +- 6 commands: /sync, /sync-prod, /create-post, /create-page, /import, /deploy +- 4 skills adapted from .claude/skills/: frontmatter, sync, convex, content +- sync-helper plugin logs reminders when content files change +- Documentation page at /docs-opencode + +**Files changed:** + +- `opencode.json` - Root OpenCode project configuration +- `.opencode/config.json` - OpenCode app configuration +- `.opencode/agent/*.md` - Agent definitions (3 files) +- `.opencode/command/*.md` - Command definitions (6 files) +- `.opencode/skill/*.md` - Skill documentation (4 files) +- `.opencode/plugin/sync-helper.ts` - Reminder plugin +- `content/pages/docs-opencode.md` - Documentation page +- `files.md` - Added OpenCode Configuration section + +--- + +## v2.17.0 + +Released January 10, 2026 + +**ConvexFS Media Library with Bunny CDN integration** + +Added a full-featured media library for uploading and managing images in the dashboard. Images are stored on Bunny.net Edge Storage and served via their global CDN. The Image Insert modal now supports selecting from existing media and choosing image sizes. + +**Changes:** + +- Upload images via drag-and-drop or click to upload +- Copy images as Markdown, HTML, or direct URL +- Bulk select and delete multiple images at once +- Media Library tab in Image Insert modal for selecting existing images +- Size presets: Original, Large (1200px), Medium (800px), Small (400px), Thumbnail (200px), Custom +- Image dimensions displayed before insert with aspect ratio preserved +- File expiration support for automatic cleanup +- Configuration warning when Bunny CDN not set up + +**Files changed:** + +- `convex/convex.config.ts` - Added ConvexFS component +- `convex/fs.ts` - ConvexFS instance with Bunny CDN config +- `convex/files.ts` - File mutations and queries +- `convex/http.ts` - ConvexFS routes for upload/download +- `src/components/MediaLibrary.tsx` - Media library gallery +- `src/components/ImageUploadModal.tsx` - Enhanced modal with library and sizes +- `src/styles/global.css` - Media library and modal styles +- `content/pages/docs-media-setup.md` - Setup documentation + +--- + +## v2.16.4 + +Released January 10, 2026 + +**AI image generation download and copy options** + +Added download and copy functionality to the Dashboard AI Agent image generation section. After generating an image with Nano Banana, users can now download the image or copy Markdown/HTML code for embedding. + +**Changes:** + +- Download button saves generated image to computer with filename from prompt +- MD button copies Markdown code (`![prompt](url)`) to clipboard +- HTML button copies HTML code (`prompt`) to clipboard +- Code preview section displays both Markdown and HTML snippets +- Visual feedback when code is copied (button changes to "Copied") + +**Files changed:** + +- `src/pages/Dashboard.tsx` - Added download/copy handlers and updated UI +- `src/styles/global.css` - Added CSS for action buttons and code preview + +--- + ## v2.16.3 Released January 10, 2026 diff --git a/public/raw/docs-media-setup.md b/public/raw/docs-media-setup.md new file mode 100644 index 0000000..89ba17a --- /dev/null +++ b/public/raw/docs-media-setup.md @@ -0,0 +1,229 @@ +# Media Upload Setup + +--- +Type: page +Date: 2026-01-10 +--- + +Set up image uploads for the dashboard using ConvexFS and Bunny.net CDN. + +## ConvexFS Documentation + +This media library is powered by [ConvexFS](https://convexfs.dev/), a virtual filesystem for Convex with CDN integration. + +**Resources:** +- [ConvexFS Documentation](https://convexfs.dev/) - Complete setup guides, API reference, and examples +- [ConvexFS GitHub](https://github.com/jamwt/convex-fs) - Source code and issues + +For detailed setup instructions including app configuration, garbage collection, file expiration, and advanced features, follow the official ConvexFS documentation. + +## Overview + +The media library allows you to upload images directly from the dashboard and insert them into your content. Images are stored on Bunny.net Edge Storage and served via their global CDN for fast delivery. + +## Prerequisites + +- A Bunny.net account +- Convex project deployed +- Access to Convex Dashboard environment variables + +## Create Bunny.net account + +1. Go to [bunny.net](https://bunny.net) and sign up +2. Bunny offers a 14-day free trial with no credit card required +3. After trial, storage costs around $0.01/GB/month + +## Create storage zone + +1. In the Bunny Dashboard, go to **Storage** in the sidebar +2. Click **Add Storage Zone** +3. Configure your storage zone: + - **Name**: Choose a unique name (e.g., `mysite-media`) + - **Main Storage Region**: Select the region closest to your users + - **Replication Regions**: Optional, select additional regions for redundancy +4. Click **Create Storage Zone** + +## Set up Pull Zone (CDN) + +1. After creating the storage zone, click **Connected Pull Zone** +2. Create a new pull zone or connect to an existing one +3. Note your **Pull Zone Hostname** (e.g., `mysite-media.b-cdn.net`) +4. Enable **Token Authentication** under Security settings for signed URLs + +## Get API credentials + +From your Bunny Dashboard, collect these values: + +| Credential | Location | +|------------|----------| +| **API Key** | Account > API > API Key (password icon) | +| **Storage Zone Name** | Storage > [Your Zone] > Name | +| **CDN Hostname** | Storage > [Your Zone] > Connected Pull Zone hostname | +| **Token Key** | Pull Zone > Security > Token Authentication > Token Key | + +## Add environment variables + +### Local development (.env.local) + +Create or edit `.env.local` in your project root: + +```bash +BUNNY_API_KEY=your-api-key-here +BUNNY_STORAGE_ZONE=your-zone-name +BUNNY_CDN_HOSTNAME=your-zone.b-cdn.net +BUNNY_TOKEN_KEY=your-token-key +``` + +### Convex Dashboard + +1. Go to your project in the [Convex Dashboard](https://dashboard.convex.dev) +2. Navigate to **Settings** > **Environment Variables** +3. Add each of these variables: + - `BUNNY_API_KEY` + - `BUNNY_STORAGE_ZONE` + - `BUNNY_CDN_HOSTNAME` + - `BUNNY_TOKEN_KEY` (optional, for signed URLs) + +4. Click **Save** + +## Deploy changes + +After setting environment variables: + +```bash +npx convex deploy +``` + +This pushes the ConvexFS configuration with your Bunny credentials. + +## Test upload workflow + +1. Go to Dashboard > Create > Media +2. Click the upload zone or drag an image +3. Verify the image appears in the grid +4. Click **MD** to copy markdown and paste in a post + +## Using in content + +### Media Library + +Access the Media Library from Dashboard sidebar under **Create > Media**. From here you can: + +- Upload multiple images via drag-and-drop +- Copy markdown, HTML, or direct URL +- Select multiple images for bulk delete +- View file sizes + +### Bulk delete + +To delete multiple images at once: + +1. Click the **Select** button in the toolbar +2. Click images to select them (or use **Select All**) +3. Click **Delete (N)** to remove selected images +4. Confirm deletion in the dialog + +### Insert in editor + +When writing a post or page in the dashboard: + +1. Click the **Image** button in the toolbar +2. Choose **Upload New** to upload a new image, or **Media Library** to select an existing image +3. After selecting/uploading, you'll see: + - Image preview with original dimensions (e.g., 1920 x 1080px) + - Alt text field for accessibility + - Size presets: Original, Large (1200px), Medium (800px), Small (400px), Thumbnail (200px), or Custom +4. Choose a size - the display shows the calculated dimensions with aspect ratio preserved +5. Click **Insert** to add the image to your content + +### Size options + +| Preset | Max Width | Use Case | +|--------|-----------|----------| +| Original | Full size | High-resolution displays | +| Large | 1200px | Hero images, full-width content | +| Medium | 800px | Standard content images | +| Small | 400px | Thumbnails, sidebars | +| Thumbnail | 200px | Grids, galleries | +| Custom | Any | Specific dimensions needed | + +When using a size other than Original, images are inserted with explicit width/height attributes to prevent layout shift. + +### Frontmatter images + +For post header images, upload via Media Library then copy the URL: + +```yaml +--- +title: "My Post" +image: https://your-zone.b-cdn.net/uploads/12345-image.png +--- +``` + +## Configuration options + +In `siteConfig.ts`: + +```typescript +media: { + enabled: true, // Toggle media features + maxFileSize: 10, // Max file size in MB + allowedTypes: [ // Allowed MIME types + "image/png", + "image/jpeg", + "image/gif", + "image/webp" + ], +} +``` + +## Troubleshooting + +### "Upload failed" error + +- Verify all four environment variables are set in Convex Dashboard +- Check that the API key has write permissions +- Ensure the storage zone name matches exactly + +### Images not loading + +- Verify the CDN hostname is correct +- Check the Pull Zone is connected to your Storage Zone +- Try accessing the image URL directly in browser + +### 403 Forbidden errors + +- Token authentication may be blocking unsigned requests +- Either disable token auth in Pull Zone settings +- Or ensure `BUNNY_TOKEN_KEY` is set correctly + +### Files uploading but not visible + +- Check browser console for errors +- Verify the `/fs/upload` route is registered in `http.ts` +- Run `npx convex deploy` to sync configuration + +## File organization + +Uploaded files are stored at `/uploads/{timestamp}-{filename}`: + +``` +/uploads/ + 1704067200000-hero-image.png + 1704067201000-screenshot.jpg + 1704067202000-diagram.webp +``` + +Timestamps ensure unique filenames and provide chronological ordering. + +## Cost estimate + +Bunny.net pricing (as of 2024): + +| Service | Cost | +|---------|------| +| Storage | $0.01/GB/month | +| Bandwidth (EU/US) | $0.01/GB | +| Bandwidth (APAC) | $0.03/GB | + +For a typical blog with 1GB of images and 10GB monthly bandwidth: ~$0.11/month. \ No newline at end of file diff --git a/public/raw/docs-opencode.md b/public/raw/docs-opencode.md new file mode 100644 index 0000000..853cbb7 --- /dev/null +++ b/public/raw/docs-opencode.md @@ -0,0 +1,180 @@ +# OpenCode Integration + +--- +Type: post +Date: 2026-01-10 +Reading time: 4 min read +Tags: opencode, plugins, terminal +--- + +## OpenCode Integration + +OpenCode is an AI-first development tool that works alongside Claude Code and Cursor. This framework includes full OpenCode support with agents, commands, skills, and plugins. + +--- + +### How OpenCode works + +``` ++------------------+ +-------------------+ +------------------+ +| User request |--->| Orchestrator |--->| Specialist | +| "Create a post" | | Agent routes | | Agent executes | +| | | to specialist | | the task | ++------------------+ +-------------------+ +--------+---------+ + | + v ++------------------+ +-------------------+ +------------------+ +| Result |<---| Skills provide |<---| Commands wrap | +| returned to | | context and | | npm scripts | +| user | | documentation | | for quick access| ++------------------+ +-------------------+ +------------------+ +``` + +1. User makes a request in OpenCode +2. Orchestrator agent analyzes and routes the task +3. Specialist agent (content-writer or sync-manager) handles it +4. Skills provide documentation context +5. Commands offer quick keyboard shortcuts +6. Plugins automate common workflows + +### Directory structure + +OpenCode configuration lives in `.opencode/` alongside existing `.claude/` and `.cursor/` directories: + +``` +.opencode/ +├── config.json # OpenCode app configuration +├── agent/ +│ ├── orchestrator.md # Main routing agent +│ ├── content-writer.md # Content creation specialist +│ └── sync-manager.md # Sync and deployment specialist +├── command/ +│ ├── sync.md # /sync command +│ ├── sync-prod.md # /sync-prod command +│ ├── create-post.md # /create-post command +│ ├── create-page.md # /create-page command +│ ├── import.md # /import command +│ └── deploy.md # /deploy command +├── skill/ +│ ├── frontmatter.md # Frontmatter syntax reference +│ ├── sync.md # How sync works +│ ├── convex.md # Convex patterns +│ └── content.md # Content management guide +└── plugin/ + └── sync-helper.ts # Reminder plugin for content changes +``` + +### Available commands + +Quick commands accessible via `/` prefix in OpenCode: + +| Command | Purpose | +| -------------- | ---------------------------------------------- | +| `/sync` | Sync markdown content to development Convex | +| `/sync-prod` | Sync markdown content to production Convex | +| `/create-post` | Create a new blog post with proper frontmatter | +| `/create-page` | Create a new static page | +| `/import` | Import content from an external URL | +| `/deploy` | Full deployment workflow to production | + +### Agents + +Three specialized agents handle different types of tasks: + +**Orchestrator** (primary agent) + +- Routes tasks to appropriate specialists +- Handles general code changes directly +- Coordinates multi-step workflows + +**Content Writer** (subagent) + +- Creates blog posts and pages +- Validates frontmatter +- Knows content directory structure +- Reminds you to run sync + +**Sync Manager** (subagent) + +- Executes sync commands +- Handles dev vs prod environments +- Troubleshoots sync issues +- Manages deployments + +### Skills + +Skills provide documentation context to agents: + +| Skill | Purpose | +| ----------- | --------------------------------------------- | +| frontmatter | Complete frontmatter syntax for posts/pages | +| sync | How the sync system works end-to-end | +| convex | Convex patterns (indexes, mutations, queries) | +| content | Content management workflows | + +### Plugins + +The sync-helper plugin provides automation: + +```typescript +// When content files change, log a reminder +"file.edited": async (event) => { + if (event.path.startsWith("content/")) { + await client.app.log("info", "Content changed - run /sync to publish") + } +} +``` + +Plugins hook into OpenCode events like file edits and session idle states. + +### Getting started + +1. Install OpenCode CLI (see [opencode.ai](https://opencode.ai)) +2. Open your project directory +3. OpenCode automatically recognizes the `.opencode/` configuration +4. Use `/sync` after creating content + +### Compatibility + +This framework works with multiple AI development tools simultaneously: + +| Tool | Configuration Directory | +| ----------- | ----------------------- | +| OpenCode | `.opencode/` | +| Claude Code | `.claude/skills/` | +| Cursor | `.cursor/rules/` | + +All tools can be used without conflicts. Skills are duplicated (not shared) to ensure each tool works independently. + +### Configuration files + +| File | Purpose | +| ----------------------- | -------------------------- | +| `opencode.json` | Root project configuration | +| `.opencode/config.json` | App-level settings | + +Example `opencode.json`: + +```json +{ + "name": "markdown-publishing-framework", + "description": "AI-first markdown publishing with Convex real-time sync", + "plugin": [] +} +``` + +### When to use OpenCode vs other tools + +| Task | Recommended Tool | +| ---------------------- | ----------------------------- | +| Quick content creation | OpenCode (`/create-post`) | +| Complex code changes | Claude Code or Cursor | +| Sync workflows | OpenCode (`/sync`, `/deploy`) | +| Debugging | Any tool with your preference | + +### Resources + +- [OpenCode Documentation](https://opencode.ai/docs/) +- [OpenCode Plugins](https://opencode.ai/docs/plugins/) +- [OpenCode SDK](https://opencode.ai/docs/sdk/) +- [OpenCode Workflow Examples](https://github.com/CloudAI-X/opencode-workflow) \ No newline at end of file diff --git a/public/raw/index.md b/public/raw/index.md index 1b4cbaa..4c26d7a 100644 --- a/public/raw/index.md +++ b/public/raw/index.md @@ -30,8 +30,10 @@ agents. --> --- -## Blog Posts (19) +## Blog Posts (20) +- **[OpenCode Integration](/raw/docs-opencode.md)** + - Date: 2026-01-10 | Reading time: 4 min read | Tags: opencode, plugins, terminal - **[How to Use Code Blocks](/raw/how-to-use-code-blocks.md)** - A guide to syntax highlighting, diff rendering, and code formatting in your markdown posts. - Date: 2026-01-07 | Reading time: 4 min read | Tags: tutorial, markdown, code, syntax-highlighting - **[How I added WorkOS to my Convex app with Cursor](/raw/workos-with-convex-cursor.md)** - A timeline of adding WorkOS AuthKit authentication to my markdown blog dashboard using Cursor, prompt engineering, and vibe coding. From PRD import to published feature. @@ -71,7 +73,7 @@ agents. --> - **[Using Images in Blog Posts](/raw/using-images-in-posts.md)** - Learn how to add header images, inline images, and Open Graph images to your markdown posts. - Date: 2025-12-14 | Reading time: 4 min read | Tags: images, tutorial, markdown, open-graph -## Pages (16) +## Pages (17) - **[Footer](/raw/footer.md)** - **[Home Intro](/raw/home-intro.md)** @@ -89,10 +91,11 @@ agents. --> - **[Changelog](/raw/changelog.md)** - **[Deployment](/raw/docs-deployment.md)** - **[Newsletter](/raw/newsletter.md)** +- **[Media Upload Setup](/raw/docs-media-setup.md)** --- -**Total Content:** 19 posts, 16 pages +**Total Content:** 20 posts, 17 pages All content is available as raw markdown files at `/raw/{slug}.md` diff --git a/src/components/ImageUploadModal.tsx b/src/components/ImageUploadModal.tsx new file mode 100644 index 0000000..d8c9a14 --- /dev/null +++ b/src/components/ImageUploadModal.tsx @@ -0,0 +1,553 @@ +import { useState, useRef, useCallback, useEffect } from "react"; +import { useAction, usePaginatedQuery, useQuery } from "convex/react"; +import { api } from "../../convex/_generated/api"; +import { + X, + Upload, + CloudArrowUp, + Warning, + Image as ImageIcon, + Images, + ArrowsOut, + Check, +} from "@phosphor-icons/react"; + +// Derive the .site URL from Convex URL for uploads +const getSiteUrl = () => { + const convexUrl = import.meta.env.VITE_CONVEX_URL ?? ""; + return convexUrl.replace(/\.cloud$/, ".site"); +}; + +// Size presets for image insertion +const SIZE_PRESETS = [ + { id: "original", label: "Original", width: null, height: null }, + { id: "large", label: "Large", width: 1200, height: null }, + { id: "medium", label: "Medium", width: 800, height: null }, + { id: "small", label: "Small", width: 400, height: null }, + { id: "thumbnail", label: "Thumbnail", width: 200, height: null }, + { id: "custom", label: "Custom", width: null, height: null }, +] as const; + +type SizePreset = typeof SIZE_PRESETS[number]["id"]; + +interface ImageUploadModalProps { + isOpen: boolean; + onClose: () => void; + onInsert: (markdown: string) => void; +} + +interface ImageInfo { + url: string; + width: number; + height: number; + filename: string; +} + +export function ImageUploadModal({ isOpen, onClose, onInsert }: ImageUploadModalProps) { + const [activeTab, setActiveTab] = useState<"upload" | "library">("upload"); + const [uploading, setUploading] = useState(false); + const [uploadProgress, setUploadProgress] = useState(null); + const [error, setError] = useState(null); + const [preview, setPreview] = useState(null); + const [altText, setAltText] = useState(""); + const [selectedImage, setSelectedImage] = useState(null); + const [sizePreset, setSizePreset] = useState("original"); + const [customWidth, setCustomWidth] = useState(null); + const [customHeight, setCustomHeight] = useState(null); + const [dragOver, setDragOver] = useState(false); + const fileInputRef = useRef(null); + + const commitFile = useAction(api.files.commitFile); + const configStatus = useQuery(api.files.isConfigured); + const isBunnyConfigured = configStatus?.configured ?? false; + + const { results: mediaFiles, status: mediaStatus, loadMore } = usePaginatedQuery( + api.files.listFiles, + { prefix: "/uploads/" }, + { initialNumItems: 12 } + ); + + const siteUrl = getSiteUrl(); + const cdnHostname = import.meta.env.VITE_BUNNY_CDN_HOSTNAME; + + // Reset state when modal closes + const handleClose = () => { + setPreview(null); + setAltText(""); + setSelectedImage(null); + setError(null); + setSizePreset("original"); + setCustomWidth(null); + setCustomHeight(null); + setActiveTab("upload"); + onClose(); + }; + + // Get CDN URL for a file + const getCdnUrl = (path: string, blobId: string) => { + if (cdnHostname) { + return `https://${cdnHostname}${path}`; + } + return `${siteUrl}/fs/blobs/${blobId}`; + }; + + // Get image dimensions from URL + const getImageDimensionsFromUrl = (url: string): Promise<{ width: number; height: number }> => { + return new Promise((resolve) => { + const img = new window.Image(); + img.onload = () => { + resolve({ width: img.naturalWidth, height: img.naturalHeight }); + }; + img.onerror = () => { + resolve({ width: 0, height: 0 }); + }; + img.src = url; + }); + }; + + // Get image dimensions from file + const getImageDimensions = (file: File): Promise<{ width: number; height: number }> => { + return new Promise((resolve) => { + const img = new window.Image(); + img.onload = () => { + resolve({ width: img.naturalWidth, height: img.naturalHeight }); + URL.revokeObjectURL(img.src); + }; + img.onerror = () => { + resolve({ width: 0, height: 0 }); + URL.revokeObjectURL(img.src); + }; + img.src = URL.createObjectURL(file); + }); + }; + + // Calculate display dimensions based on preset + const getDisplayDimensions = () => { + if (!selectedImage) return { width: 0, height: 0 }; + + const { width: origWidth, height: origHeight } = selectedImage; + const aspectRatio = origWidth / origHeight; + + if (sizePreset === "original") { + return { width: origWidth, height: origHeight }; + } + + if (sizePreset === "custom") { + if (customWidth && customHeight) { + return { width: customWidth, height: customHeight }; + } + if (customWidth) { + return { width: customWidth, height: Math.round(customWidth / aspectRatio) }; + } + if (customHeight) { + return { width: Math.round(customHeight * aspectRatio), height: customHeight }; + } + return { width: origWidth, height: origHeight }; + } + + const preset = SIZE_PRESETS.find((p) => p.id === sizePreset); + if (preset?.width) { + const newWidth = Math.min(preset.width, origWidth); + return { width: newWidth, height: Math.round(newWidth / aspectRatio) }; + } + + return { width: origWidth, height: origHeight }; + }; + + // Handle file upload + const handleUpload = useCallback(async (file: File) => { + setError(null); + setUploading(true); + setUploadProgress("Uploading..."); + + try { + // Validate file type + if (!file.type.startsWith("image/")) { + throw new Error("File must be an image"); + } + + // Validate file size (10MB max) + if (file.size > 10 * 1024 * 1024) { + throw new Error("File exceeds 10MB limit"); + } + + // Show preview + const previewUrl = URL.createObjectURL(file); + setPreview(previewUrl); + setAltText(file.name.replace(/\.[^/.]+$/, "").replace(/[-_]/g, " ")); + + // Get image dimensions + const dimensions = await getImageDimensions(file); + + // Upload blob to ConvexFS endpoint + const res = await fetch(`${siteUrl}/fs/upload`, { + method: "POST", + headers: { "Content-Type": file.type }, + body: file, + }); + + if (!res.ok) { + const errorText = await res.text(); + throw new Error(errorText || `Upload failed: ${res.status}`); + } + + const { blobId } = await res.json(); + + // Commit file to storage path + const result = await commitFile({ + blobId, + filename: file.name, + contentType: file.type, + size: file.size, + width: dimensions.width, + height: dimensions.height, + }); + + // Get CDN URL + const url = getCdnUrl(result.path, blobId); + + setSelectedImage({ + url, + width: dimensions.width, + height: dimensions.height, + filename: file.name, + }); + setUploadProgress(null); + } catch (err) { + setError((err as Error).message); + setPreview(null); + } finally { + setUploading(false); + setUploadProgress(null); + } + }, [commitFile, siteUrl, cdnHostname]); + + // Handle file input change + const handleFileChange = (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (file) { + handleUpload(file); + } + }; + + // Handle drag and drop + const handleDragOver = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(true); + }; + + const handleDragLeave = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(false); + }; + + const handleDrop = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(false); + const file = e.dataTransfer.files[0]; + if (file) { + handleUpload(file); + } + }; + + // Handle selecting from media library + const handleSelectFromLibrary = async (file: { path: string; blobId: string; size: number }) => { + const url = getCdnUrl(file.path, file.blobId); + const filename = file.path.split("/").pop() || "image"; + + // Get dimensions from URL + const dimensions = await getImageDimensionsFromUrl(url); + + setSelectedImage({ + url, + width: dimensions.width, + height: dimensions.height, + filename, + }); + setPreview(url); + setAltText(filename.replace(/\.[^/.]+$/, "").replace(/[-_]/g, " ")); + }; + + // Generate markdown with size + const generateMarkdown = () => { + if (!selectedImage) return ""; + + const dims = getDisplayDimensions(); + const alt = altText || "image"; + + // For original size, just use standard markdown + if (sizePreset === "original") { + return `![${alt}](${selectedImage.url})`; + } + + // For other sizes, use HTML img tag with explicit dimensions + return `${alt}`; + }; + + // Insert markdown + const handleInsert = () => { + if (selectedImage) { + const markdown = generateMarkdown(); + onInsert(markdown); + handleClose(); + } + }; + + // Update custom dimensions when preset changes + useEffect(() => { + if (sizePreset !== "custom" && selectedImage) { + const dims = getDisplayDimensions(); + setCustomWidth(dims.width); + setCustomHeight(dims.height); + } + }, [sizePreset, selectedImage]); + + if (!isOpen) return null; + + const displayDims = getDisplayDimensions(); + + return ( +
+
e.stopPropagation()} + > +
+

+ + Insert Image +

+ +
+ + {/* Tabs */} +
+ + +
+ +
+ {/* Error message */} + {error && ( +
+ + {error} +
+ )} + + {activeTab === "upload" && !selectedImage && ( +
fileInputRef.current?.click()} + > + + {uploading ? ( + <> + +

{uploadProgress}

+ + ) : ( + <> + +

+ Click to upload or drag and drop +

+ PNG, JPG, GIF, WebP up to 10MB + + )} +
+ )} + + {activeTab === "library" && !selectedImage && ( +
+ {!isBunnyConfigured ? ( +
+ +

Media library not configured

+
+ ) : mediaFiles.length === 0 ? ( +
+ +

No images in library

+ +
+ ) : ( + <> +
+ {mediaFiles.map((file) => ( +
handleSelectFromLibrary(file)} + > + {file.path.split("/").pop()} +
+ ))} +
+ {mediaStatus === "CanLoadMore" && ( + + )} + + )} +
+ )} + + {/* Preview and settings when image is selected */} + {selectedImage && ( +
+
+
+ Preview + {uploading && ( +
+ + {uploadProgress} +
+ )} +
+
+ + + {selectedImage.width} x {selectedImage.height}px + {sizePreset !== "original" && ( + <> → {displayDims.width} x {displayDims.height}px + )} + +
+
+ +
+ {/* Alt text input */} +
+ + setAltText(e.target.value)} + placeholder="Describe the image..." + /> +
+ + {/* Size presets */} +
+ +
+ {SIZE_PRESETS.map((preset) => ( + + ))} +
+
+ + {/* Custom dimensions */} + {sizePreset === "custom" && ( +
+
+ + { + const val = parseInt(e.target.value) || null; + setCustomWidth(val); + if (val && selectedImage) { + const ratio = selectedImage.width / selectedImage.height; + setCustomHeight(Math.round(val / ratio)); + } + }} + placeholder="Auto" + /> + px +
+
+ + { + const val = parseInt(e.target.value) || null; + setCustomHeight(val); + if (val && selectedImage) { + const ratio = selectedImage.width / selectedImage.height; + setCustomWidth(Math.round(val * ratio)); + } + }} + placeholder="Auto" + /> + px +
+
+ )} + + {/* Change image button */} + +
+
+ )} +
+ +
+ + +
+
+
+ ); +} diff --git a/src/components/MediaLibrary.tsx b/src/components/MediaLibrary.tsx new file mode 100644 index 0000000..47cf156 --- /dev/null +++ b/src/components/MediaLibrary.tsx @@ -0,0 +1,509 @@ +import { useState, useRef, useCallback } from "react"; +import { useAction, usePaginatedQuery, useMutation, useQuery } from "convex/react"; +import { api } from "../../convex/_generated/api"; +import { + Image as ImageIcon, + Upload, + Trash, + CopySimple, + Check, + Link as LinkIcon, + Code, + X, + Warning, + CloudArrowUp, + CheckSquare, + Square, + SelectionAll, +} from "@phosphor-icons/react"; + +// Derive the .site URL from Convex URL for uploads +const getSiteUrl = () => { + const convexUrl = import.meta.env.VITE_CONVEX_URL ?? ""; + return convexUrl.replace(/\.cloud$/, ".site"); +}; + +// File metadata type from ConvexFS +interface FileInfo { + path: string; + blobId: string; + contentType: string; + size: number; +} + +// Copy format options +type CopyFormat = "markdown" | "html" | "url"; + +export function MediaLibrary() { + const [uploading, setUploading] = useState(false); + const [uploadProgress, setUploadProgress] = useState(null); + const [error, setError] = useState(null); + const [dragOver, setDragOver] = useState(false); + const [copiedPath, setCopiedPath] = useState(null); + const [copiedFormat, setCopiedFormat] = useState(null); + const [deleteConfirm, setDeleteConfirm] = useState(null); + const [selectedFiles, setSelectedFiles] = useState>(new Set()); + const [selectMode, setSelectMode] = useState(false); + const [bulkDeleteConfirm, setBulkDeleteConfirm] = useState(false); + const fileInputRef = useRef(null); + + // Check if Bunny CDN is configured (server-side check) + const configStatus = useQuery(api.files.isConfigured); + const isBunnyConfigured = configStatus?.configured ?? false; + + // Convex hooks + const commitFile = useAction(api.files.commitFile); + const deleteFile = useMutation(api.files.deleteFile); + const deleteFiles = useMutation(api.files.deleteFiles); + const { results, status, loadMore } = usePaginatedQuery( + api.files.listFiles, + { prefix: "/uploads/" }, + { initialNumItems: 20 } + ); + + const siteUrl = getSiteUrl(); + const cdnHostname = import.meta.env.VITE_BUNNY_CDN_HOSTNAME; + + // Get CDN URL for a file + const getCdnUrl = (file: FileInfo) => { + // Use the Bunny CDN hostname if configured + if (cdnHostname) { + return `https://${cdnHostname}${file.path}`; + } + // Fallback to ConvexFS blob URL + return `${siteUrl}/fs/blobs/${file.blobId}`; + }; + + // Handle file upload + const handleUpload = useCallback(async (files: FileList | null) => { + if (!files || files.length === 0) return; + + setError(null); + setUploading(true); + + for (let i = 0; i < files.length; i++) { + const file = files[i]; + setUploadProgress(`Uploading ${file.name} (${i + 1}/${files.length})...`); + + try { + // Validate file type + if (!file.type.startsWith("image/")) { + throw new Error(`${file.name} is not an image`); + } + + // Validate file size (10MB max) + if (file.size > 10 * 1024 * 1024) { + throw new Error(`${file.name} exceeds 10MB limit`); + } + + // Get image dimensions + const dimensions = await getImageDimensions(file); + + // Upload blob to ConvexFS endpoint + const res = await fetch(`${siteUrl}/fs/upload`, { + method: "POST", + headers: { "Content-Type": file.type }, + body: file, + }); + + if (!res.ok) { + const errorText = await res.text(); + throw new Error(errorText || `Upload failed: ${res.status}`); + } + + const { blobId } = await res.json(); + + // Commit file to storage path + await commitFile({ + blobId, + filename: file.name, + contentType: file.type, + size: file.size, + width: dimensions.width, + height: dimensions.height, + }); + } catch (err) { + setError((err as Error).message); + break; + } + } + + setUploading(false); + setUploadProgress(null); + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + }, [commitFile, siteUrl]); + + // Get image dimensions + const getImageDimensions = (file: File): Promise<{ width: number; height: number }> => { + return new Promise((resolve) => { + const img = new window.Image(); + img.onload = () => { + resolve({ width: img.naturalWidth, height: img.naturalHeight }); + URL.revokeObjectURL(img.src); + }; + img.onerror = () => { + resolve({ width: 0, height: 0 }); + URL.revokeObjectURL(img.src); + }; + img.src = URL.createObjectURL(file); + }); + }; + + // Handle file input change + const handleFileChange = (e: React.ChangeEvent) => { + handleUpload(e.target.files); + }; + + // Handle drag and drop + const handleDragOver = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(true); + }; + + const handleDragLeave = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(false); + }; + + const handleDrop = (e: React.DragEvent) => { + e.preventDefault(); + setDragOver(false); + handleUpload(e.dataTransfer.files); + }; + + // Copy to clipboard + const handleCopy = async (file: FileInfo, format: CopyFormat) => { + const url = getCdnUrl(file); + const filename = file.path.split("/").pop() || "image"; + + let text = ""; + switch (format) { + case "markdown": + text = `![${filename}](${url})`; + break; + case "html": + text = `${filename}`; + break; + case "url": + text = url; + break; + } + + try { + await navigator.clipboard.writeText(text); + setCopiedPath(file.path); + setCopiedFormat(format); + setTimeout(() => { + setCopiedPath(null); + setCopiedFormat(null); + }, 2000); + } catch { + setError("Failed to copy to clipboard"); + } + }; + + // Delete file + const handleDelete = async (path: string) => { + try { + await deleteFile({ path }); + setDeleteConfirm(null); + } catch (err) { + setError((err as Error).message); + } + }; + + // Toggle file selection + const toggleFileSelection = (path: string) => { + setSelectedFiles((prev) => { + const next = new Set(prev); + if (next.has(path)) { + next.delete(path); + } else { + next.add(path); + } + return next; + }); + }; + + // Select all files + const selectAllFiles = () => { + setSelectedFiles(new Set(results.map((f) => f.path))); + }; + + // Clear selection + const clearSelection = () => { + setSelectedFiles(new Set()); + setSelectMode(false); + }; + + // Bulk delete files + const handleBulkDelete = async () => { + try { + await deleteFiles({ paths: Array.from(selectedFiles) }); + setSelectedFiles(new Set()); + setSelectMode(false); + setBulkDeleteConfirm(false); + } catch (err) { + setError((err as Error).message); + } + }; + + // Format file size + const formatSize = (bytes: number) => { + if (bytes < 1024) return `${bytes} B`; + if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; + return `${(bytes / 1024 / 1024).toFixed(1)} MB`; + }; + + return ( +
+ ); +} diff --git a/src/config/siteConfig.ts b/src/config/siteConfig.ts index d7d3906..37bead2 100644 --- a/src/config/siteConfig.ts +++ b/src/config/siteConfig.ts @@ -235,6 +235,14 @@ export interface DashboardConfig { requireAuth: boolean; // Require WorkOS authentication (only works if WorkOS is configured) } +// Media library configuration +// Controls image upload and CDN storage via ConvexFS and Bunny.net +export interface MediaConfig { + enabled: boolean; // Global toggle for media library feature + maxFileSize: number; // Max file size in MB (default: 10) + allowedTypes: string[]; // Allowed MIME types +} + // Image lightbox configuration // Enables click-to-magnify functionality for images in blog posts and pages export interface ImageLightboxConfig { @@ -388,6 +396,9 @@ export interface SiteConfig { // Dashboard configuration (optional) dashboard?: DashboardConfig; + // Media library configuration (optional) + media?: MediaConfig; + // Image lightbox configuration (optional) imageLightbox?: ImageLightboxConfig; @@ -735,6 +746,15 @@ export const siteConfig: SiteConfig = { requireAuth: true, }, + // Media library configuration + // Upload and manage images via ConvexFS and Bunny.net CDN + // Requires BUNNY_API_KEY, BUNNY_STORAGE_ZONE, BUNNY_CDN_HOSTNAME in Convex dashboard + media: { + enabled: true, + maxFileSize: 10, // Max file size in MB + allowedTypes: ["image/png", "image/jpeg", "image/gif", "image/webp"], + }, + // Image lightbox configuration // Enables click-to-magnify functionality for images in blog posts and pages // Images open in a full-screen lightbox overlay when clicked diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx index e910f6d..5ddb05c 100644 --- a/src/pages/Dashboard.tsx +++ b/src/pages/Dashboard.tsx @@ -66,6 +66,8 @@ import { import siteConfig from "../config/siteConfig"; import AIChatView from "../components/AIChatView"; import VersionHistoryModal from "../components/VersionHistoryModal"; +import { MediaLibrary } from "../components/MediaLibrary"; +import { ImageUploadModal } from "../components/ImageUploadModal"; import { isWorkOSConfigured } from "../utils/workos"; // Always import auth components - they're only used when WorkOS is configured import { @@ -391,7 +393,8 @@ type DashboardSection = | "config" | "index-html" | "stats" - | "sync"; + | "sync" + | "media"; // Post/Page type for editing interface ContentItem { @@ -1029,6 +1032,10 @@ function DashboardContent() { }, [editingItem, editingType, generateMarkdown, addToast]); // Navigation items for left sidebar + // Filter items based on feature configuration + const mediaEnabled = siteConfig.media?.enabled ?? false; + const newsletterEnabled = siteConfig.newsletter?.enabled ?? false; + const navSections = [ { label: "Content", @@ -1044,34 +1051,47 @@ function DashboardContent() { { id: "write-page" as const, label: "Write Page", icon: File }, { id: "ai-agent" as const, label: "AI Agent", icon: Robot }, { id: "import" as const, label: "Import URL", icon: CloudArrowDown }, + // Only show Media if media feature is enabled + ...(mediaEnabled + ? [{ id: "media" as const, label: "Media", icon: Image }] + : []), ], }, - { - label: "Newsletter", - items: [ - { id: "newsletter" as const, label: "Subscribers", icon: Envelope }, - { - id: "newsletter-send" as const, - label: "Send Newsletter", - icon: Envelope, - }, - { - id: "newsletter-write-email" as const, - label: "Write Email", - icon: PencilSimple, - }, - { - id: "newsletter-recent-sends" as const, - label: "Recent Sends", - icon: ClockCounterClockwise, - }, - { - id: "newsletter-stats" as const, - label: "Email Stats", - icon: ChartLine, - }, - ], - }, + // Only show Newsletter section if newsletter is enabled + ...(newsletterEnabled + ? [ + { + label: "Newsletter", + items: [ + { + id: "newsletter" as const, + label: "Subscribers", + icon: Envelope, + }, + { + id: "newsletter-send" as const, + label: "Send Newsletter", + icon: Envelope, + }, + { + id: "newsletter-write-email" as const, + label: "Write Email", + icon: PencilSimple, + }, + { + id: "newsletter-recent-sends" as const, + label: "Recent Sends", + icon: ClockCounterClockwise, + }, + { + id: "newsletter-stats" as const, + label: "Email Stats", + icon: ChartLine, + }, + ], + }, + ] + : []), { label: "Settings", items: [ @@ -1246,6 +1266,7 @@ function DashboardContent() { {activeSection === "index-html" && "Index HTML"} {activeSection === "stats" && "Analytics"} {activeSection === "sync" && "Sync Content"} + {activeSection === "media" && "Media"} @@ -1463,6 +1484,9 @@ function DashboardContent() { setSyncOutput={setSyncOutput} /> )} + + {/* Media */} + {activeSection === "media" && } @@ -2540,6 +2564,9 @@ function WriteSection({ }); // Store previous sidebar state before entering focus mode const [prevSidebarState, setPrevSidebarState] = useState(null); + // Image upload modal state + const [showImageUpload, setShowImageUpload] = useState(false); + const textareaRef = useRef(null); // Toggle focus mode const toggleFocusMode = useCallback(() => { @@ -2693,6 +2720,33 @@ function WriteSection({ } }, [content]); + // Insert image markdown at cursor position + const handleInsertImage = useCallback((markdown: string) => { + if (editorMode === "markdown" && textareaRef.current) { + const textarea = textareaRef.current; + const start = textarea.selectionStart; + const end = textarea.selectionEnd; + const newContent = content.substring(0, start) + markdown + "\n" + content.substring(end); + setContent(newContent); + // Set cursor position after inserted text + setTimeout(() => { + textarea.focus(); + textarea.setSelectionRange(start + markdown.length + 1, start + markdown.length + 1); + }, 0); + } else if (editorMode === "richtext") { + // For rich text mode, convert markdown to HTML and append + const imgMatch = markdown.match(/!\[(.*?)\]\((.*?)\)/); + if (imgMatch) { + const alt = imgMatch[1]; + const src = imgMatch[2]; + setRichTextHtml(prev => prev + `

${alt}

`); + } + } else { + // Preview mode - just append to content + setContent(prev => prev + "\n" + markdown); + } + }, [content, editorMode]); + // Copy a single frontmatter field const handleCopyField = useCallback( async (fieldName: string, example: string) => { @@ -2950,6 +3004,16 @@ published: false )} {copied ? "Copied" : "Copy All"} + {siteConfig.media?.enabled && ( + + )}
+
+ +

Media Library

+

Upload and manage images for your content

+
+ + {/* Configuration Status */} + {!isBunnyConfigured && ( +
+ )} + + {/* Selection toolbar */} + {results.length > 0 && ( +
+ + {selectMode && ( + <> + + {selectedFiles.size > 0 && ( + + )} + + )} +
+ )} + + {/* Bulk delete confirmation */} + {bulkDeleteConfirm && ( +
+ +

Delete {selectedFiles.size} selected images?

+
+ + +
+
+ )} + + {/* Error message */} + {error && ( +
+ + {error} + +
+ )} + + {/* Upload zone */} +
!uploading && fileInputRef.current?.click()} + > + + {uploading ? ( + <> + +

{uploadProgress}

+ + ) : ( + <> + +

+ Click to upload or drag and drop +

+ PNG, JPG, GIF, WebP up to 10MB + + )} +
+ + {/* File grid */} +
+ {results.map((file) => ( +
toggleFileSelection(file.path) : undefined} + > + {selectMode && ( +
+ {selectedFiles.has(file.path) ? ( + + ) : ( + + )} +
+ )} +
+ {file.path.split("/").pop()} +
+
+ + {file.path.split("/").pop()} + + {formatSize(file.size)} +
+
+ + + + +
+ + {/* Delete confirmation */} + {deleteConfirm === file.path && ( +
+

Delete this image?

+
+ + +
+
+ )} +
+ ))} +
+ + {/* Load more */} + {status === "CanLoadMore" && ( + + )} + + {status === "LoadingMore" && ( +
Loading...
+ )} + + {/* Empty state */} + {results.length === 0 && status !== "LoadingFirstPage" && ( +
+ +

No images uploaded yet

+ Upload your first image to get started +
+ )} + + {/* Usage info */} +
+

Usage

+

+ Click MD to copy markdown image syntax,{" "} + HTML for img tag, or URL for direct link. + Images are served via Bunny CDN for fast global delivery. +

+
+