Major Features:
- Multi-project governance with Rule Manager web UI
- Project Manager for organizing governance across projects
- Variable substitution system (${VAR_NAME} in rules)
- Claude.md analyzer for instruction extraction
- Rule quality scoring and optimization
Admin UI Components:
- /admin/rule-manager.html - Full-featured rule management interface
- /admin/project-manager.html - Multi-project administration
- /admin/claude-md-migrator.html - Import rules from Claude.md files
- Dashboard enhancements for governance analytics
Backend Implementation:
- Controllers: projects, rules, variables
- Models: Project, VariableValue, enhanced GovernanceRule
- Routes: /api/projects, /api/rules with full CRUD
- Services: ClaudeMdAnalyzer, RuleOptimizer, VariableSubstitution
- Utilities: mongoose helpers
Documentation:
- User guides for Rule Manager and Projects
- Complete API documentation (PROJECTS_API, RULES_API)
- Phase 3 planning and architecture diagrams
- Test results and error analysis
- Coding best practices summary
Testing & Scripts:
- Integration tests for projects API
- Unit tests for variable substitution
- Database migration scripts
- Seed data generation
- Test token generator
Key Capabilities:
✅ UNIVERSAL scope rules apply across all projects
✅ PROJECT_SPECIFIC rules override for individual projects
✅ Variable substitution per-project (e.g., ${DB_PORT} → 27017)
✅ Real-time validation and quality scoring
✅ Advanced filtering and search
✅ Import from existing Claude.md files
Technical Details:
- MongoDB-backed governance persistence
- RESTful API with Express
- JWT authentication for admin endpoints
- CSP-compliant frontend (no inline handlers)
- Responsive Tailwind UI
This implements Phase 3 architecture as documented in planning docs.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
76 lines
2.5 KiB
JSON
76 lines
2.5 KiB
JSON
{
|
|
"name": "tractatus-website",
|
|
"version": "0.1.0",
|
|
"description": "Tractatus-Based LLM Safety Framework website platform",
|
|
"main": "src/server.js",
|
|
"scripts": {
|
|
"start": "node src/server.js",
|
|
"dev": "concurrently -n \"SERVER,WATCHDOG\" -c \"cyan,magenta\" \"nodemon src/server.js\" \"node scripts/framework-watchdog.js\"",
|
|
"dev:simple": "nodemon src/server.js",
|
|
"build:css": "npx tailwindcss -i ./public/css/src/tailwind.css -o ./public/css/tailwind.css --minify",
|
|
"watch:css": "npx tailwindcss -i ./public/css/src/tailwind.css -o ./public/css/tailwind.css --watch",
|
|
"test": "jest --coverage",
|
|
"test:watch": "jest --watch",
|
|
"test:unit": "jest tests/unit",
|
|
"test:integration": "jest tests/integration",
|
|
"test:security": "jest tests/security",
|
|
"lint": "eslint src/ tests/",
|
|
"lint:fix": "eslint src/ tests/ --fix",
|
|
"migrate:docs": "node scripts/migrate-documents.js",
|
|
"init:db": "node scripts/init-db.js",
|
|
"init:koha": "node scripts/init-koha.js",
|
|
"seed:admin": "node scripts/seed-admin.js",
|
|
"seed:projects": "node scripts/seed-projects.js",
|
|
"generate:pdfs": "node scripts/generate-pdfs.js",
|
|
"deploy": "bash scripts/deploy-frontend.sh",
|
|
"framework:init": "node scripts/session-init.js",
|
|
"framework:watchdog": "node scripts/framework-watchdog.js",
|
|
"framework:check": "node scripts/pre-action-check.js",
|
|
"framework:recover": "node scripts/recover-framework.js"
|
|
},
|
|
"keywords": [
|
|
"ai-safety",
|
|
"llm",
|
|
"tractatus",
|
|
"digital-sovereignty",
|
|
"ai-governance"
|
|
],
|
|
"author": "John Stroh <john.stroh.nz@pm.me>",
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"bcrypt": "^5.1.1",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^16.3.1",
|
|
"express": "^4.18.2",
|
|
"express-rate-limit": "^7.1.5",
|
|
"helmet": "^7.1.0",
|
|
"highlight.js": "^11.9.0",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"marked": "^11.0.0",
|
|
"mongodb": "^6.3.0",
|
|
"mongoose": "^8.19.1",
|
|
"puppeteer": "^24.23.0",
|
|
"sanitize-html": "^2.11.0",
|
|
"stripe": "^14.25.0",
|
|
"validator": "^13.11.0",
|
|
"winston": "^3.11.0"
|
|
},
|
|
"devDependencies": {
|
|
"@anthropic-ai/sdk": "^0.65.0",
|
|
"autoprefixer": "^10.4.21",
|
|
"axe-core": "^4.10.3",
|
|
"concurrently": "^9.2.1",
|
|
"eslint": "^8.56.0",
|
|
"jest": "^29.7.0",
|
|
"nodemon": "^3.0.2",
|
|
"pa11y": "^9.0.1",
|
|
"pa11y-reporter-html": "^2.0.0",
|
|
"postcss": "^8.5.6",
|
|
"supertest": "^6.3.3",
|
|
"tailwindcss": "^3.4.18"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.0.0",
|
|
"npm": ">=9.0.0"
|
|
}
|
|
}
|