Skip to content

Latest commit

 

History

199 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

f0rr0.dev

Sid Jain's portfolio, writing archive, and GitHub commit timeline. The site is a Next.js application designed for Vercel.

Local development

Use Node 24 and Bun:

bun install --frozen-lockfile
bun run dev

The website works without secrets; the persisted commit feed stays empty until PostgreSQL is configured. Set DATABASE_URL for application queries and, when using a runtime transaction pooler, DATABASE_URL_UNPOOLED to a direct or session-pooler connection for migrations and cron setup. Supply these in .env.local for local use and in Vercel environment settings for deployments; the application does not provision a database or synchronize connection settings. See the commit sync guide for Supabase Cron, account polling, and webhook setup. The separate Codex stats guide covers its encrypted account snapshots and scheduled sync.

Validation

bun run format:check
bun run lint
bun run typecheck
bun test
bun run build

bun run build only builds the application. To use the existing production migrations and Supabase scheduling, set Vercel's Build Command to:

bun scripts/migrate-production-database.ts && bun run build && bun scripts/configure-supabase-cron.ts --production-build

Those operational scripts act only on Vercel production deployments. The migration runs before the build because pages may read the database while building. Cron configuration follows a successful build; it is not a post-deployment hook. Local operations remain bun run db:migrate and bun run supabase:cron.

Updating an existing deployment

Move the existing per-account token values into one GITHUB_TOKENS JSON object, keyed by the logins in src/content/site.ts. The same tokens can be reused; no new tokens or account IDs are required. Set this variable in Vercel and set the ACTIVITY_GITHUB_TOKENS repository secret for the manual backfill Action (GitHub reserves secret names beginning with GITHUB_). Keep the old token variables until the new deployment has been verified, then remove them.

Keep the existing database, webhook, cron, cursor-signing and OpenAI credentials. To retain analytics, set NEXT_PUBLIC_POSTHOG_KEY to the existing project's public capture key; NEXT_PUBLIC_POSTHOG_REGION defaults to us.

For the database-backed installation, set the Build Command above before deploying this change. It applies migration 0022, builds against the updated schema, then updates cron configuration. Migration 0022 only replaces seven username allowlists with valid-login checks; it adds no tables or columns and rewrites no stored history. Leave older applied migrations intact.

Customize once

  • src/content/resume.ts: identity, social profiles, career, education and PDF paths.
  • src/content/home.ts: introduction and featured work.
  • src/content/site.ts: tracked GitHub authors, language and work-log timezone.
  • .env.example: every supported environment variable, with blank values.

Vercel's VERCEL_PROJECT_PRODUCTION_URL supplies the canonical domain, including for preview metadata. Enable Automatically expose System Environment Variables in the project settings. Local URLs use localhost and the configured port. There is no separately maintained site URL or blog asset base URL: exported Markdown uses the image URLs already emitted by the MDX compiler.

GitHub activity uses configured public authors and separate credentials. See the GitHub activity guide for token format and service setup, and the analytics guide for optional PostHog configuration.

Each installation needs its own database. Cron/Vault names are installation-wide; sharing one database between independent sites is unsupported. Set vercel.json regions to match your database location (the existing deployment uses Tokyo). Personal content and the authoring defaults under .rulesync/ can remain or be edited independently of the application configuration.

.worktreeinclude automatically copies .env.local into local worktrees. Use only development-scoped credentials there; keep production credentials in the deployment secret store. The copied file remains ignored by Git.

Docker is required for PostgreSQL integration tests; Bun reports those tests as skipped when Docker is unavailable. Typst tooling is needed to regenerate the résumé PDF. Versions are pinned in mise.toml, package.json and bun.lock; CI installs with the frozen lockfile.

GitHub native secret scanning and push protection are enabled for this repository. Enable those repository settings when creating a fork. The historical Firebase project configuration still needs an owner-side restrictions/retirement review. Report credential exposure privately through GitHub's security reporting feature when enabled. Otherwise, use the maintainer contact in src/content/resume.ts; never paste credentials into a public issue.

Reuse status

A code license and the reuse policy for personal writing/images still need to be chosen. Public source availability alone is not a grant of reuse rights. Preserve upstream copyright/license notices for vendored fonts, assets and authoring skills.

About

:octocat: Source for for my site

Topics

Resources

Stars

45 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages