Revise home page content to align with "PragmaStack" branding

- Updated headers, descriptions, and key messaging across sections for clarity and consistency.
- Replaced outdated stats with branding-focused data, emphasizing open-source, type safety, and documentation quality.
- Refined tone to highlight pragmatic, reliable values over technical metrics.
- Adjusted GitHub icon SVG for accessibility and inline clarity.
This commit is contained in:
Felipe Cardoso
2025-11-20 13:16:18 +01:00
parent 6ad4cda3f4
commit 210204eb7a
5 changed files with 45 additions and 57 deletions

View File

@@ -11,7 +11,7 @@ import { CheckCircle2 } from 'lucide-react';
export function ContextSection() {
const features = [
'Clone & Deploy in < 5 minutes',
'97% Test Coverage (743 tests)',
'Comprehensive Test Suite',
'12+ Documentation Guides',
'Zero Commercial Dependencies',
];
@@ -26,11 +26,11 @@ export function ContextSection() {
viewport={{ once: true, margin: '-100px' }}
transition={{ duration: 0.6 }}
>
<h2 className="text-3xl md:text-4xl font-bold">What You Get Out of the Box</h2>
<h2 className="text-3xl md:text-4xl font-bold">Stop Reinventing the Wheel</h2>
<p className="text-lg text-muted-foreground leading-relaxed">
This isn&apos;t a boilerplate generator or a paid SaaS template. It&apos;s a complete,
production-ready codebase you can clone and customize. Everything you need to build
modern web applications without reinventing authentication, authorization, and admin
Avoid analysis paralysis and boilerplate fatigue. This is a complete, production-ready
codebase you can clone and customize. Everything you need to build modern web
applications without reinventing authentication, authorization, and admin
infrastructure.
</p>

View File

@@ -7,7 +7,7 @@
import { Link } from '@/lib/i18n/routing';
import { motion } from 'framer-motion';
import { ArrowRight, Github, Play } from 'lucide-react';
import { ArrowRight, Play } from 'lucide-react';
import { Button } from '@/components/ui/button';
interface HeroSectionProps {
@@ -46,9 +46,9 @@ export function HeroSection({ onOpenDemoModal }: HeroSectionProps) {
/>
<span className="font-medium">MIT Licensed</span>
<span className="text-muted-foreground"></span>
<span className="font-medium">97% Test Coverage</span>
<span className="font-medium">Comprehensive Tests</span>
<span className="text-muted-foreground"></span>
<span className="font-medium">Production Ready</span>
<span className="font-medium">Pragmatic by Design</span>
</div>
</motion.div>
@@ -59,9 +59,9 @@ export function HeroSection({ onOpenDemoModal }: HeroSectionProps) {
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.1 }}
>
<span className="block">Everything You Need to Build</span>
<span className="block">The Pragmatic</span>
<span className="block bg-gradient-to-r from-primary via-primary/80 to-primary/60 bg-clip-text text-transparent">
Modern Web Applications
Full-Stack Template
</span>
</motion.h1>
@@ -72,8 +72,8 @@ export function HeroSection({ onOpenDemoModal }: HeroSectionProps) {
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5, delay: 0.2 }}
>
Production-ready FastAPI + Next.js template with authentication, multi-tenancy, and
comprehensive admin panel. Built by developers, for developers.{' '}
Opinionated, secure, and production-ready. PragmaStack gives you the solid foundation
you need to stop configuring and start shipping.{' '}
<span className="text-foreground font-medium">Start building features on day one.</span>
</motion.p>
@@ -97,7 +97,16 @@ export function HeroSection({ onOpenDemoModal }: HeroSectionProps) {
target="_blank"
rel="noopener noreferrer"
>
<Github className="h-5 w-5" aria-hidden="true" />
<svg
role="img"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
className="h-5 w-5 fill-current"
aria-hidden="true"
>
<title>GitHub</title>
<path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.834 2.807 1.304 3.495.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.566 22.091 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
</svg>
View on GitHub
<ArrowRight
className="h-4 w-4 group-hover:translate-x-1 transition-transform"
@@ -116,28 +125,7 @@ export function HeroSection({ onOpenDemoModal }: HeroSectionProps) {
</Button>
</motion.div>
{/* Quick Stats */}
<motion.div
className="flex flex-wrap items-center justify-center gap-6 pt-8 text-sm text-muted-foreground"
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.5, delay: 0.4 }}
>
<div className="flex items-center gap-2">
<span className="text-2xl font-bold text-foreground">97%</span>
<span>Test Coverage</span>
</div>
<div className="h-4 w-px bg-border" aria-hidden="true" />
<div className="flex items-center gap-2">
<span className="text-2xl font-bold text-foreground">743</span>
<span>Passing Tests</span>
</div>
<div className="h-4 w-px bg-border" aria-hidden="true" />
<div className="flex items-center gap-2">
<span className="text-2xl font-bold text-foreground">0</span>
<span>Flaky Tests</span>
</div>
</motion.div>
</div>
</div>
</section>

View File

@@ -16,9 +16,9 @@ const wontFind = [
];
const willFind = [
'Production patterns that actually work',
'Comprehensive test coverage (not aspirational)',
'Clear, honest documentation',
'Pragmatic Speed: Ship features, not config',
'Clarity over Magic: Explicit is better than implicit',
'Robustness: Security and testing baked in',
'Active development and improvements',
];
@@ -33,7 +33,7 @@ export function PhilosophySection() {
viewport={{ once: true, margin: '-100px' }}
transition={{ duration: 0.6 }}
>
<h2 className="text-3xl md:text-4xl font-bold mb-6">Why This Template Exists</h2>
<h2 className="text-3xl md:text-4xl font-bold mb-6">Why PragmaStack?</h2>
<div className="space-y-4 text-lg text-muted-foreground leading-relaxed">
<p>
We built this template after rebuilding the same authentication, authorization, and

View File

@@ -21,31 +21,31 @@ interface Stat {
const stats: Stat[] = [
{
icon: Zap,
value: 97,
value: 100,
suffix: '%',
label: 'Test Coverage',
description: 'Comprehensive testing across backend and frontend',
},
{
icon: TestTube,
value: 743,
suffix: '',
label: 'Passing Tests',
description: 'Backend, frontend unit, and E2E tests',
label: 'Open Source',
description: 'MIT Licensed. No hidden costs or vendor lock-in.',
},
{
icon: CheckCircle2,
value: 100,
suffix: '%',
label: 'Type Safe',
description: 'End-to-end type safety with TypeScript & Pydantic',
},
{
icon: TestTube,
value: 0,
suffix: '',
label: 'Flaky Tests',
description: 'Production-stable test suite',
label: 'Magic',
description: 'Explicit is better than implicit. No hidden logic.',
},
{
icon: FileCode,
value: 30,
value: 12,
suffix: '+',
label: 'API Endpoints',
description: 'Fully documented with OpenAPI',
label: 'Doc Guides',
description: 'Comprehensive documentation for every feature',
},
];

View File

@@ -67,11 +67,11 @@ export function TechStackSection() {
transition={{ duration: 0.6 }}
>
<h2 className="text-3xl md:text-4xl font-bold mb-4">
Modern, Type-Safe, Production-Grade Stack
A Stack You Can Trust
</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
Built with the best tools for full-stack development. Async architecture, type safety, and
developer experience.
We chose these tools because they are boring, reliable, and standard. No hype, just
results. Async architecture, type safety, and developer experience.
</p>
</motion.div>