seedproject-web/app
Carlos Arias f41fa652ac fix: repair the fresh-clone flow — track api/public + app/public, fix installer schema
Three bugs found deploying a fresh clone to seedproject.com, each fatal
to the documented "spin up a new site" flow:

- .gitignore: the unanchored `public/` pattern (meant for the root build
  output) also ignored api/public/ (the framework's front controller,
  controllers, models, views) and app/public/ (theme static assets:
  fonts, avatar placeholder). Neither was ever committed, so every fresh
  clone 500'd on all /api routes and 404'd on theme assets. Anchor the
  pattern to /public/ and commit both directories.

- api/install/dump.sql: stray `CREATE DATABASE ochenta80_db123` (SQLyog
  export artifact) aborted `php console app:install` for any
  non-privileged DB user. The schema must import into whatever database
  the installer connects to.

- PluginManager::boot() queries sp_plugins on every request, but no
  shipped schema creates it — even a successful install 500'd on every
  endpoint. Add migration 002_create_sp_plugins.sql matching the columns
  PluginManager reads/writes.

Also empty api/system/errors.json, which shipped with stale error logs
from an unrelated project.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C3JqxTe7TKaR7xufcMr7Ds
2026-07-05 00:15:55 +00:00
..
.astroagent/skills/ui-ux chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
.github chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
public fix: repair the fresh-clone flow — track api/public + app/public, fix installer schema 2026-07-05 00:15:55 +00:00
src feat(api): Foundation — installer, migrations, two-tier auth, health round-trip 2026-07-04 23:23:51 +00:00
.gitignore chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
.prettierignore chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
.prettierrc chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
AGENTS.md chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
astro.config.mjs feat: config-driven identity (site.config.json) + buildable sample content 2026-07-04 23:06:23 +00:00
CHANGELOG.md chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
LICENSE chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
package-lock.json chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
package.json chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
preview.webp chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00
README.md chore: scaffold SeedProject base (Phase 1) 2026-07-04 22:53:10 +00:00

QuietPages - Astro Magazine Theme

Quiet Pages theme preview

Astro 6 Tailwind CSS 4 MDX License MIT

Preview: quietpages-eta.vercel.app

QuietPages is a calm Astro theme for independent magazines, personal journals, and long-form editorial sites. It keeps the reading experience simple and fast while including the pieces a production-ready publication needs: archives, taxonomy pages, author pages, RSS, sitemap, structured metadata, and self-hosted fonts.

Features

  • Editorial homepage with a full-bleed visual lead story
  • Blog archive with search, category filters, tag filters, and load-more pagination
  • MDX blog posts powered by Astro content collections
  • Category, tag, and author index pages
  • Article pages with breadcrumbs, table of contents, sharing actions, related posts, and adjacent navigation
  • RSS feed, XML sitemap, and dynamic robots.txt
  • Canonical URLs, Open Graph tags, Twitter card metadata, and article JSON-LD
  • Light and dark modes with system preference support
  • Self-hosted Inter, Fraunces, and JetBrains Mono fonts
  • Accessible landmarks, visible focus states, skip link, and reduced-motion handling
  • Responsive images through Astro's image pipeline
  • Contact page and custom 404 page

Tech Stack

  • Astro 6
  • Tailwind CSS 4 via the Vite plugin
  • MDX
  • Astro content collections
  • Self-hosted woff2 fonts

Getting Started

Install dependencies:

npm install

Start the development server:

npm run dev

Build for production:

npm run build

Preview the production build locally:

npm run preview

Theme Setup

The main theme settings live in src/lib/blog-data.js:

  • SITE.name
  • SITE.description
  • SITE.url
  • navigation-adjacent data such as authors, categories, and tags

Set your production URL before deploying:

SITE_URL=https://your-domain.com

You can also use:

PUBLIC_SITE_URL=https://your-domain.com

This keeps canonical URLs, Open Graph URLs, RSS links, robots.txt, and the sitemap aligned with the deployed domain.

Content

Blog posts live in src/content/blog. Each post uses an index.mdx file inside its own folder, with local images stored beside the content.

Required frontmatter is validated in src/content.config.js:

  • title
  • excerpt
  • date
  • readingTime
  • category
  • tags
  • author
  • thumbnail

SEO

QuietPages includes:

  • unique page titles and descriptions
  • canonical URLs generated from the configured site URL
  • Open Graph and Twitter card metadata
  • article JSON-LD on post pages
  • XML sitemap at /sitemap.xml
  • RSS feed at /rss.xml
  • robots.txt with a sitemap reference

Main SEO files:

Images and Assets

The repository includes preview.webp for the README preview. Content images live beside each MDX post, and shared theme assets live in src/assets.

Fonts are self-hosted in public/fonts. Replace those files and the @font-face declarations in src/styles.css if you want a different type system.

Customization

Deployment

QuietPages works anywhere Astro can deploy. For Vercel, Netlify, or another static host, set SITE_URL to the production domain before building so metadata and feeds use absolute URLs.

License

This project is licensed under the MIT License.