InterestArt is a premium, responsive, SEO-ready art blogging website built using the modern content-first Astro framework. The visual direction is "Soft Elegance Meets Charcoal Drama", utilizing custom CSS variables for light/dark theme toggles, Pinterest-friendly masonry feeds, and dynamic route indexing.
- Framework: Astro (Static Output Mode)
- Styling: Vanilla CSS with CSS Custom Properties
- Data Layer: Astro Content Collections (Markdown/MDX schema validated)
- SEO & Sitemap:
@astrojs/sitemapintegration, dynamic RSS feed (/rss.xml), and crawling configurations (robots.txt).
-
Install dependencies:
npm install
-
Start the local development server:
npm run dev
The server will start at
http://localhost:4321. -
Verify blog database schema and frontmatter fields:
npm run verify
-
Compile a static production build:
npm run build
-
Preview the compiled production site locally:
npm run preview
All primary configurations (branding names, descriptions, author bios, email contact targets, and social profile links) are stored in a single centralized configuration file:
src/data/siteConfig.ts
Open this file and replace the placeholders with your production values:
siteUrl: Changehttps://interestart.exampleto your purchased domain name (e.g.https://interestart.com).contactEmail: Updatehello@interestart.exampleto your direct mail address.social: Swap the Pinterest, Instagram, and GitHub links.author: Personalize the name and avatar initials.
All articles are stored as individual Markdown files inside:
src/content/blog/
To add a new article:
- Create a new file with a
.mdextension, naming it after the desired URL slug (e.g.,src/content/blog/acrylic-painting-basics.md). - Add the strictly typed YAML frontmatter at the top of the file:
--- title: "Acrylic Painting for Beginners: A Complete Guide" description: "Learn basic supplies, blending techniques, and canvas preparation for acrylics." excerpt: "An introduction to paint consistency, blending exercises, and canvas layering." category: "Fine Art and Painting" categorySlug: "painting" date: "2026-07-18" displayDate: "July 18, 2026" readTime: "5 min read" heroImage: "/images/acrylic-painting-basics/hero.webp" heroAlt: "A beautiful acrylic painting landscape" author: "Asra Fatma" tags: ["Acrylics", "Fine Art", "Painting", "Tutorial"] keywords: ["acrylic painting", "learn to paint acrylics", "acrylics for beginners"] featured: false draft: false seasonal: false pinterestImage: "/images/acrylic-painting-basics/hero.webp" ogImage: "/images/acrylic-painting-basics/hero.webp" toc: true ---
- Write the article content in Markdown underneath the frontmatter block.
- Run
npm run verifyto ensure the post satisfies all schema validations.
- Each post gets its own image folder under
public/images/, named to match the post's.mdfilename / URL slug exactly:public/images/<post-slug>/. - Place the hero image as
hero.webpinside that folder (e.g.public/images/acrylic-painting-basics/hero.webp). Additional in-article or Pinterest-specific images can live in the same folder. - Set appropriate Pinterest dimensions (ideal aspect ratio of
2:3, e.g.1000px x 1500pxor1024px x 1536px) for optimal pins. - Reference images in frontmatter via absolute path from the folder above (e.g.
/images/acrylic-painting-basics/hero.webp). - Always write descriptive, keyword-rich
heroAltdescriptions to support Google Image Search crawling.
- Push your local repository to a new private or public GitHub repository.
- Go to the Vercel Dashboard and click Add New > Project.
- Import your GitHub repository.
- Vercel will automatically detect Astro as the framework preset and configure the build command (
npm run build) and output directory (dist). - Click Deploy. Vercel will build and host the site on a
.vercel.appsubdomain.
- In the Vercel project panel, go to Settings > Domains.
- Add your purchased domain name (e.g.
interestart.com). - Update your DNS settings at your domain registrar (e.g., Namecheap, GoDaddy) by adding the Vercel CNAME or A records as instructed by Vercel.
- Vercel will automatically provision free SSL certificates and redirect traffic to your domain.