Internal Documentation

Authors Tranquility Press
Website Documentation

πŸ“… June 3, 2026🌐 atp-website-one.vercel.appπŸ”’ Not indexed

1. Project Overview

Authors Tranquility Press (ATP) is a full-service self-publishing company. This website is the primary marketing and conversion platform for the business, enabling authors to:

  • Discover and compare publishing service packages
  • Take a guided quiz to find the right publishing package
  • Browse a curated bookstore of published ATP titles
  • Access free author resources and interactive tools
  • Submit leads and book free consultations
  • Download a free Publishing Guide (email-gated)

The site is built as a modern, SEO-optimized Next.js application with server-side rendering, static generation, and a headless CMS (Sanity) for bookstore content.

2. Tech Stack

LayerTechnology
FrameworkNext.js 15 (App Router)
LanguageTypeScript
StylingCSS Modules (scoped per component)
CMSSanity v3 (headless, for Bookstore)
EmailResend API
DeploymentVercel
Package Managernpm
Version ControlGit / GitHub
Key dependencies: next, sanity / next-sanity, resend, @floating-ui/react-dom

3. Project Structure

D:\ATP\Revamp\
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ ATP-logo-light-1.png          # Full logo β€” light (used in emails)
β”‚   β”œβ”€β”€ ATP-logo-dark.png             # Full logo β€” dark
β”‚   β”œβ”€β”€ ATP_Authors_Publishing_Guide.pdf
β”‚   └── ATP_Authors_Publishing_Guide_Page_1.jpg
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                          # Next.js App Router pages
β”‚   β”‚   β”œβ”€β”€ page.tsx                  # Homepage
β”‚   β”‚   β”œβ”€β”€ about/                    # About Us
β”‚   β”‚   β”œβ”€β”€ faq/                      # FAQ page
β”‚   β”‚   β”œβ”€β”€ contact/                  # Contact form
β”‚   β”‚   β”œβ”€β”€ quiz/                     # Package quiz
β”‚   β”‚   β”œβ”€β”€ bookstore/                # Bookstore + [slug] detail
β”‚   β”‚   β”œβ”€β”€ marketing/                # Marketing Services hub
β”‚   β”‚   β”œβ”€β”€ resources/                # Author tools
β”‚   β”‚   β”œβ”€β”€ blog/                     # Blog (placeholder)
β”‚   β”‚   β”œβ”€β”€ docs/                     # This documentation page
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ [slug]/               # Dynamic service detail
β”‚   β”‚   β”‚   └── publishing-packages/  # Flagship packages page
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ contact/
β”‚   β”‚   β”‚   β”œβ”€β”€ ebook-lead/
β”‚   β”‚   β”‚   β”œβ”€β”€ quiz-lead/
β”‚   β”‚   β”‚   └── download-guide/
β”‚   β”‚   └── studio/                   # Sanity Studio (embedded)
β”‚   β”‚
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ layout/     Header, Footer, Container, SiteShell
β”‚   β”‚   β”œβ”€β”€ home/       Homepage section components
β”‚   β”‚   β”œβ”€β”€ services/   ServiceDetail, PricingTable, service-specific content
β”‚   β”‚   β”œβ”€β”€ pricing/    PricingTable (compare + grid views)
β”‚   β”‚   β”œβ”€β”€ books/      Bookstore components
β”‚   β”‚   β”œβ”€β”€ forms/      ContactForm, InlineLeadForm
β”‚   β”‚   β”œβ”€β”€ quiz/       PublishingQuiz, QuizResult, QuizLeadCapture
β”‚   β”‚   β”œβ”€β”€ tools/      RoyaltyCalc, CostCalc, BlurbBuilder, etc.
β”‚   β”‚   β”œβ”€β”€ shared/     FloatingCTA, EbookPopup, PageCTA, TrustBar
β”‚   β”‚   └── ui/         Button, Badge, SectionHeader, RevealItem
β”‚   β”‚
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   β”œβ”€β”€ services.ts    All services, packages, FAQs
β”‚   β”‚   β”œβ”€β”€ nav.ts         Navigation structure
β”‚   β”‚   β”œβ”€β”€ faqData.ts     Standalone FAQ categories
β”‚   β”‚   β”œβ”€β”€ quizData.ts    Quiz questions + recommendation logic
β”‚   β”‚   β”œβ”€β”€ books.ts       Bookstore seed data
β”‚   β”‚   └── testimonials.ts
β”‚   β”‚
β”‚   └── lib/
β”‚       β”œβ”€β”€ email/template.ts   HTML email template
β”‚       β”œβ”€β”€ email/sheets.ts     Google Sheets lead logging
β”‚       └── formatPhone.ts
β”‚
β”œβ”€β”€ next.config.ts
└── DOCUMENTATION.md

4. Pages & Routes

Public Pages

