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 |
||
|---|---|---|
| .. | ||
| .astroagent/skills/ui-ux | ||
| .github | ||
| public | ||
| src | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| astro.config.mjs | ||
| CHANGELOG.md | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| preview.webp | ||
| README.md | ||
QuietPages - Astro Magazine Theme
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
woff2fonts
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.nameSITE.descriptionSITE.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:
titleexcerptdatereadingTimecategorytagsauthorthumbnail
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
- Edit theme colors, typography tokens, radii, and prose styles in
src/styles.css. - Update authors, categories, tags, and site defaults in
src/lib/blog-data.js. - Add or remove navigation items in
src/components/Header.astroandsrc/components/Footer.astro. - Replace example posts in
src/content/blogwith your own MDX content.
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.
