seedproject-web/app
Carlos Arias 1fdfc3174b feat(api): Foundation — installer, migrations, two-tier auth, health round-trip
Builds the /api Foundation into the base (per api/.memory/foundation-plan.md):
- app/Services/Installer.php  DB test + dump.sql import + crypto keys + /api config + lock
- app/Services/Migrator.php   versioned db/migrations/*.sql runner (+ migrations table)
- commands/InstallCommand.php (app:install), commands/MigrateCommand.php (db:migrate)
- app/Controllers/{JsonController,PublicController,ApiController}  envelope + two-tier auth
- public/controllers/{health,admin}.php  GET /api/health (public), /api/admin/ping (bearer)
- db/migrations/001_*.sql  smoke migration
- install/controllers/index.php  web wizard now delegates to Installer (path bugs fixed, lock)
- console + composer.json  register commands / add commands to classmap
- app/src/pages/api-health-test.astro  browser round-trip proof page

Verified (no DB): composer install OK; php console lists app:install + db:migrate;
PSR-4 classes autoload; CLI fails gracefully (validation, bad DB, missing config) with
no artifacts left; app builds 14 pages. Live DB + HTTP round-trip pending a served instance.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SYHWLHihq3v9nxNwoPCKSn
2026-07-04 23:23:51 +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
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.