RouteDescription
/Homepage β€” hero, services overview, how it works, testimonials, featured books, newsletter
/aboutAbout Us β€” company story, stats (500+ books, 4.9β˜…, 12+ years, 40+ countries), values
/servicesServices overview β€” all services grouped by category
/services/publishing-packagesFlagship service β€” Compare Features table with highlighted columns
/services/[slug]Dynamic service detail β€” turnaround cards, pricing table, FAQ accordion, lead form
/marketingMarketing hub β€” tabbed category filter with service cards and starting prices
/bookstoreSanity-powered book listing with filters and search
/bookstore/[slug]Individual book detail page
/quizMulti-step package quiz with lead capture and recommendation
/faqCategorized accordion FAQ β€” 7 categories, 60+ questions
/contactContact form with service selector
/resourcesAuthor tools β€” royalty calc, cost calc, blurb builder, title generator, etc.
/docsThis documentation page (not indexed, not in nav)

API Routes

RouteMethodPurpose
/api/contactPOSTProcesses contact form; sends notification + confirmation emails via Resend
/api/ebook-leadPOSTCaptures lead; sends free guide email with HMAC-signed download token
/api/quiz-leadPOSTCaptures quiz lead with recommended package
/api/download-guideGETVerifies HMAC token; logs download to Google Sheets

5. Services Catalog

All services are defined in src/data/services.ts as a typed Service[] array.

Publishing Services

SlugTitleCategory
/services/publishing-packagesPublishing Packagespublishing
/services/editorial-servicesEditorial Serviceseditorial
/services/book-designBook Designdesign
/services/ghostwritingGhostwritingpublishing
/services/audiobookAudiobook Productionpublishing
/services/authors-tranquility-juniorAuthor's Tranquility Juniorpublishing
/services/ebook-conversioneBook Conversiondigital
/services/book-illustrationBook Illustrationdesign

Marketing & Distribution Services

SlugTitleNav Group
/services/author-websiteAuthor WebsiteFoundation
/services/book-sparkBook SparkFoundation
/services/social-media-advertisingSocial Media AdsLaunch & Promotion
/services/digital-advertisingDigital AdvertisingLaunch & Promotion
/services/press-releasePress ReleaseMedia & Press
/services/media-coverageMedia CoverageMedia & Press
/services/print-advertisingPrint AdvertisingMedia & Press
/services/book-trailersBook TrailersContent & Video
/services/book-to-screenBook-to-Screen ServicesContent & Video
/services/book-reviewsBook ReviewsCredibility & Recognition
/services/book-awardsBook AwardsCredibility & Recognition
/services/international-book-fairsInternational Book FairsPremium Exposure
/services/times-square-billboardTimes Square BillboardPremium Exposure

6. Key Components

Layout

Header.tsx

Fixed top nav with desktop mega menu (two columns: Publishing Services / Marketing & Distribution with category sub-groups) and mobile accordion. Renders logo, nav items, Browse Bookstore link, and Start Publishing CTA.

Footer.tsx

Full-width footer with brand column (logo, tagline, social links), three link columns (Services, Explore, Support), newsletter form, and legal links. Marketing Services link preserved here.

SiteShell.tsx

Global wrapper rendered around all pages. Mounts Header, Footer, FloatingCTA (speed dial), and EbookPopup.

Container.tsx

Max-width content wrapper with consistent horizontal padding.

Shared / Global

FloatingCTA.tsx

Speed dial FAB (bottom-right). Gold + trigger expands upward into 4 icon-only action buttons: Find My Package (quiz panel), View Packages, Get in Touch, Browse Bookstore. Each shows a label tooltip on hover. Appears after 400px scroll.

EbookPopup.tsx

Free Guide popup anchored to the left side. Auto-opens after 6s or 40% page scroll (once per session). Two-panel modal: book cover + email form. On success shows inbox confirmation and sends guide via email.

PageCTA.tsx

Reusable CTA banner used at the bottom of all inner pages.

TrustBar.tsx

Social proof strip with partner logos and author stats.

UI Primitives

Button.tsx

Universal button. Variants: primary (gold bg + shimmer), secondary (navy bg + shimmer), outline (navy border β†’ fills navy), gold (gold border β†’ fills gold), ghost (transparent, no shimmer). All except ghost have shimmer sweep + lift + glow on hover. Renders as <button> or <Link> depending on href prop.

Badge.tsx

Small pill label for service categories and feature highlights.

RevealItem.tsx

Scroll-reveal animation wrapper using Intersection Observer.

SectionHeader.tsx

Standardized section eyebrow + heading + subtitle layout.

PricingTable.tsx

