Replace Vite/React scaffold with Go build spec

- AGENTS.md: build spec for Paperclip (constraints, conventions, 7 phases)
- docs/phase-1..7: per-phase work, DoD, out-of-scope, risks
- reference/: frozen decisions, stack+ports+budgets, content map, acceptance tests
- agents/: persona and security policy drafts
- Retires the React scaffold; history retained as record of the false start
This commit is contained in:
Sam Rolfe
2026-10-26 16:02:35 +11:00
parent 35a3097042
commit b267e55f8c
33 changed files with 1270 additions and 1223 deletions

View File

@@ -1,65 +1,57 @@
# AI Resume
# Ai Resume — Paperclip build directory
**An AI-powered resume and career showcase — a terminal-inspired interface that lets recruiters ask questions and get answers about my work.**
This is the **working directory for the Paperclip project `Resume Ai`**. Paperclip builds here. Everything needed to build is in this folder; nothing outside it is required.
A React application that presents a resume through an interactive, terminal-flavored interface. Features Markdown rendering, syntax highlighting, and a terminal emulator (`xterm`) — designed to demonstrate both front-end craft and AI integration for employment outreach.
## Relationship to the planning folder
## What it is
| Folder | Holds | Status |
|---|---|---|
| `/home/sam/paseo/projects/resume_ai_system/` | The *why* — research, cull decisions, stack rationale, evidence notes, content drafts | **Planning. Not the build.** Sam works here |
| `/home/sam/paseo/projects/resume_ai_system_paperclip_build/` | The *what* — build spec, phase documents, reference material, and the site itself | **This folder. Paperclip works here** |
A showcase site where my professional story is told through an interactive AI experience. Instead of a static PDF, recruiters engage with a terminal-style interface backed by AI — asking questions about experience, skills, and projects, and receiving answers rendered as rich Markdown.
The planning folder is read-only reference. Do not edit it from here, and do not make the build depend on it — anything needed must be copied in.
## Tech stack
## Start here
| Layer | Technology |
|-------|-----------|
| Framework | React 19 |
| Build | Vite 6 |
| Terminal UI | xterm (`@xterm/xterm`) |
| Markdown | react-markdown |
| Syntax highlighting | prismjs |
| Language | TypeScript |
1. **`AGENTS.md`** — the build spec. Constraints, conventions, and the phase list. Read it before anything else.
2. **`docs/phase-N-*.md`** — one document per phase: work, Definition of Done, out of scope, risks.
3. **`reference/`** — frozen decisions, stack and budgets, content map, acceptance tests.
## Architecture & design patterns
## Phases
- **Terminal-driven UX** — `xterm` provides the interactive terminal canvas
- **Markdown pipeline** — AI responses rendered through `react-markdown` + prismjs syntax highlighting for code blocks
- **Componentized** — `App.tsx` orchestrates the hero, framework, and terminal views
- **Vite HMR** — fast development with hot module replacement
- **Static + dynamic blend** — static showcase content augmented by the live AI interface
| # | Phase | Ships |
|---|---|---|
| 1 | Content source of truth | `content/` + validator |
| 2 | Mode A static site | Browsable pre-rendered site, no AI |
| 3 | Public deployment | Live URL behind Caddy |
| 4 | Corpus and retrieval | `content/` → Qdrant |
| 5 | Mode B console | Streaming, cited answers |
| 6 | Guardrails, cost, kill switch | Safe to leave public |
| 7 | Polish | Logos, diagrams, code exhibits |
## Standards
Order is deliberate. Content first (both renderers need it). **Deploy at Phase 3, not last** — a live half-built URL is worth more than a perfect site that never ships. AI after deployment so it can never block launch.
- TypeScript
- Semantic HTML
- Vite production build (`tsc -b && vite build`)
- ESLint for code quality
## Repository
## Getting started
This folder **is** the git working copy of `sam/ai-resume`. One repo, one product.
```bash
npm install
npm run dev # development server
npm run build # production build
npm run lint # lint
```
Previously held an abandoned Vite/React scaffold. It was replaced by this build spec; the history is retained because it honestly records the false start, and it is referenced in the site's "alternatives considered" content.
## Structure
## Ground rules
```
src/
├── assets/ # Images (hero, framework logos)
├── App.tsx # Main application shell
├── App.css # Styling
├── index.css # Global styles
└── main.tsx # Entry point
```
- **Do not touch other systems.** No stopping containers, no editing other projects, no `nixos-rebuild`, no Caddy changes except the single block specified in Phase 3 — and that one Sam applies.
- **Mode A must work with every AI service stopped.** Hard gate.
- **Never invent facts about Sam's career.** If it is not in `reference/` or `content/`, ask.
- **Secrets** live in `~/.config/environment.d/` only.
- **All models** go through OmniRoute.
## Roadmap
## Current state
- [ ] Wire the terminal to the AI resume backend (see `aboutme_chat` — the LangChain/RAG service)
- [ ] Embed AI Q&A about experience, skills, and projects
- [ ] Add project gallery with syntax-highlighted code samples
---
*The front-end of the AI resume system. Backend services (LangChain/RAG chat) live in [aboutme_chat](https://gitea.lab.audasmedia.com.au/sam/aboutme_chat). Part of the Sam Rolfe portfolio family.*
- [x] Repo prepared, scaffold retired, build spec written
- [ ] Phase 1 — content source of truth
- [ ] Phase 2 — static site
- [ ] Phase 3 — public deployment
- [ ] Phase 4 — corpus
- [ ] Phase 5 — AI overlay
- [ ] Phase 6 — guardrails
- [ ] Phase 7 — polish