Skip to content
krumjahnPublic

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Personal Links Page

A clean, modern personal links page built with Next.js and Tailwind CSS.

Features

  • Responsive Design: Mobile-first approach with modern UI/UX
  • Social Media Integration: Links to various social platforms
  • Fast Loading: Optimized for performance with Next.js
  • Modern Styling: Built with Tailwind CSS and shadcn/ui components

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd personal-links
  2. Install dependencies:

    npm install
  3. Run the development server:

    npm run dev
  4. Open http://localhost:3000 in your browser.

Build for Production

npm run build
npm start

Customization

Adding New Links

Edit src/app/page.tsx to add or modify links:

<Button variant="outline" className="w-full" asChild>
  <Link href="https://your-link.com">
    Your Link Text
  </Link>
</Button>

Changing Profile Information

Update the profile section in src/app/page.tsx:

<h1 className="text-2xl font-bold">Your Name</h1>
<p className="text-muted-foreground mt-2">Your bio/description</p>

Updating Social Media Links

Modify the social media section in src/app/page.tsx to add or change social links.

Changing the Profile Image

Replace /public/keith.jpg with your own image and update the reference in src/app/page.tsx.

Tech Stack

  • Framework: Next.js 15
  • Styling: Tailwind CSS
  • UI Components: shadcn/ui (Radix UI)
  • TypeScript: For type safety
  • Icons: Custom SVG icons

Project Structure

src/
├── app/
│   ├── globals.css
│   ├── layout.tsx
│   └── page.tsx
├── components/
│   └── ui/
│       ├── button.tsx
│       └── card.tsx
└── lib/
    └── utils.ts

Learn More

To learn more about Next.js, take a look at the following resources:

Deploy on Railway

Railway is a modern platform that makes it easy to deploy your Next.js applications with just a few clicks. It offers a seamless deployment experience with built-in CI/CD, automatic HTTPS, and easy environment variable management.

Benefits of Railway:

  • Simple Deployment: Connect your GitHub repository and deploy with a single click
  • Automatic Updates: Automatically deploy when you push to your repository
  • Built-in Databases: Easily add PostgreSQL, MySQL, Redis, and more
  • Custom Domains: Connect your own domain with automatic HTTPS
  • Monitoring & Logs: Real-time logs and metrics for your application

Get Started with Railway:

  1. Sign up for Railway using this referral link to receive $5 in free credits
  2. Connect your GitHub repository
  3. Configure your environment variables
  4. Deploy your application

Railway simplifies your infrastructure stack with a single, scalable, easy-to-use platform, allowing you to focus on building your application rather than managing infrastructure.

Health analyzer API (Railway)

This same Next.js service exposes POST /v1/ai-analysis and GET /health. Configure these private Railway variables:

  • OPENROUTER_API_KEY
  • REVENUECAT_SECRET_API_KEY
  • REVENUECAT_ENTITLEMENT_ID (defaults to Pro)

The app defaults to openai/gpt-5.6-sol and anthropic/claude-opus-5. The optional OPENROUTER_OPENAI_MODEL and OPENROUTER_ANTHROPIC_MODEL variables can override those defaults without a code release.

Never commit secret values. The API checks the RevenueCat entitlement and forwards aggregate health summaries without storing request bodies.

Versioned paid model selection

POST /v2/ai-analysis adds mode (everyday or deep) and expected_model to the existing provider, prompt, and health_summary body. It returns content and the verified model. The server restricts routing to:

Provider Everyday Deep
OpenAI openai/gpt-6.1-sol openai/gpt-6-astra
Anthropic anthropic/claude-opus-5.5 anthropic/claude-fable-5.1

Both routes verify the existing RevenueCat Pro entitlement on every request. Subscription service failures return 503 rather than incorrectly asking a paying customer to subscribe again. Incomplete or mismatched-model answers cannot count as success. No automatic provider fallback or retry is introduced. Budgets remain 8,000 output tokens for OpenAI and 4,000 for Anthropic, including reasoning. The Anthropic input character limit is 120,000; oversized summaries get an error instead of silent truncation. Life Context is data, never instructions; missing dates cannot establish timing or causation.

v1 keeps its older provider-only request/response shape and default model choices. The personal links page and /health are unchanged. macOS client coordination: https://github.com/krumjahn/MacHealthAnalyzer/pull/45

Production was traced on 14 October 2026 from Cloudflare's DNS record to Railway: project peaceful-peace, service App, environment production, repository krumjahn/LinkInBio. Both link.rumjahn.com and api.applehealthdata.com use this service. The marketing website applehealthdata.com remains on GitHub Pages with its existing Cloudflare website Worker. Never deploy the standalone Node proxy from the Mac repository over this Next.js service: that would remove the links page.

Before deployment, run npm test, npm run build, and git diff --check. After deployment, check the links page, /health, v1 compatibility, v2 rejection of missing/expired identity, and real paid requests using an owned active Pro account. A passing health check or mocked entitlement is not a paid journey test. Keep the app release blocked until the last check passes.

The inherited subscriber-ID header is not cryptographic authentication. The per-process limiter is now keyed by identity, independent of client-supplied forwarding headers; use stronger identity binding and shared edge limits before increasing spend or scaling instances. Request bodies and identity headers must not be logged by the host or reverse proxy. Errors do not log upstream messages.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages