- Add ApiKey Prisma model (SHA-256 hash, prefix, lastUsedAt) with migration - Implement ApiKeyService (create, list, delete, verify) - Extend requireAuth middleware to accept sk_-prefixed API keys alongside JWTs - Add GET/POST /api-keys routes for creating and revoking keys - Add stateless Streamable HTTP MCP server at POST/GET /mcp exposing all 20 time-tracking tools (clients, projects, time entries, timer, statistics, client targets and corrections) - Frontend: ApiKey types, apiKeys API module, useApiKeys hook - Frontend: ApiKeysPage with key table, one-time raw-key reveal modal, and inline revoke confirmation - Wire /api-keys route and add API Keys link to Management dropdown in Navbar
35 lines
897 B
JSON
35 lines
897 B
JSON
{
|
|
"name": "timetracker-backend",
|
|
"version": "1.0.0",
|
|
"scripts": {
|
|
"dev": "tsx watch src/index.ts",
|
|
"build": "tsc",
|
|
"start": "node dist/index.js",
|
|
"db:migrate": "prisma migrate dev",
|
|
"db:generate": "prisma generate",
|
|
"db:seed": "tsx prisma/seed.ts"
|
|
},
|
|
"dependencies": {
|
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
"@prisma/client": "^6.19.2",
|
|
"@quixo3/prisma-session-store": "^3.1.19",
|
|
"cors": "^2.8.5",
|
|
"dotenv": "^17.3.1",
|
|
"express": "^4.18.2",
|
|
"express-session": "^1.17.3",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"openid-client": "^5.6.1",
|
|
"zod": "^3.22.4"
|
|
},
|
|
"devDependencies": {
|
|
"@types/cors": "^2.8.17",
|
|
"@types/express": "^4.17.21",
|
|
"@types/express-session": "^1.17.10",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/node": "^25.2.3",
|
|
"prisma": "^6.19.2",
|
|
"tsx": "^4.7.0",
|
|
"typescript": "^5.3.3"
|
|
}
|
|
}
|