The CU Boulder Faculty AI Exchange — a pilot with the Research & Innovation Office, live at arpg.colorado.edu/toolshare (CU Boulder Google SSO required).
Faculty, staff, and students share AI tools, skills, and workflows: bare links, blog-style write-ups, small file artifacts (Claude skill files, prompt templates, scripts), and GitHub repo cards with live metadata. Entries are up/down-voted and discussed, the front page segments by Beginner / Intermediate / Advanced, and a vote-weighted leaderboard ranks contributors. First login runs a short one-time survey (how tools are paid for, what's in use, comfort level) whose aggregates inform RIO — individual answers are never shown.
backend/toolshare_app/— FastAPI + SQLAlchemy (async SQLite). The package runs two ways:- Integrated (current pilot):
integrate.pymounts the API inside an existing FastAPI host app under/api/toolshare/*, reusing the host's Google-SSO session (@colorado.edugate) — deployable with zero new services, ports, or nginx changes. - Standalone:
toolshare_app.main:appon :8001 with its own OAuth routes (seedeployment/andMIGRATION.md).
- Integrated (current pilot):
frontend/— React 18 + Vite SPA, hash-routed so it can be hosted as plain static files. Markdown rendered with react-markdown (no raw HTML passthrough). Editorial "faculty gazette" design.deployment/— pilot deploy script, standalone systemd/nginx configs, and the pilot→standalone migration guide.
Safety details: uploads are extension-allowlisted, size-capped, stored under
random names, and always served as Content-Disposition: attachment +
application/octet-stream + nosniff; votes are unique per user; moderation
is post-first with env-configured admins.
cd backend
python3.12 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env # use the "Local development" block; set DEV_FAKE_USER
.venv/bin/uvicorn toolshare_app.main:app --port 8001
cd ../frontend
npm install && npm run dev # http://localhost:5173/toolshare/, "Dev sign-in"Not yet chosen — contact ARPG before reuse.