Initial setup of Theater Ziefen website
- Set up Astro with TypeScript - Integrate TinaCMS for content management - Create homepage with hero section and recent posts - Build blog listing and individual post pages - Add About and Contact pages - Implement responsive design with theater theme - Configure Netlify deployment - Add comprehensive documentation for developers and editors Tech stack: - Framework: Astro 5.x - CMS: TinaCMS with Git-based workflow - Content: MDX format for blog and pages - Styling: Scoped CSS with responsive design - Deployment: Netlify (configured) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
import { defineConfig } from "tinacms";
|
||||
|
||||
// Your TinaCMS configuration
|
||||
export default defineConfig({
|
||||
branch: process.env.TINA_BRANCH || "main",
|
||||
clientId: process.env.TINA_CLIENT_ID || "",
|
||||
token: process.env.TINA_TOKEN || "",
|
||||
|
||||
build: {
|
||||
outputFolder: "admin",
|
||||
publicFolder: "public",
|
||||
},
|
||||
media: {
|
||||
tina: {
|
||||
mediaRoot: "images",
|
||||
publicFolder: "public",
|
||||
},
|
||||
},
|
||||
schema: {
|
||||
collections: [
|
||||
{
|
||||
name: "post",
|
||||
label: "Blog Posts",
|
||||
path: "content/blog",
|
||||
format: "mdx",
|
||||
fields: [
|
||||
{
|
||||
type: "string",
|
||||
name: "title",
|
||||
label: "Title",
|
||||
isTitle: true,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: "datetime",
|
||||
name: "date",
|
||||
label: "Publication Date",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: "string",
|
||||
name: "excerpt",
|
||||
label: "Excerpt",
|
||||
required: true,
|
||||
description: "Short summary of the blog post",
|
||||
},
|
||||
{
|
||||
type: "image",
|
||||
name: "coverImage",
|
||||
label: "Cover Image",
|
||||
description: "Featured image for the blog post",
|
||||
},
|
||||
{
|
||||
type: "rich-text",
|
||||
name: "body",
|
||||
label: "Body",
|
||||
isBody: true,
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
defaultItem: () => {
|
||||
return {
|
||||
title: "New Blog Post",
|
||||
date: new Date().toISOString(),
|
||||
excerpt: "",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "page",
|
||||
label: "Pages",
|
||||
path: "content/pages",
|
||||
format: "mdx",
|
||||
fields: [
|
||||
{
|
||||
type: "string",
|
||||
name: "title",
|
||||
label: "Title",
|
||||
isTitle: true,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: "string",
|
||||
name: "description",
|
||||
label: "Description",
|
||||
description: "Meta description for SEO",
|
||||
},
|
||||
{
|
||||
type: "rich-text",
|
||||
name: "body",
|
||||
label: "Content",
|
||||
isBody: true,
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user