spb/wp-spboucher-ai
Public
1# Research Working Papers — Simon-Pierre Boucher Research Observatory23Public scientific publishing platform for the UQO working papers of Simon-Pierre Boucher: **https://wp.spboucher.ai**.45Three layers: a **publication library** (stable identifiers, versioned manuscripts, rich metadata, citation exports), a **discovery engine** (topics, methods, datasets, authors, timeline, typo-tolerant and semantic search) and a **research-intelligence layer** (knowledge graph of papers linked by methods, data, topics, authors and labelled textual similarity).67| | |8|---|---|9| Stack | Next.js 16 (App Router, React 19, TypeScript, Tailwind 4), PostgreSQL 17 + pgvector + pg_trgm + unaccent, postgres-js, poppler, PM2, OpenAI embeddings (optional) |10| Node | MacLustr **M3U96b** (`~/apps/wp-spboucher-ai`), deployed with `mld`; public route through the MacLustr Tunnel (BHS64, Caddy, Let's Encrypt) |11| Languages | English (canonical URLs) and French (`/fr/...`) |12| Discoverability | Highwire Press (Google Scholar) + Dublin Core meta tags, JSON-LD `ScholarlyArticle`, OAI-PMH (`/api/oai`), RSS (`/feed.xml`), sitemap, public JSON API (`/api/docs`) |13| Administration | `/admin` — password (Argon2id) + optional TOTP, CSRF, audit trail, ingestion queue, versions, taxonomy, settings, analytics, backups |1415## Development1617```bash18pnpm install19cp .env.example .env # fill in (see docs/operations.md)20pnpm db:migrate && pnpm db:roles && pnpm bootstrap21pnpm seed:import --publish # verified catalog + manuscripts from $STORAGE_DIR/inbox22pnpm worker # in another terminal23pnpm dev # http://localhost:856024```2526Tests: `pnpm test` (unit), `pnpm test:e2e` (Playwright, set `E2E_BASE_URL`), `pnpm test:security [url]`, `pnpm verify:deploy [url]`.2728Documentation: `docs/infrastructure-report.md` (discovery and compatibility), `docs/architecture.md`, `docs/operations.md` (runbook), `docs/api.md`, `docs/verification.md` (test evidence).29