Dual-view pricing component used on publishing package service pages:

  • Grid View β€” Scrollable card carousel, one card per package with feature list
  • Compare Features (default) β€” Full HTML table with category section rows, feature rows, and package columns. Highlighted columns: Execution (gold tint), Expansion (green tint), Integrative (navy tint). Show Full Comparison / Show Less toggle.
  • Helper text dynamically lists the recommended packages from the data
  • Print type toggle (B&W / Color) for services with color pricing variants

7. Data Layer

services.ts

Central source of truth for all services. Exports services: Service[]. Each entry has slug, title, tagline, description, longDescription, icon, category, packages[], faqs[], turnaround, deliverables, startingPrice (optional override for hub cards).

nav.ts

Full navigation structure. Controls both desktop mega menu (MegaMenuColumn[] with categories/links) and mobile accordion (flat children[] list). Also exports navCTA (Start Publishing button).

faqData.ts

Standalone FAQ data. 7 categories, 60+ Q&As. Exported as faqCategories: FAQCategory[]. Used exclusively by the FAQ page. Categories: Getting Started, Publishing Packages, Editorial & Design, Digital & Audiobook, Marketing & Promotion, Children's & Specialty, Rights & Royalties.

quizData.ts

Quiz questions, answer options, and getRecommendedPackage(answers) logic. Used by /quiz page and FloatingCTA quiz panel.

testimonials.ts

Author testimonial objects: name, book title, service, quote.

books.ts

Seed data for bookstore. Main bookstore data comes from Sanity CMS.

8. Forms & Integrations

Contact Form

Route: /api/contact. Collects name, email, phone, service interest, message. Sends notification email to ATP team and confirmation to the author via Resend.

Free Guide Lead

Route: /api/ebook-lead. Collects name, email. Generates HMAC-signed download token (DOWNLOAD_SECRET env var). Sends branded email with secure download link. Token verified via /api/download-guide.

Quiz Lead

Route: /api/quiz-lead. Collects name, email, phone, and the recommended package computed from quiz answers. Sends notification to ATP team.

Download Verification

Route: /api/download-guide. Stateless HMAC token verification using crypto.createHmac + timingSafeEqual. Logs download to Google Sheets. Cold-start safe β€” no in-memory state.

Email Template

src/lib/email/template.ts. Full HTML email with ATP branding. Header: centered ATP logo (280px) on navy bg. Footer: smaller logo (220px) + legal. Uses NEXT_PUBLIC_SITE_URL for all links.

Google Sheets

src/lib/email/sheets.ts. Logs lead submissions and guide downloads to a Google Sheet for CRM purposes.

9. Environment Variables

Set in Vercel dashboard (Production) and .env.local (local development).

VariablePurpose
NEXT_PUBLIC_SITE_URLPublic base URL β€” used in email links and download URLs
RESEND_API_KEYResend API key for transactional email delivery
DOWNLOAD_SECRETHMAC secret for signing and verifying guide download tokens
NEXT_PUBLIC_SANITY_PROJECT_IDSanity project ID for bookstore CMS
NEXT_PUBLIC_SANITY_DATASETSanity dataset name (typically "production")
SANITY_API_TOKENSanity write token (server-only, never exposed to client)
⚠️ Security: Rotate RESEND_API_KEY if it has been exposed in plain text. Never commit .env.local to version control.

10. Deployment

Platform: Vercel β€” connected to nicekajul/atp-website on GitHub. Every push to master triggers an automatic production deployment.

Build Configuration

  • Framework: Next.js (auto-detected by Vercel)
  • Build command: next build
  • ESLint bypassed during build β€” eslint: { ignoreDuringBuilds: true } in next.config.ts
  • React aliased to project node_modules on client bundles only (prevents Sanity React conflict)
  • serverExternalPackages: ['sanity', '@sanity/vision', 'next-sanity'] prevents SSR bundling issues

Pending Tasks

  • Connect domain authorstranquilitypress.com to Vercel
  • Update NEXT_PUBLIC_SITE_URL in Vercel dashboard to the live domain
  • Add domain to Resend for branded email sending
  • Rotate Resend API key

11. Brand Assets

Official logos and icons for Author’s Tranquility Press. Click Download on any asset to save the file.

Horizontal Logo β€” Dark

Horizontal Logo β€” Dark

Primary logo. Use on light/white backgrounds. Main logo variant.

ATP-Logo-Horizontal-Dark.png↓ Download
Horizontal Logo β€” Light

Horizontal Logo β€” Light

Reversed primary logo. Use on dark/navy backgrounds and in emails.

ATP-Logo-Horizontal-Light.png↓ Download
Vertical Logo β€” Dark

Vertical Logo β€” Dark

Vertical variant. Use for email signatures and narrow-space contexts on light backgrounds.

ATP-Logo-Vertical-Dark.png↓ Download
Vertical Logo β€” Light

Vertical Logo β€” Light

Vertical variant reversed. Use for email signatures and narrow-space contexts on dark/navy backgrounds.

