This log documents the transformation of a command-line Git statistics tool into a modern full-stack web application with Vue.js frontend and FastAPI backend.
- CLI tool (
git_stats.py) for analyzing Git repository activity - Python-based with basic statistics output
- No web interface or multi-user support
- Technology Stack: FastAPI + SQLAlchemy + SQLite + JWT authentication
- Architecture: RESTful API with day-based atomic storage
- Key Features:
- Multi-user authentication with JWT tokens
- Repository management (CRUD operations)
- Git analysis integration with job tracking
- Statistics API (period, daily, author breakdowns)
- Database migration system
User Preference: "Latest technology, simplified abstraction, trending framework, best practices"
Selected Stack:
- Vue 3 with Composition API and TypeScript
- Vite for fast development and optimized builds
- Tailwind CSS for utility-first styling
- Pinia for state management (modern Vuex replacement)
- Chart.js with vue-chartjs for data visualizations
- Vue Router with navigation guards
-
FastAPI Static File Serving
- Integrated approach: FastAPI serves built Vue frontend
- API routes prefixed with
/api/ - SPA catch-all routing for Vue Router
-
Authentication Flow
- JWT token storage in localStorage
- Automatic token injection in API requests
- Navigation guards for protected routes
-
Component Architecture
- Composition API for modern, maintainable code
- Reusable components with TypeScript interfaces
- Responsive design with Tailwind CSS
frontend/
├── src/
│ ├── components/
│ │ ├── AppLayout.vue # Main layout with navigation
│ │ └── AppHeader.vue # Header with user menu
│ ├── views/
│ │ ├── LoginView.vue # Authentication UI
│ │ ├── DashboardView.vue # Overview dashboard
│ │ ├── RepositoriesView.vue # Repository CRUD
│ │ └── RepositoryStatsView.vue # Statistics visualization
│ ├── stores/
│ │ └── auth.ts # Pinia authentication store
│ ├── composables/
│ │ └── useApi.ts # Axios API client
│ └── router/
│ └── index.ts # Vue Router configuration
- Login/register forms with validation
- JWT token management with automatic persistence
- User state management with Pinia
- Protected route navigation guards
- Add repositories with path validation
- List user repositories with quick actions
- Trigger Git analysis with configurable parameters
- View analysis job status and history
- Interactive charts showing development activity
- Period selection (7, 14, 30, 90 days)
- Daily activity line charts
- Author contribution tables
- Real-time data updates after analysis
- Chart.js integration for line charts and bar charts
- Responsive design adapting to screen sizes
- Color-coded statistics (commits, lines added/deleted)
- Author breakdown with AI coder flagging
Problem: Build failed with "tailwindcss directly as PostCSS plugin" error
Solution: Installed @tailwindcss/postcss and updated postcss.config.js
Problem: API endpoints returning 404 because catch-all route intercepted API calls Solution: Reordered routes: static mounts first, API routers, then catch-all SPA route
Problem: Frontend-backend API format mismatch Solution: Standardized on JSON request format with proper Pydantic schemas
Authentication:
- POST /api/auth/register
- POST /api/auth/login
- GET /api/auth/me
Repositories:
- GET /api/repositories/
- POST /api/repositories/
- GET /api/repositories/{id}
- PUT /api/repositories/{id}
- DELETE /api/repositories/{id}
Statistics:
- GET /api/repositories/{id}/stats/period
- GET /api/repositories/{id}/stats/daily
- GET /api/repositories/{id}/stats/authors
Analysis:
- POST /api/repositories/{id}/analyze
- GET /api/repositories/{id}/jobs
-- Users table for system authentication
Users: id, username, email, password_hash, created_at
-- Repositories managed by users
Repositories: id, user_id, name, local_path, description, created_at
-- Git commit authors (separate from users)
Authors: id, email, name, is_ai_coder
-- Atomic daily statistics storage
DailyAuthorStats: id, repository_id, author_id, date, commits_count,
added_lines, deleted_lines, files_changed
-- Analysis job tracking
AnalysisJobs: id, repository_id, status, job_type, date_from, date_to,
started_at, completed_at, error_message, records_processed# Option 1: Separate servers (recommended for active development)
# Terminal 1: Backend
uv run uvicorn backend.app.main:app --reload --port 8002
# Terminal 2: Frontend with hot-reload
cd frontend && npm run dev
# Access: http://localhost:5173 (proxies to backend on 8002)
# Option 2: Integrated serving
cd frontend && npm run build
uv run uvicorn backend.app.main:app --reload --port 8002
# Access: http://localhost:8002cd frontend && npm run build
uv run uvicorn backend.app.main:app --host 0.0.0.0 --port 8002Created comprehensive test (test_fullstack.py) covering:
- API health checks and frontend serving
- User registration and authentication
- Repository CRUD operations
- Git analysis triggering and completion
- Statistics retrieval and validation
Test Coverage:
- Complete user workflow from registration to statistics
- API endpoint validation
- Database operations
- Git analysis integration
- Error handling
code_stats/
├── git_stats.py # CLI tool
├── README.md
└── requirements.txt
code_stats/
├── backend/
│ ├── app/
│ │ ├── auth/ # Authentication module
│ │ ├── core/ # Database models and config
│ │ ├── repositories/ # Repository management
│ │ ├── statistics/ # Stats and analysis
│ │ └── main.py # FastAPI application
│ └── migrations/ # Database migrations
├── frontend/
│ ├── src/ # Vue application source
│ ├── public/ # Static assets
│ └── dist/ # Built frontend (production)
├── git_stats.py # Legacy CLI (still functional)
├── test_fullstack.py # Integration test
├── CLAUDE.md # Development guidelines
└── README.md # Complete documentation
- Day-based Atomic Storage: Only daily author statistics stored; all aggregations calculated
- User/Author Separation: System users distinct from Git commit authors
- Manual AI Flagging: No automatic detection; manual marking of AI-generated code
- RESTful API Design: Standard HTTP methods with proper status codes
- SPA Architecture: Single-page application with client-side routing
- Component Composition: Reusable Vue components with TypeScript
- Database Indexing: Optimized queries for statistics aggregation
- Frontend Code Splitting: Vite automatically splits bundles
- API Response Caching: Statistics cached at application level
- Git Analysis Efficiency: Subprocess optimization for large repositories
- JWT Authentication: Secure token-based authentication
- Path Validation: Repository path existence and Git validation
- User Isolation: Users can only access their own repositories
- Input Sanitization: Pydantic schemas for request validation
- CORS Configuration: Proper cross-origin request handling
- Real-time Updates: WebSocket integration for live analysis progress
- Advanced Visualizations: More chart types and dashboard customization
- Export Functionality: CSV/PDF report generation
- Team Features: Shared repositories and team analytics
- CI/CD Integration: Automated analysis on Git hooks
- Database Scaling: PostgreSQL migration for production workloads
- Framework Selection: Vue 3 Composition API provides excellent developer experience
- Integration Complexity: FastAPI-Vue integration requires careful route ordering
- State Management: Pinia significantly simpler than Vuex for modern applications
- Testing Importance: End-to-end tests catch integration issues early
- Documentation Value: Comprehensive docs essential for maintenance
- Vue 3 + TypeScript: Excellent developer experience and type safety
- Tailwind CSS: Rapid UI development with consistent design
- FastAPI: Fast development and automatic API documentation
- Pinia: Simple, intuitive state management
- Vite: Lightning-fast development builds and hot-reload
- Static File Serving: Required careful FastAPI configuration
- Build Tool Integration: PostCSS plugin compatibility issues
- API Format Consistency: Frontend-backend schema alignment
Status: ✅ Complete full-stack web application Features: Authentication, repository management, Git analysis, statistics visualization Testing: Comprehensive end-to-end integration test passing Documentation: Complete README with development and production workflows Deployment: Ready for production with optimized builds
The project successfully transformed from a simple CLI tool into a modern, scalable web application suitable for multi-user Git repository analysis with rich visualizations and real-time data.