commit b8ba61565e88bc55064b68ae8e8ef56766d7e5e5 Author: Jason Woltje Date: Tue Mar 3 12:24:43 2026 -0600 Initial landing page for SagePHR - Hero section with clear value prop - Problem/solution framing - Feature grid - Pricing section (early adopter /mo) - Email waitlist signup (Formspree) - Responsive design - Dark theme with sage green accent diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5251e5e --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +.next/ +out/ +.env* +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..c929b36 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# SagePHR Landing Page + +Personal Health Record SaaS - landing page for early adopter waitlist. + +## Development + +```bash +pnpm install +pnpm dev +``` + +## Deploy + +```bash +pnpm build +# Static export to ./out +``` + +## Target Launch + +Q3 2026 diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..b14a432 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,20 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'SagePHR - Your Health Records, Finally Under Your Control', + description: 'Stop hunting for medical records. Start owning your health history. One secure place for all your medical records with AI-powered insights.', +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + + + {children} + + + ) +} diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..522dc9f --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,275 @@ +export default function Home() { + return ( +
+ {/* Header */} +
+
+ ๐ŸŒฟ SagePHR +
+ +
+ + {/* Hero */} +
+

+ Stop hunting for medical records.
+ Start owning your health history. +

+

+ Your Personal Health Record โ€” a secure, AI-enhanced repository for all your medical data. + One place for lab results, medications, diagnoses, and emergency access. +

+
+ + Join Waitlist โ€” 50% Off Forever + + + Learn More + +
+
+ + {/* Problem */} +
+
+

+ The Problem +

+
+
+
๐Ÿ“
+
+ Average patient has records scattered across 5-7 providers +
+
+
+
๐Ÿ“‹
+
+ 1 in 4 Americans have incomplete medical histories +
+
+
+
๐Ÿ”
+
+ Paper records get lost, faxed, forgotten +
+
+
+
+
+ + {/* Features */} +
+

+ One Secure Place for Everything +

+
+ + + + + + +
+
+ + {/* Pricing */} +
+
+

+ Simple, Transparent Pricing +

+

+ Launch Q3 2026 โ€ข Early adopter pricing +

+
+
+ $9/month +
+
+ 50% off forever for early adopters +
+
    +
  • โœ… Unlimited health records
  • +
  • โœ… AI-powered health insights
  • +
  • โœ… Family sharing (up to 5 members)
  • +
  • โœ… Export to any provider (PDF, FHIR, C-CDA)
  • +
  • โœ… Emergency access QR code
  • +
+ + Reserve Your Spot + +
+
+
+ + {/* Waitlist */} +
+

+ Join the Waitlist +

+

+ First 500 get lifetime 50% discount. No spam, just updates on launch. +

+
+ + +
+
+ + {/* Footer */} +
+
+ ๐ŸŒฟ SagePHR +
+
+ ยฉ 2026 SagePHR. Your health data, your control. +
+
+
+ ) +} + +function FeatureCard({ emoji, title, description }: { emoji: string; title: string; description: string }) { + return ( +
+
{emoji}
+

{title}

+

{description}

+
+ ) +} diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..ec02b15 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,8 @@ +import type { NextConfig } from 'next' + +const nextConfig: NextConfig = { + output: 'export', + images: { unoptimized: true } +} + +export default nextConfig diff --git a/package.json b/package.json new file mode 100644 index 0000000..3b16f58 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "sagephr-landing", + "version": "0.1.0", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "next": "^15.2.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "@types/react": "^19.0.0", + "typescript": "^5.9.0" + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6420eed --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [{ "name": "next" }], + "paths": { "@/*": ["./*"] } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}