ATP-Logo-Vertical-Light.png↓ Download
App Icon

App Icon

Square icon mark with gold background. Use for favicons, social profiles, and app icons.

atp-logo-alt.png↓ Download
Icon Mark β€” Gold

Icon Mark β€” Gold

Standalone gold icon on transparent background. Use on light or navy surfaces.

ATP-logo-dark.png↓ Download

12. Branding Guidelines

These guidelines ensure consistent brand presentation across all digital and print materials.

Color Palette

#0F1B2D

Navy

--atp-navy
#07111D

Navy Dark

--atp-navy-dark
#1A2E48

Navy Light

--atp-navy-light
#C9A84C

Gold

--atp-gold
#E2C070

Gold Light

--atp-gold-light
#A8882C

Gold Dark

--atp-gold-dark
#F8F5EF

Cream

--atp-cream
#2D3748

Charcoal

--atp-charcoal
#FFFFFF

White

--atp-white

Typography

RoleFont FamilyCSS VariableUsage
SerifPlayfair Display--font-serifH1–H4 headings, hero text, section titles, pull quotes
SansInter--font-sansBody copy, nav, labels, buttons, captions, UI elements
Both fonts are loaded via Google Fonts in the Next.js root layout. Always use the CSS variables β€” never hardcode font names in components.

Logo Usage

ScenarioFile
Light / white background (primary use)ATP-Logo-Horizontal-Dark.png
Dark / navy backgroundATP-Logo-Horizontal-Light.png
Email signatures, narrow layouts β€” light backgroundATP-Logo-Vertical-Dark.png
Email signatures, narrow layouts β€” dark backgroundATP-Logo-Vertical-Light.png
Favicon, app icon, social profile pictureatp-logo-alt.png
Standalone icon mark on any surfaceATP-logo-dark.png
Transactional emails (header & footer)ATP-Logo-Horizontal-Light.png via NEXT_PUBLIC_SITE_URL
  • Primary variant: Horizontal logo β€” always the default. Vertical is for narrow/email contexts only.
  • Minimum size: 120px wide for horizontal logo; 80px wide for vertical logo; 32px for icon mark
  • Clear space: Maintain padding equal to the height of the icon mark on all sides
  • Never: stretch, skew, rotate, recolor, or place on a busy background without a backing shape
  • Never: use a rasterized logo below minimum size β€” use the icon mark instead

Logo Proportion System

These proportions were calculated by the brand designer to achieve optical balance between the bird mark and the wordmark across both logo variants.

Vertical Logo

  • Step 1 β€” Anchor point: Measure the exact pixel width of the word β€œTranquility” (the widest word in the lockup).
  • Step 2 β€” Golden Ratio: Multiply that width by 0.62. Set the total width of the bird mark to that value. The 60–65% range is optimal for organic, flowing marks β€” 0.62 sits precisely at the Golden Ratio.
  • Step 3 β€” Breathing room: The bird’s tail is a sharp downward point that draws the eye directly into β€œAuthor’s.” Use the physical cap-height of the letter β€œA” in β€œAuthor’s” as the exact vertical gap between the tail tip and the top of the text below.

Horizontal Logo

  • Mark sizing: The bird mark height should be 1.5Γ— to 2.5Γ— the cap-height of the wordmark. Matching it 1:1 makes the mark look too small.
  • Vertical alignment: Align the horizontal centerline of the bird mark exactly with the horizontal centerline of the wordmark text.
  • Gap: Use the pixel width of the lowercase β€œo” in β€œAuthor’s” as the exact gap between the rightmost edge of the bird and the first letter of the wordmark. Wider logo = less breathing room needed.

Brand Voice & Tone

Empowering

Authors are the heroes. ATP is the guide. Every line of copy puts the author's success at the centre.

Professional

We speak with expertise and confidence. Avoid slang, excessive exclamation marks, and vague claims without backing.

Warm

We are not a corporation. Use "we" and "you" freely. Write the way a knowledgeable friend would explain publishing.

Precise

Clear over clever. If a sentence can be shorter without losing meaning, shorten it. No filler phrases.

Copy Rules

  • Brand name is Author’s Tranquility Press β€” always with the apostrophe. Never "Authors Tranquility Press".
  • Short form: ATP β€” acceptable after first full mention on a page.
  • Email sender: support@authorstranquilitypress.com
  • Primary CTA: Start Publishing (header) Β· Book a Free Consultation (body)
  • Avoid em-dash overuse β€” use it for strong breaks only, not as a comma substitute.
  • Prices should always be preceded by "From" when showing a starting price (e.g., "From $899").

13. Brand Templates

Ready-to-use templates built with Author’s Tranquility Press branding. Replace all [bracketed] placeholders before use. For the email signature, replace [YOUR_GOOGLE_REVIEW_LINK] with your Google Business review URL.