Two vanilla prototype apps sharing one JSON API.
admin/— manage list of opportunities (CRUD)matcher/— user answers personalized questions, gets ranked matchesdata/opportunities.json— single source of truth (swap for DB later)server.js— vanilla Node http server, no dependencies
node server.jsOpen:
| Method | Path | Body | Use |
|---|---|---|---|
| GET | /api/opportunities |
— | list all |
| POST | /api/opportunities |
{title, category, description, tags[], eligibility{ageMin,ageMax,citizenship,interests[]}, deadline, url} |
create |
| DELETE | /api/opportunities/:id |
— | remove |
| POST | /api/match |
{age, citizenship, interests[]} |
ranked matches |
CORS enabled — any other prototype app can call the API directly.
GovBB design system loaded via CDN:
https://unpkg.com/@govtech-bb/styles@1.0.0-alpha.16/dist/styles.css
Light overrides in public/shared/styles.css.
- Paste scrape list into
data/opportunities.json - Add more questions in
matcher/index.html+ scoring inserver.js#scoreOpp