Phase 3: Gitea Integration - Migration 012: app_settings table + gitea_commit_sha on endpoint_versions - SettingsService: encrypted token storage (AES-256-GCM from JWT_SECRET) - GiteaService: full REST API client — repo management, file CRUD, branches, commit history, diff/compare, pull requests, sync all - giteaController + routes: 15 API endpoints for settings, branches, commits, PRs, endpoint info, sync - VersionService hooks: auto-sync to Gitea on publish/draft (non-blocking) - Frontend: Gitea tab in Settings (connection, sync status, branch mgmt), Gitea panel in EndpointEditor (file link, last commit SHA) - docker-compose.gitea.yml: optional companion Gitea container - Cache fix: index.html served with no-cache for instant deploys ESLint Setup - Backend: eslint 8 + @typescript-eslint configured - Frontend: eslint 8 + @typescript-eslint + react-hooks + react-refresh - Fixed 15 lint issues: unused imports, require statements, escapes, Function type, empty catch blocks - Added npm run lint / lint:fix scripts Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
54 lines
1.3 KiB
JSON
54 lines
1.3 KiB
JSON
{
|
|
"name": "kis-api-builder-backend",
|
|
"version": "1.0.0",
|
|
"description": "API Builder Backend - Dynamic API construction system",
|
|
"main": "dist/server.js",
|
|
"scripts": {
|
|
"dev": "nodemon",
|
|
"build": "tsc",
|
|
"start": "node dist/server.js",
|
|
"migrate": "ts-node src/scripts/run.ts",
|
|
"seed": "ts-node src/scripts/seed.ts"
|
|
},
|
|
"keywords": [
|
|
"api",
|
|
"builder",
|
|
"sql",
|
|
"dynamic"
|
|
],
|
|
"author": "",
|
|
"license": "MIT",
|
|
"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",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"pg": "^8.11.3",
|
|
"swagger-jsdoc": "^6.2.8",
|
|
"swagger-ui-express": "^5.0.0",
|
|
"uuid": "^9.0.1",
|
|
"zod": "^3.22.4"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bcrypt": "^5.0.2",
|
|
"@types/cors": "^2.8.17",
|
|
"@types/express": "^4.17.21",
|
|
"@types/jsonwebtoken": "^9.0.5",
|
|
"@types/node": "^20.10.6",
|
|
"@types/pg": "^8.10.9",
|
|
"@types/swagger-jsdoc": "^6.0.4",
|
|
"@types/swagger-ui-express": "^4.1.6",
|
|
"@types/uuid": "^9.0.7",
|
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
"@typescript-eslint/parser": "^6.21.0",
|
|
"eslint": "^8.57.1",
|
|
"http-proxy-middleware": "^3.0.5",
|
|
"nodemon": "^3.0.2",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^5.3.3"
|
|
}
|
|
}
|