Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
AI resume-to-portfolio SaaS (BYOK) — Portfol.io
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Shipfolio — AI Developer Portfolio Builder SaaS
Hosted product: students turn a resume into a live portfolio site either by
prompting a recruiter-grade AI (their own API key) or editing structured fields directly,
then publish it to their own Vercel account.
This repo is the product — accounts, per-user storage, the BYOK
extraction endpoint, and the Vercel deploy pipeline. It is separate from
surya-vamshi-portfolio,
which stays Surya's own single-tenant personal site (Lovable-synced,
deployed to Cloudflare) and is untouched by this project.Read the full README ↗Turn a resume into a bespoke, model-written HTML portfolio website in minutes. Free preview with watermarked studio inspection. One payment ($9, or ₹499 in India) unlocks Pro (clean HTML, zip export, GitHub push, Vercel deployment) and includes 1 year of hosting with a custom domain; hosting then renews at $7.99/year (₹449). See Payments & Billing. No fixed templates or JSON steps — each portfolio is an individual, self-contained HTML/CSS document written by an LLM following strict guardrail rules and verified by automated fact checking.
Clone the repository and install dependencies:
npm ci
Configure environment variables:
cp .env.example .env
Fill in your Supabase credentials (SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY), a 32-byte base64 ENCRYPTION_KEY, and APP_ORIGIN (e.g. http://localhost:3000).
Database migrations:
Migrations live in supabase/migrations/ (0001 through 0021). In local development, apply them via the Supabase CLI (supabase db push) or SQL editor. See Deploying for strict production migration rules.
Start the local development server:
npm run dev
| Script | Command | Purpose |
|---|---|---|
npm run dev | vite dev | Start local Vite development server |
npm run build | vite build | Create production client and SSR build |
npm run preview | vite preview | Preview production build locally |
npm test | vitest run | Run unit and integration tests |
npm run lint | eslint . | Run ESLint across codebase |
npm run format | prettier --write . | Format all source files with Prettier |
npm run setup:retention | node scripts/setup-retention-cron.mjs | Configure Supabase storage purge cron & Edge Function |
Before committing or opening a PR, ensure all quality gates pass:
# Typecheck
npx tsc --noEmit -p .
# Linting (must have 0 errors)
npm run lint
# Test suite
npx vitest run
# Production build
npm run build
All variables are read inside handlers/functions at runtime, never at module scope.
This is the beginning of the README. Read the rest at the original. Read the full README ↗