Compare commits

..

4 Commits

Author SHA1 Message Date
Felipe Cardoso
210204eb7a 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.
2025-11-20 13:16:18 +01:00
Felipe Cardoso
6ad4cda3f4 Refine backend README to align with "PragmaStack" branding and enhance messaging for clarity and engagement. 2025-11-20 13:07:28 +01:00
Felipe Cardoso
54ceaa6f5d Rebrand README to emphasize "PragmaStack" identity and refine messaging for clarity and consistency. 2025-11-20 13:01:11 +01:00
Felipe Cardoso
34e7f69465 Replace "FastNext" references with "PragmaStack" in migration script and configuration settings 2025-11-20 13:01:05 +01:00
9 changed files with 68 additions and 73 deletions

View File

@@ -1,6 +1,6 @@
# FastAPI + Next.js Full-Stack Template
# PragmaStack
> **Production-ready, security-first, full-stack TypeScript/Python template with authentication, multi-tenancy, and a comprehensive admin panel.**
> **The Pragmatic Full-Stack Template. Production-ready, security-first, and opinionated.**
<!--
TODO: Replace these static badges with dynamic CI/CD badges when GitHub Actions is set up
@@ -21,20 +21,25 @@
This project includes comprehensive documentation designed for AI coding assistants:
- **[AGENTS.md](./AGENTS.md)** - Framework-agnostic AI assistant context (works with Claude, Cursor, GitHub Copilot, etc.)
- **[CLAUDE.md](./CLAUDE.md)** - Claude Code-specific guidance and preferences
- **[AGENTS.md](./AGENTS.md)** - Framework-agnostic AI assistant context for PragmaStack
- **[CLAUDE.md](./CLAUDE.md)** - Claude Code-specific guidance
These files provide AI assistants with project architecture, development patterns, testing strategies, and best practices to help them work more effectively with this codebase.
These files provide AI assistants with the **PragmaStack** architecture, patterns, and best practices.
---
## Why This Template?
## Why PragmaStack?
Building a modern full-stack application from scratch means solving the same problems over and over: authentication, authorization, multi-tenancy, admin panels, session management, database migrations, API documentation, testing infrastructure...
Building a modern full-stack application often leads to "analysis paralysis" or "boilerplate fatigue". You spend weeks setting up authentication, testing, and linting before writing a single line of business logic.
**This template gives you all of that, battle-tested and ready to go.**
**PragmaStack cuts through the noise.**
Instead of spending weeks on boilerplate, you can focus on building your unique features. Whether you're building a SaaS product, an internal tool, or a side project, this template provides a rock-solid foundation with modern best practices baked in.
We provide a **pragmatic**, opinionated foundation that prioritizes:
- **Speed**: Ship features, not config files.
- **Robustness**: Security and testing are not optional.
- **Clarity**: Code that is easy to read and maintain.
Whether you're building a SaaS, an internal tool, or a side project, PragmaStack gives you a solid starting point without the bloat.
---
@@ -63,7 +68,7 @@ Instead of spending weeks on boilerplate, you can focus on building your unique
### 🎨 **Modern Frontend**
- Next.js 15 with App Router and React 19
- Comprehensive design system built on shadcn/ui + TailwindCSS
- **PragmaStack Design System** built on shadcn/ui + TailwindCSS
- Pre-configured theme with dark mode support (coming soon)
- Responsive, accessible components (WCAG AA compliant)
- Rich marketing landing page with animated components
@@ -416,7 +421,7 @@ python migrate.py current
### Frontend Documentation
- **[Design System Docs](./frontend/docs/design-system/)** - Complete design system guide
- **[PragmaStack Design System](./frontend/docs/design-system/)** - Complete design system guide
- Quick start, foundations (colors, typography, spacing)
- Component library guide
- Layout patterns, spacing philosophy

View File

@@ -1,10 +1,12 @@
# Backend API
# PragmaStack Backend API
> FastAPI-based REST API with async SQLAlchemy, JWT authentication, and comprehensive testing.
> The pragmatic, production-ready FastAPI backend for PragmaStack.
## Overview
Production-ready FastAPI backend featuring:
Opinionated, secure, and fast. This backend provides the solid foundation you need to ship features, not boilerplate.
Features:
- **Authentication**: JWT with refresh tokens, session management, device tracking
- **Database**: Async PostgreSQL with SQLAlchemy 2.0, Alembic migrations

View File

@@ -5,7 +5,7 @@ from pydantic_settings import BaseSettings
class Settings(BaseSettings):
PROJECT_NAME: str = "App"
PROJECT_NAME: str = "PragmaStack"
VERSION: str = "1.0.0"
API_V1_STR: str = "/api/v1"

View File

@@ -143,7 +143,7 @@ def check_database_connection():
def main():
"""Main function"""
parser = argparse.ArgumentParser(
description='Database migration helper for FastNext template'
description='Database migration helper for PragmaStack template'
)
subparsers = parser.add_subparsers(dest='command', help='Command to run')

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>