Web apps · React
Content calendar
Plan posts and newsletters by channel and date, and move them from idea to published.

What you get
An editorial calendar for a small brand: every blog post, newsletter and social post with its channel, owner and publish date, on a board from idea to published. The channels, stages and sample posts live in src/app.ts.
Files
Exactly what is copied into a new project: 12 files, nothing generated.
Explorer 12
import type { AppSpec } from "./types"; /** Everything this app shows. Edit freely. */export const app: AppSpec = { "brand": "Draftboard", "icon": "calendar", "storageKey": "draftboard-posts-v1", "entity": { "singular": "Post", "plural": "Posts" }, "title": "Content calendar", "subtitle": "November plan for the Hearth Coffee Roasters channels", "titleKey": "title", "statusKey": "status", "tones": { "Idea": "neutral", "Drafting": "warn", "Scheduled": "accent", "Published": "good" }, "views": [ "board", "table" ], "fields": [ { "key": "title", "label": "Title", "type": "text", "required": true }, { "key": "channel", "label": "Channel", "type": "select", "options": [ "Blog", "Newsletter", "Instagram", "LinkedIn" ] }, { "key": "owner", "label": "Owner", "type": "text" }, { "key": "publish", "label": "Publish date", "type": "date" }, { "key": "words", "label": "Words", "type": "number" }, { "key": "status", "label": "Status", "type": "select", "options": [ "Idea", "Drafting", "Scheduled", "Published" ] }, { "key": "brief", "label": "Brief", "type": "longtext", "hideInTable": true } ], "summary": [ { "label": "Posts planned", "kind": "count" }, { "label": "Scheduled", "kind": "count", "status": "Scheduled" }, { "label": "Published", "kind": "count", "status": "Published" }, { "label": "Words in draft", "kind": "sum", "field": "words", "status": "Drafting" } ], "seed": [ { "title": "How we pick a single-origin for winter", "channel": "Blog", "owner": "Nadia", "publish": "2026-11-04", "words": 1400, "status": "Drafting", "brief": "Tasting notes from the three finalists, photos from cupping day." }, { "title": "November roast drop", "channel": "Newsletter", "owner": "Owen", "publish": "2026-11-02", "words": 450, "status": "Scheduled", "brief": "Ethiopia Guji and the holiday blend." }, { "title": "Behind the roaster: Tuesday mornings", "channel": "Instagram", "owner": "Nadia", "publish": "2026-11-06", "words": 120, "status": "Scheduled", "brief": "Short reel, 30 seconds." }, { "title": "Why we pay above fair-trade minimums", "channel": "LinkedIn", "owner": "Owen", "publish": "2026-11-12", "words": 600, "status": "Idea", "brief": "" }, { "title": "Grind size cheat sheet", "channel": "Instagram", "owner": "Jess", "publish": "2026-10-28", "words": 80, "status": "Published", "brief": "Carousel, 6 slides." }, { "title": "Brewing at altitude: reader questions", "channel": "Blog", "owner": "Jess", "publish": "2026-11-18", "words": 900, "status": "Drafting", "brief": "Answer the five most-asked questions from October." }, { "title": "Holiday gift guide", "channel": "Newsletter", "owner": "Owen", "publish": "2026-11-24", "words": 0, "status": "Idea", "brief": "Bundles under $40." }, { "title": "October in numbers", "channel": "LinkedIn", "owner": "Nadia", "publish": "2026-10-31", "words": 300, "status": "Published", "brief": "" } ]};Remix
Remix this template
Describe what to change and the agent starts from Content calendar's files. The box is already started for you: finish “Start from Content calendar and …”
Dependencies
Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.
- react^19.1.0
- react-dom^19.1.0
- vite^6.3.0
- @vitejs/plugin-react^4.4.0
- tailwindcss^4.1.0
- @tailwindcss/vite^4.1.0
- typescript^5.8.0
How it runs
- Framework
- Vite + React + TypeScript
- Dev command
- npm run dev
- Build command
- npm run build
- Output directory
- dist
- Port
- 5173
- Entry route
- /
Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.
Keep browsing
All templates
React starter
A clean React + TypeScript + Tailwind single-page app. The default target for AI generation.

Sales leads CRM
A lean CRM for a small sales team: leads, deal values, next follow-ups and a pipeline board.

Wedding guest list
Keep the guest list, RSVPs, meal choices and table plan for the big day in one place.
Build on Content calendar
Create a free account, start from this template, and ask the AI agent to turn it into your app.