Authors Tranquility Press
Website Documentation
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
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript |
| Styling | CSS Modules (scoped per component) |
| CMS | Sanity v3 (headless, for Bookstore) |
Resend API | |
| Deployment | Vercel |
| Package Manager | npm |
| Version Control | Git / GitHub |
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
| Route | Description |
|---|---|
/ | Homepage β hero, services overview, how it works, testimonials, featured books, newsletter |
/about | About Us β company story, stats (500+ books, 4.9β , 12+ years, 40+ countries), values |
/services | Services overview β all services grouped by category |
/services/publishing-packages | Flagship service β Compare Features table with highlighted columns |
/services/[slug] | Dynamic service detail β turnaround cards, pricing table, FAQ accordion, lead form |
/marketing | Marketing hub β tabbed category filter with service cards and starting prices |
/bookstore | Sanity-powered book listing with filters and search |
/bookstore/[slug] | Individual book detail page |
/quiz | Multi-step package quiz with lead capture and recommendation |
/faq | Categorized accordion FAQ β 7 categories, 60+ questions |
/contact | Contact form with service selector |
/resources | Author tools β royalty calc, cost calc, blurb builder, title generator, etc. |
/docs | This documentation page (not indexed, not in nav) |
API Routes
| Route | Method | Purpose |
|---|---|---|
/api/contact | POST | Processes contact form; sends notification + confirmation emails via Resend |
/api/ebook-lead | POST | Captures lead; sends free guide email with HMAC-signed download token |
/api/quiz-lead | POST | Captures quiz lead with recommended package |
/api/download-guide | GET | Verifies 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
| Slug | Title | Category |
|---|---|---|
/services/publishing-packages | Publishing Packages | publishing |
/services/editorial-services | Editorial Services | editorial |
/services/book-design | Book Design | design |
/services/ghostwriting | Ghostwriting | publishing |
/services/audiobook | Audiobook Production | publishing |
/services/authors-tranquility-junior | Author's Tranquility Junior | publishing |
/services/ebook-conversion | eBook Conversion | digital |
/services/book-illustration | Book Illustration | design |
Marketing & Distribution Services
| Slug | Title | Nav Group |
|---|---|---|
/services/author-website | Author Website | Foundation |
/services/book-spark | Book Spark | Foundation |
/services/social-media-advertising | Social Media Ads | Launch & Promotion |
/services/digital-advertising | Digital Advertising | Launch & Promotion |
/services/press-release | Press Release | Media & Press |
/services/media-coverage | Media Coverage | Media & Press |
/services/print-advertising | Print Advertising | Media & Press |
/services/book-trailers | Book Trailers | Content & Video |
/services/book-to-screen | Book-to-Screen Services | Content & Video |
/services/book-reviews | Book Reviews | Credibility & Recognition |
/services/book-awards | Book Awards | Credibility & Recognition |
/services/international-book-fairs | International Book Fairs | Premium Exposure |
/services/times-square-billboard | Times Square Billboard | Premium Exposure |
6. Key Components
Layout
Header.tsxFixed 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.tsxFull-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.tsxGlobal wrapper rendered around all pages. Mounts Header, Footer, FloatingCTA (speed dial), and EbookPopup.
Container.tsxMax-width content wrapper with consistent horizontal padding.
Shared / Global
FloatingCTA.tsxSpeed 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.tsxFree 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.tsxReusable CTA banner used at the bottom of all inner pages.
TrustBar.tsxSocial proof strip with partner logos and author stats.
UI Primitives
Button.tsxUniversal 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.tsxSmall pill label for service categories and feature highlights.
RevealItem.tsxScroll-reveal animation wrapper using Intersection Observer.
SectionHeader.tsxStandardized 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.tsCentral 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.tsFull navigation structure. Controls both desktop mega menu (MegaMenuColumn[] with categories/links) and mobile accordion (flat children[] list). Also exports navCTA (Start Publishing button).
faqData.tsStandalone 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.tsQuiz questions, answer options, and getRecommendedPackage(answers) logic. Used by /quiz page and FloatingCTA quiz panel.
testimonials.tsAuthor testimonial objects: name, book title, service, quote.
books.tsSeed data for bookstore. Main bookstore data comes from Sanity CMS.
8. Forms & Integrations
Contact FormRoute: /api/contact. Collects name, email, phone, service interest, message. Sends notification email to ATP team and confirmation to the author via Resend.
Free Guide LeadRoute: /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 LeadRoute: /api/quiz-lead. Collects name, email, phone, and the recommended package computed from quiz answers. Sends notification to ATP team.
Download VerificationRoute: /api/download-guide. Stateless HMAC token verification using crypto.createHmac + timingSafeEqual. Logs download to Google Sheets. Cold-start safe β no in-memory state.
Email Templatesrc/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 Sheetssrc/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).
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SITE_URL | Public base URL β used in email links and download URLs |
RESEND_API_KEY | Resend API key for transactional email delivery |
DOWNLOAD_SECRET | HMAC secret for signing and verifying guide download tokens |
NEXT_PUBLIC_SANITY_PROJECT_ID | Sanity project ID for bookstore CMS |
NEXT_PUBLIC_SANITY_DATASET | Sanity dataset name (typically "production") |
SANITY_API_TOKEN | Sanity write token (server-only, never exposed to client) |
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 }innext.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.comto Vercel - Update
NEXT_PUBLIC_SITE_URLin 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
Primary logo. Use on light/white backgrounds. Main logo variant.
ATP-Logo-Horizontal-Dark.pngβ Download
Horizontal Logo β Light
Reversed primary logo. Use on dark/navy backgrounds and in emails.
ATP-Logo-Horizontal-Light.pngβ Download
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 variant reversed. Use for email signatures and narrow-space contexts on dark/navy backgrounds.
ATP-Logo-Vertical-Light.pngβ Download
App Icon
Square icon mark with gold background. Use for favicons, social profiles, and app icons.
atp-logo-alt.pngβ Download
Icon Mark β Gold
Standalone gold icon on transparent background. Use on light or navy surfaces.
ATP-logo-dark.pngβ Download12. Branding Guidelines
These guidelines ensure consistent brand presentation across all digital and print materials.
Color Palette
Navy
--atp-navyNavy Dark
--atp-navy-darkNavy Light
--atp-navy-lightGold
--atp-goldGold Light
--atp-gold-lightGold Dark
--atp-gold-darkCream
--atp-creamCharcoal
--atp-charcoalWhite
--atp-whiteTypography
| Role | Font Family | CSS Variable | Usage |
|---|---|---|---|
| Serif | Playfair Display | --font-serif | H1βH4 headings, hero text, section titles, pull quotes |
| Sans | Inter | --font-sans | Body copy, nav, labels, buttons, captions, UI elements |
Logo Usage
| Scenario | File |
|---|---|
| Light / white background (primary use) | ATP-Logo-Horizontal-Dark.png |
| Dark / navy background | ATP-Logo-Horizontal-Light.png |
| Email signatures, narrow layouts β light background | ATP-Logo-Vertical-Dark.png |
| Email signatures, narrow layouts β dark background | ATP-Logo-Vertical-Light.png |
| Favicon, app icon, social profile picture | atp-logo-alt.png |
| Standalone icon mark on any surface | ATP-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
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
EmpoweringAuthors are the heroes. ATP is the guide. Every line of copy puts the author's success at the centre.
ProfessionalWe speak with expertise and confidence. Avoid slang, excessive exclamation marks, and vague claims without backing.
WarmWe are not a corporation. Use "we" and "you" freely. Write the way a knowledgeable friend would explain publishing.
PreciseClear 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.