Problem. A small press wanted to sell original books online — author pages, covers, samples, and checkout — not a magazine archive. The old site was a brochure with PDFs in a folder. Google barely indexed the titles. A new release day stalled the pages, and there was no staging to preview a drop before it went live.
What we built. We stood the store up on AWS: CloudFront in front of the catalog, object storage for covers, interiors, and sample chapters, a managed database for books and authors, separate staging and production, and a deploy pipeline so a new title could go live without SSH. Each book and author got a stable URL. Product, author, and “buy now” pages were treated as commercial pages, not afterthoughts — cart, tax, and print vs. ebook in the same flow.
What we optimized. Technical SEO first: sitemap by book and author, Book and Person schema, canonicals for hardcover vs. ebook, image compression so cover-heavy pages hit Core Web Vitals. Then demand work: title and author pages mapped to how people search for the books, internal links from author to buy, Search Console and GA4 on product views and checkout starts. After launch we kept a retainer for cache, index coverage, and release-day load.
Timeline. About 8–10 weeks to launch. SEO compounding over the following quarter.
Stack. S3, CloudFront, ECS or Elastic Beanstalk, RDS, Route 53, GitHub Actions, Schema.org, Search Console, GA4.
Outcome: the bookstore is live on a stack that survives a new-title drop, Google can crawl books and authors, and sales are not limited to people who already knew the press.