827 lines
20 KiB
JSON
827 lines
20 KiB
JSON
{
|
|
"$schema": "https://emdashcms.com/seed.schema.json",
|
|
"version": "1",
|
|
"meta": {
|
|
"name": "Blog Starter",
|
|
"description": "A blog with posts and pages - fully editable via EmDash admin",
|
|
"author": "EmDash"
|
|
},
|
|
"settings": {
|
|
"title": "My Blog",
|
|
"tagline": "Thoughts on building for the web"
|
|
},
|
|
"collections": [
|
|
{
|
|
"slug": "homepage",
|
|
"label": "Homepage",
|
|
"labelSingular": "Homepage",
|
|
"supports": [
|
|
"drafts",
|
|
"revisions",
|
|
"search"
|
|
],
|
|
"singleton": true,
|
|
"fields": [
|
|
{
|
|
"slug": "hero_headline",
|
|
"label": "Hero Headline",
|
|
"type": "string",
|
|
"required": true
|
|
},
|
|
{
|
|
"slug": "hero_subtitle",
|
|
"label": "Hero Subtitle",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "hero_button_text",
|
|
"label": "Hero Button Text",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "hero_button_url",
|
|
"label": "Hero Button URL",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "hero_image",
|
|
"label": "Hero Image",
|
|
"type": "image"
|
|
},
|
|
{
|
|
"slug": "features_section_title",
|
|
"label": "Features Section Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "features_section_subtitle",
|
|
"label": "Features Section Subtitle",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_1_title",
|
|
"label": "Feature 1 Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "feature_1_description",
|
|
"label": "Feature 1 Description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_1_icon",
|
|
"label": "Feature 1 Icon (SVG path)",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_2_title",
|
|
"label": "Feature 2 Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "feature_2_description",
|
|
"label": "Feature 2 Description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_2_icon",
|
|
"label": "Feature 2 Icon (SVG path)",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_3_title",
|
|
"label": "Feature 3 Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "feature_3_description",
|
|
"label": "Feature 3 Description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_3_icon",
|
|
"label": "Feature 3 Icon (SVG path)",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_4_title",
|
|
"label": "Feature 4 Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "feature_4_description",
|
|
"label": "Feature 4 Description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_4_icon",
|
|
"label": "Feature 4 Icon (SVG path)",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_5_title",
|
|
"label": "Feature 5 Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "feature_5_description",
|
|
"label": "Feature 5 Description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_5_icon",
|
|
"label": "Feature 5 Icon (SVG path)",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_6_title",
|
|
"label": "Feature 6 Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "feature_6_description",
|
|
"label": "Feature 6 Description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "feature_6_icon",
|
|
"label": "Feature 6 Icon (SVG path)",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "comparison_title",
|
|
"label": "Comparison Section Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "comparison_subtitle",
|
|
"label": "Comparison Section Subtitle",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "cta_title",
|
|
"label": "CTA Title",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "cta_subtitle",
|
|
"label": "CTA Subtitle",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "cta_button_text",
|
|
"label": "CTA Button Text",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "cta_button_url",
|
|
"label": "CTA Button URL",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"slug": "footer_tagline",
|
|
"label": "Footer Tagline",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "footer_about_text",
|
|
"label": "Footer About Text",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"slug": "footer_copyright",
|
|
"label": "Footer Copyright",
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"slug": "posts",
|
|
"label": "Posts",
|
|
"labelSingular": "Post",
|
|
"supports": [
|
|
"drafts",
|
|
"revisions",
|
|
"search",
|
|
"seo"
|
|
],
|
|
"commentsEnabled": true,
|
|
"fields": [
|
|
{
|
|
"slug": "title",
|
|
"label": "Title",
|
|
"type": "string",
|
|
"required": true,
|
|
"searchable": true
|
|
},
|
|
{
|
|
"slug": "featured_image",
|
|
"label": "Featured Image",
|
|
"type": "image"
|
|
},
|
|
{
|
|
"slug": "content",
|
|
"label": "Content",
|
|
"type": "portableText",
|
|
"searchable": true
|
|
},
|
|
{
|
|
"slug": "excerpt",
|
|
"label": "Excerpt",
|
|
"type": "text"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"slug": "pages",
|
|
"label": "Pages",
|
|
"labelSingular": "Page",
|
|
"supports": [
|
|
"drafts",
|
|
"revisions",
|
|
"search"
|
|
],
|
|
"fields": [
|
|
{
|
|
"slug": "title",
|
|
"label": "Title",
|
|
"type": "string",
|
|
"required": true,
|
|
"searchable": true
|
|
},
|
|
{
|
|
"slug": "content",
|
|
"label": "Content",
|
|
"type": "portableText",
|
|
"searchable": true
|
|
},
|
|
{
|
|
"slug": "featured_image",
|
|
"label": "Featured Image",
|
|
"type": "image"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"taxonomies": [
|
|
{
|
|
"name": "category",
|
|
"label": "Categories",
|
|
"labelSingular": "Category",
|
|
"hierarchical": true,
|
|
"collections": [
|
|
"posts"
|
|
],
|
|
"terms": [
|
|
{
|
|
"slug": "development",
|
|
"label": "Development"
|
|
},
|
|
{
|
|
"slug": "design",
|
|
"label": "Design"
|
|
},
|
|
{
|
|
"slug": "notes",
|
|
"label": "Notes"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "tag",
|
|
"label": "Tags",
|
|
"labelSingular": "Tag",
|
|
"hierarchical": false,
|
|
"collections": [
|
|
"posts"
|
|
],
|
|
"terms": [
|
|
{
|
|
"slug": "webdev",
|
|
"label": "Web Development"
|
|
},
|
|
{
|
|
"slug": "opinion",
|
|
"label": "Opinion"
|
|
},
|
|
{
|
|
"slug": "tools",
|
|
"label": "Tools"
|
|
},
|
|
{
|
|
"slug": "creativity",
|
|
"label": "Creativity"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"bylines": [
|
|
{
|
|
"id": "byline-editorial",
|
|
"slug": "emdash-editorial",
|
|
"displayName": "EmDash Editorial"
|
|
},
|
|
{
|
|
"id": "byline-guest",
|
|
"slug": "guest-contributor",
|
|
"displayName": "Guest Contributor",
|
|
"isGuest": true
|
|
}
|
|
],
|
|
"menus": [
|
|
{
|
|
"name": "primary",
|
|
"label": "Primary Navigation",
|
|
"items": [
|
|
{
|
|
"type": "custom",
|
|
"label": "Home",
|
|
"url": "/"
|
|
},
|
|
{
|
|
"type": "custom",
|
|
"label": "About",
|
|
"url": "/pages/about"
|
|
},
|
|
{
|
|
"type": "custom",
|
|
"label": "Posts",
|
|
"url": "/posts"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"widgetAreas": [
|
|
{
|
|
"name": "sidebar",
|
|
"label": "Sidebar",
|
|
"description": "Widget area displayed on single post pages",
|
|
"widgets": [
|
|
{
|
|
"type": "component",
|
|
"componentId": "core:search",
|
|
"title": "Search"
|
|
},
|
|
{
|
|
"type": "component",
|
|
"componentId": "core:categories",
|
|
"title": "Categories"
|
|
},
|
|
{
|
|
"type": "component",
|
|
"componentId": "core:tags",
|
|
"title": "Tags"
|
|
},
|
|
{
|
|
"type": "component",
|
|
"componentId": "core:recent-posts",
|
|
"title": "Recent Posts",
|
|
"settings": {
|
|
"count": 5,
|
|
"showDate": true
|
|
}
|
|
},
|
|
{
|
|
"type": "component",
|
|
"componentId": "core:archives",
|
|
"title": "Archives",
|
|
"settings": {
|
|
"type": "monthly",
|
|
"limit": 6
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "footer",
|
|
"label": "Footer",
|
|
"description": "Widget area displayed in the site footer",
|
|
"widgets": [
|
|
{
|
|
"type": "content",
|
|
"title": "About",
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "A blog about software, design, and the occasional stray thought.",
|
|
"_key": "span-1-0-2946467384059603003"
|
|
}
|
|
],
|
|
"_key": "block-1-7796766743032834174"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"sections": [
|
|
{
|
|
"slug": "newsletter-signup",
|
|
"title": "Newsletter Signup",
|
|
"description": "A call-to-action block for newsletter subscriptions",
|
|
"keywords": [
|
|
"newsletter",
|
|
"subscribe",
|
|
"email",
|
|
"cta"
|
|
],
|
|
"source": "theme",
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "h3",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "Stay in the loop",
|
|
"_key": "span-1-0--1631596006100928859"
|
|
}
|
|
],
|
|
"_key": "block-1--2556677380635054136"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "Get notified when new posts are published. No spam, unsubscribe anytime.",
|
|
"_key": "span-1-0--1259693133588870057"
|
|
}
|
|
],
|
|
"_key": "block-1-2350431564039470076"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"slug": "about-author",
|
|
"title": "About the Author",
|
|
"description": "Brief author bio for use in posts or pages",
|
|
"keywords": [
|
|
"author",
|
|
"bio",
|
|
"about"
|
|
],
|
|
"source": "theme",
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "A software developer who writes about building things on the web. Based somewhere with good coffee and reliable internet.",
|
|
"_key": "span-1-0-9216006467512063059"
|
|
}
|
|
],
|
|
"_key": "block-1-7077157664645664155"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"content": {
|
|
"homepage": [
|
|
{
|
|
"id": "homepage-main",
|
|
"slug": "main",
|
|
"status": "published",
|
|
"data": {
|
|
"hero_headline": "The CMS that\nruns on your server",
|
|
"hero_subtitle": "EmDash is a full-stack TypeScript CMS built on Astro. No cloud account required, no external dependencies. Just a complete admin panel and your content.",
|
|
"hero_button_text": "Open Admin Panel",
|
|
"hero_button_url": "/_emdash/admin",
|
|
"hero_image": {
|
|
"id": "img-0001",
|
|
"src": "https://images.unsplash.com/photo-1461749280684-dccba630e2f6?w=1200&h=800&fit=crop",
|
|
"alt": "Code on a monitor"
|
|
},
|
|
"features_section_title": "Everything you need",
|
|
"features_section_subtitle": "A complete CMS without the vendor lock-in",
|
|
"feature_1_title": "Fully Self-Hosted",
|
|
"feature_1_description": "SQLite, D1, Turso, or PostgreSQL. Your data stays on your servers. No cloud account required.",
|
|
"feature_1_icon": "M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",
|
|
"feature_2_title": "Admin Panel",
|
|
"feature_2_description": "Visual schema builder, media library, navigation menus. Full admin at /_emdash/admin",
|
|
"feature_2_icon": "M3 3h18v18H3zM3 9h18M9 21V9",
|
|
"feature_3_title": "Passkey Auth",
|
|
"feature_3_description": "WebAuthn passkey-first authentication with OAuth and magic link fallbacks. Role-based access control.",
|
|
"feature_3_icon": "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z",
|
|
"feature_4_title": "Built-in MCP",
|
|
"feature_4_description": "Model Context Protocol server for AI tools. Claude and ChatGPT can interact with your site directly.",
|
|
"feature_4_icon": "M12 6v6l4 2",
|
|
"feature_5_title": "Plugin System",
|
|
"feature_5_description": "Sandboxed plugins on Cloudflare Workers. Define capabilities, run safely in isolation.",
|
|
"feature_5_icon": "M16 18l6-6-6-6M8 6l-6 6 6 6",
|
|
"feature_6_title": "WordPress Import",
|
|
"feature_6_description": "Import posts, pages, media, and taxonomies from WXR exports, REST API, or WordPress.com.",
|
|
"feature_6_icon": "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8zM14 2v6h6M16 13H8M16 17H8M16 9H8",
|
|
"comparison_title": "EmDash vs Tina CMS",
|
|
"comparison_subtitle": "Both work with Astro, but differ in approach",
|
|
"cta_title": "Ready to get started?",
|
|
"cta_subtitle": "Clone the template, run bootstrap, and you're ready to build.",
|
|
"cta_button_text": "Try Admin Panel",
|
|
"cta_button_url": "/_emdash/admin",
|
|
"footer_tagline": "Thoughts on building for the web",
|
|
"footer_about_text": "A blog about software, design, and the occasional stray thought.",
|
|
"footer_copyright": "Powered by EmDash CMS"
|
|
}
|
|
}
|
|
],
|
|
"pages": [
|
|
{
|
|
"id": "about",
|
|
"slug": "about",
|
|
"status": "published",
|
|
"data": {
|
|
"title": "About",
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "A place for writing about software, design, and the occasional stray thought. No posting schedule, no newsletter funnel. Just things I wanted to write down.",
|
|
"_key": "span-1-0-6368014575960974151"
|
|
}
|
|
],
|
|
"_key": "block-1--1079749881349315145"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "Built with Astro and EmDash. The source is open if you want to see how it works.",
|
|
"_key": "span-1-0-2728501793444554227"
|
|
}
|
|
],
|
|
"_key": "block-1-8666535223267766186"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"posts": [
|
|
{
|
|
"id": "post-1",
|
|
"slug": "building-for-the-long-term",
|
|
"status": "published",
|
|
"data": {
|
|
"title": "Building for the Long Term",
|
|
"excerpt": "The frameworks will change. The databases will change. What survives is the clarity of your thinking.",
|
|
"featured_image": {
|
|
"id": "img-0002",
|
|
"src": "https://images.unsplash.com/photo-1461749280684-dccba630e2f6?w=1200&h=800&fit=crop",
|
|
"alt": "Code on a monitor in a dark room"
|
|
},
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "Every few years the industry collectively decides that everything we've been doing is wrong and there's a better way. New frameworks, new paradigms, new build tools. The churn is relentless, and if you're not careful, you spend more time migrating than building.",
|
|
"_key": "span-1-0--4578767547205737399"
|
|
}
|
|
],
|
|
"_key": "block-1-453171626120699366"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "I've been writing software long enough to have seen several of these cycles. jQuery to Backbone to Angular to React to whatever comes next. Each transition felt urgent at the time. Looking back, the things that actually mattered were rarely about the framework.",
|
|
"_key": "span-1-0--7711665862837639974"
|
|
}
|
|
],
|
|
"_key": "block-1-4963103923913498599"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "h2",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "What survives",
|
|
"_key": "span-1-0-8159391152054512855"
|
|
}
|
|
],
|
|
"_key": "block-1-8748999694854857005"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "Clean data models survive. Clear boundaries between systems survive. Good naming survives. The decision to keep things simple when you could have made them clever - that definitely survives.",
|
|
"_key": "span-1-0-3159414369117353830"
|
|
}
|
|
],
|
|
"_key": "block-1--8204300170394394943"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "What doesn't survive is code that was written to impress, abstractions built for problems that never materialized, and architectures designed around a framework's opinions rather than the domain's reality.",
|
|
"_key": "span-1-0-1193110648522154311"
|
|
}
|
|
],
|
|
"_key": "block-1-2514906331005036434"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "The best code I've written is boring. It reads like prose, does one thing well, and doesn't require a PhD in category theory to understand. The worst code I wrote was technically impressive at the time.",
|
|
"_key": "span-1-0-5576519041062158"
|
|
}
|
|
],
|
|
"_key": "block-1-8564154851318889042"
|
|
}
|
|
]
|
|
},
|
|
"bylines": [
|
|
{
|
|
"byline": "byline-editorial"
|
|
},
|
|
{
|
|
"byline": "byline-guest",
|
|
"roleLabel": "Guest essay"
|
|
}
|
|
],
|
|
"taxonomies": {
|
|
"category": [
|
|
"development"
|
|
],
|
|
"tag": [
|
|
"opinion"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "post-2",
|
|
"slug": "the-case-for-static",
|
|
"status": "published",
|
|
"data": {
|
|
"title": "The Case for Static",
|
|
"excerpt": "Static sites aren't a step backwards. They're what you get when you take performance and simplicity seriously.",
|
|
"featured_image": {
|
|
"id": "img-0003",
|
|
"src": "https://images.unsplash.com/photo-1499750310107-5fef28a66643?w=1200&h=800&fit=crop",
|
|
"alt": "Laptop and coffee on a wooden table"
|
|
},
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "There's a certain irony in the fact that the web started static, went dynamic, and is now swinging back toward static again. But the static sites of today aren't the hand-coded HTML pages of 1998. They're generated, optimized, and deployed to edge networks that serve them in milliseconds.",
|
|
"_key": "span-1-0-6823213819728337474"
|
|
}
|
|
],
|
|
"_key": "block-1--7437944285408028127"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "h2",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "The performance argument",
|
|
"_key": "span-1-0-5544892970958750699"
|
|
}
|
|
],
|
|
"_key": "block-1-7080795837402037274"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "A static file served from a CDN is as fast as the web gets. No cold starts, no database queries, no server-side rendering overhead. The Time to First Byte is essentially the network latency to your nearest edge node. You can't beat physics.",
|
|
"_key": "span-1-0--1181329828476334338"
|
|
}
|
|
],
|
|
"_key": "block-1-3184601500907317910"
|
|
}
|
|
]
|
|
},
|
|
"bylines": [
|
|
{
|
|
"byline": "byline-editorial"
|
|
}
|
|
],
|
|
"taxonomies": {
|
|
"category": [
|
|
"development"
|
|
],
|
|
"tag": [
|
|
"webdev",
|
|
"opinion"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "post-3",
|
|
"slug": "learning-in-public",
|
|
"status": "published",
|
|
"data": {
|
|
"title": "Learning in Public",
|
|
"excerpt": "Writing about what you're learning is the fastest way to find out what you don't actually understand.",
|
|
"featured_image": {
|
|
"id": "img-0004",
|
|
"src": "https://images.unsplash.com/photo-1432821596592-e2c18b78144f?w=1200&h=800&fit=crop",
|
|
"alt": "Notebook and pen on a desk"
|
|
},
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "I started writing about things I was learning not because I had anything original to say, but because I kept forgetting what I'd figured out. The blog posts were notes to my future self, published publicly more out of laziness than courage.",
|
|
"_key": "span-1-0--3305331763265157022"
|
|
}
|
|
],
|
|
"_key": "block-1--9220457393288936320"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "h2",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "The fear of being wrong",
|
|
"_key": "span-1-0--8442928675844475654"
|
|
}
|
|
],
|
|
"_key": "block-1-7621972026588672090"
|
|
},
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "The biggest barrier isn't time or writing skill. It's the fear of publishing something that turns out to be wrong. But here's the thing: being wrong publicly is one of the most efficient ways to learn. Someone will correct you, often kindly, and you'll remember that correction forever.",
|
|
"_key": "span-1-0--7189841934513865939"
|
|
}
|
|
],
|
|
"_key": "block-1--1055699326484001862"
|
|
}
|
|
]
|
|
},
|
|
"taxonomies": {
|
|
"category": [
|
|
"notes"
|
|
],
|
|
"tag": [
|
|
"opinion"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "post-draft",
|
|
"slug": "work-in-progress",
|
|
"status": "draft",
|
|
"data": {
|
|
"title": "Work in Progress",
|
|
"excerpt": "This post is still being written.",
|
|
"content": [
|
|
{
|
|
"_type": "block",
|
|
"style": "normal",
|
|
"children": [
|
|
{
|
|
"_type": "span",
|
|
"text": "This is a draft post that won't appear in the public listing.",
|
|
"_key": "span-1-0--7838103084601048591"
|
|
}
|
|
],
|
|
"_key": "block-1--6470568077950651491"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |