Initial commit: Claude Code Project Tracker
Add comprehensive development intelligence system that tracks: - Development sessions with automatic start/stop - Full conversation history with semantic search - Tool usage and file operation analytics - Think time and engagement analysis - Git activity correlation - Learning pattern recognition - Productivity insights and metrics Features: - FastAPI backend with SQLite database - Modern web dashboard with interactive charts - Claude Code hook integration for automatic tracking - Comprehensive test suite with 100+ tests - Complete API documentation (OpenAPI/Swagger) - Privacy-first design with local data storage 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
commit
44ed9936b7
48 changed files with 9707 additions and 0 deletions
49
app/dashboard/routes.py
Normal file
49
app/dashboard/routes.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
"""
|
||||
Dashboard web interface routes.
|
||||
"""
|
||||
|
||||
from fastapi import APIRouter, Request, Depends
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from fastapi.responses import HTMLResponse
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.database.connection import get_db
|
||||
|
||||
dashboard_router = APIRouter()
|
||||
templates = Jinja2Templates(directory="app/dashboard/templates")
|
||||
|
||||
|
||||
@dashboard_router.get("/dashboard", response_class=HTMLResponse)
|
||||
async def dashboard_home(request: Request, db: AsyncSession = Depends(get_db)):
|
||||
"""Main dashboard page."""
|
||||
return templates.TemplateResponse("dashboard.html", {
|
||||
"request": request,
|
||||
"title": "Claude Code Project Tracker"
|
||||
})
|
||||
|
||||
|
||||
@dashboard_router.get("/dashboard/projects", response_class=HTMLResponse)
|
||||
async def dashboard_projects(request: Request, db: AsyncSession = Depends(get_db)):
|
||||
"""Projects overview page."""
|
||||
return templates.TemplateResponse("projects.html", {
|
||||
"request": request,
|
||||
"title": "Projects - Claude Code Tracker"
|
||||
})
|
||||
|
||||
|
||||
@dashboard_router.get("/dashboard/analytics", response_class=HTMLResponse)
|
||||
async def dashboard_analytics(request: Request, db: AsyncSession = Depends(get_db)):
|
||||
"""Analytics and insights page."""
|
||||
return templates.TemplateResponse("analytics.html", {
|
||||
"request": request,
|
||||
"title": "Analytics - Claude Code Tracker"
|
||||
})
|
||||
|
||||
|
||||
@dashboard_router.get("/dashboard/conversations", response_class=HTMLResponse)
|
||||
async def dashboard_conversations(request: Request, db: AsyncSession = Depends(get_db)):
|
||||
"""Conversation search and history page."""
|
||||
return templates.TemplateResponse("conversations.html", {
|
||||
"request": request,
|
||||
"title": "Conversations - Claude Code Tracker"
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue