Skip to content

Latest commit

Β 

History

100 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

my-profile

Personal website β€” you-find.me

Stack

Vite+ Β· Void Β· React 19 Β· TypeScript Β· TailwindCSS v4 Β· Hono Β· TanStack Router Β· PostgreSQL Β· Better Auth Β· Cloudflare Workers

Features

  • Home β€” landing page with animated background
  • Social β€” multilingual follow policy, social accounts, contact details, and sponsorship
  • Chat β€” authenticated Pi Agent chat with typed NDJSON streaming
  • Terminal β€” interactive slash-command terminal (/help to explore)
  • CV β€” resume page with work, projects, and hackathons
  • Story β€” multilingual personal story, interactive map, and My Series project introductions
  • Auth β€” sign up, login, email verification, password reset (Better Auth + GitHub/Google OAuth)

Getting Started

Use pnpm 12.6.0, as pinned in package.json.

pnpm install
pnpm dev

Create a gitignored .env with the local values declared in env.ts (including DATABASE_URL for the local PostgreSQL instance) before running pnpm dev.

pnpm dev runs Vite+ with voidPlugin(). Void uses Cloudflare's Vite runtime internally, so application development does not invoke wrangler dev directly.

Environment

This project splits runtime values by source.

  • env.ts declares and validates application environment variables.
  • .env contains local values, including DATABASE_URL and local secrets. It is ignored by Git.
  • CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_HYPERDRIVE=postgresql://user:password@localhost:5432/database lets Wrangler emulate the production HYPERDRIVE binding locally without duplicating the connection string.
  • Cloudflare resource bindings live in wrangler.json.
  • Every server-side value (including non-sensitive configuration) is uploaded to Cloudflare with wrangler secret put <NAME>.
  • Production builds do not load .env; runtime secrets stay in Cloudflare encrypted bindings.

Remote/prod bindings are declared in wrangler.json:

Binding Type Purpose
ASSETS Static Serves the SPA
HYPERDRIVE Hyperdrive PostgreSQL connection proxy

Runtime env values (all stored as Cloudflare secrets):

Variable Purpose
OPENAI_API_URL Custom OpenAI-compatible URL
OPENAI_MODEL Default chat model
RESEND_FROM Sender address

Worker secrets:

Variable Purpose
BETTER_AUTH_SECRET Auth secret key
OPENAI_API_URL OpenAI-compatible base URL
OPENAI_MODEL Default chat model
RESEND_FROM Sender address

Local .env / production secret bindings:

Variable Purpose
GITHUB_CLIENT_ID GitHub OAuth client ID
GITHUB_CLIENT_SECRET GitHub OAuth client secret
GOOGLE_CLIENT_ID Google OAuth client ID
GOOGLE_CLIENT_SECRET Google OAuth client secret
RESEND_API_KEY Transactional email (Resend)
OPENAI_API_KEY AI chat

Required production secrets:

  • BETTER_AUTH_SECRET
  • OPENAI_API_URL
  • OPENAI_MODEL
  • RESEND_FROM
  • GITHUB_CLIENT_ID
  • GITHUB_CLIENT_SECRET
  • GOOGLE_CLIENT_ID
  • GOOGLE_CLIENT_SECRET
  • RESEND_API_KEY
  • OPENAI_API_KEY

Commands

pnpm dev          # Local dev via Vite+ and Void
pnpm test         # Isolated Vitest unit tests
pnpm build        # Client build + wrangler dry-run deploy
pnpm deploy       # Build and deploy with Wrangler
pnpm check        # Format, lint, and type checks
pnpm lint         # Lint (vite-plus)
pnpm format       # Format (vite-plus)

Deployment

pnpm deploy

Production runtime values are split by binding type:

# Resource bindings are declared in wrangler.json
# Local values live in the gitignored .env file
# Every server-side value is uploaded with `wrangler secret put <NAME>`

Workspace

The repo is a pnpm workspace. Pi Agent runtime code lives in packages/ai-core; shared UI components live in packages/ui:

packages/ui/src/
β”œβ”€β”€ components/      # CherryBlossom, HelloSignature
β”œβ”€β”€ footer/          # PresenceCount, SiteAge
β”œβ”€β”€ terminal/        # Interactive terminal (logic + components)

Shared TypeScript types (consumed by both src/ and server/) live in types/, aliased as @shared/.

The platform-neutral Pi runtime lives in packages/ai-core. Maintainer documentation is collected in docs/ARCHITECTURE.md, docs/DEPLOYMENT.md, docs/DESIGN.md, docs/STYLEGUIDE.md, docs/TECH.md, and docs/DATABASE.md.

License

AGPL-v3

This project contains code derived from Taki (AGPL-v3).

About

My Personal Website πŸ˜„

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages