Add .gitignore and initial CLAUDE.md documentation
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
backend/
|
||||||
|
frontend/
|
||||||
127
CLAUDE.md
Normal file
127
CLAUDE.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
This is a GitLab Docker Images Tracker project designed to monitor, track, and manage Docker images across multiple GitLab repositories with automated vulnerability scanning and lifecycle management.
|
||||||
|
|
||||||
|
## Project Purpose
|
||||||
|
|
||||||
|
This tool addresses the challenge of managing Docker images across numerous GitLab projects by:
|
||||||
|
|
||||||
|
1. **Discovery & Tracking**: Automatically discovers Docker images referenced in:
|
||||||
|
- `docker-compose*.yml` files
|
||||||
|
- `Dockerfile*` files
|
||||||
|
- `.gitlab-ci*.yml` files
|
||||||
|
- Across main branches (main, master, develop)
|
||||||
|
|
||||||
|
2. **Lifecycle Management**: Tracks image usage over time to identify:
|
||||||
|
- Images currently in use across projects
|
||||||
|
- Images that have been removed from files, branches, or projects
|
||||||
|
- Images that are no longer referenced anywhere
|
||||||
|
|
||||||
|
3. **Vulnerability Scanning**: Provides periodic vulnerability scanning (configurable intervals) with severity classification:
|
||||||
|
- Critical vulnerabilities
|
||||||
|
- High severity vulnerabilities
|
||||||
|
- Medium severity vulnerabilities
|
||||||
|
- Low severity vulnerabilities
|
||||||
|
- Unspecified severity vulnerabilities
|
||||||
|
|
||||||
|
4. **Ignore Management**: Offers granular control to exclude from scanning:
|
||||||
|
- Specific Docker images
|
||||||
|
- Entire files (ignoring all images within)
|
||||||
|
- Entire projects (ignoring all files and images within)
|
||||||
|
|
||||||
|
5. **Reporting**: Generates actionable reports showing which images need updates and where they are being used across the GitLab infrastructure.
|
||||||
|
|
||||||
|
## Core Features
|
||||||
|
|
||||||
|
### Image Discovery
|
||||||
|
- Scan GitLab repositories for Docker images in configuration files
|
||||||
|
- Parse `docker-compose*.yml`, `Dockerfile*`, and `.gitlab-ci*.yml` files
|
||||||
|
- Track images across main branches (main, master, develop)
|
||||||
|
- Maintain historical data on image usage patterns
|
||||||
|
|
||||||
|
### Vulnerability Management
|
||||||
|
- Periodic vulnerability scanning (configurable schedule)
|
||||||
|
- Severity classification and reporting
|
||||||
|
- Integration with vulnerability databases
|
||||||
|
- Automated alerting for critical vulnerabilities
|
||||||
|
|
||||||
|
### Ignore System
|
||||||
|
- **Image-level ignoring**: Exclude specific Docker images from scanning
|
||||||
|
- **File-level ignoring**: Exclude entire files from image discovery
|
||||||
|
- **Project-level ignoring**: Exclude entire projects from scanning
|
||||||
|
- Maintain ignore lists with reasoning and timestamps
|
||||||
|
|
||||||
|
### Reporting & Analytics
|
||||||
|
- Current image inventory across all projects
|
||||||
|
- Vulnerability status dashboard
|
||||||
|
- Image lifecycle tracking (active, deprecated, removed)
|
||||||
|
- Project-specific image usage reports
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
This is a full-stack application with separated backend and frontend:
|
||||||
|
|
||||||
|
```
|
||||||
|
├── backend/ # Python backend with FastAPI
|
||||||
|
│ ├── main.py # FastAPI application entry point
|
||||||
|
│ ├── pyproject.toml # Python dependencies and configuration
|
||||||
|
│ └── README.md # Backend documentation
|
||||||
|
└── frontend/ # React + TypeScript frontend
|
||||||
|
├── src/ # React components and application code
|
||||||
|
├── package.json # Node.js dependencies and scripts
|
||||||
|
└── vite.config.ts # Vite build configuration
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technology Stack
|
||||||
|
|
||||||
|
- **Backend**: Python 3.12+ with FastAPI, SQLite database, and python-gitlab
|
||||||
|
- **Frontend**: React 19 + TypeScript + Vite + React Router + Tailwind CSS + shadcn/ui
|
||||||
|
- **Database**: SQLite for local storage of image inventory, scan results, and configuration
|
||||||
|
- **Build Tools**: Vite for frontend, Python packaging for backend
|
||||||
|
- **Package Management**: uv/pip for Python, Bun for Node.js
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Backend Commands
|
||||||
|
```bash
|
||||||
|
cd backend
|
||||||
|
# Install dependencies
|
||||||
|
uv sync
|
||||||
|
# Run tests
|
||||||
|
uv run pytest
|
||||||
|
# Format code
|
||||||
|
uv run black .
|
||||||
|
# Lint code
|
||||||
|
uv run ruff check .
|
||||||
|
# Run development server (runs on port 5000)
|
||||||
|
uv run python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Frontend Commands
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
# Install dependencies
|
||||||
|
bun install
|
||||||
|
# Start development server (runs on port 3000)
|
||||||
|
bun dev
|
||||||
|
# Build for production
|
||||||
|
bun build
|
||||||
|
# Lint code
|
||||||
|
bun lint
|
||||||
|
# Preview production build
|
||||||
|
bun preview
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture Considerations
|
||||||
|
|
||||||
|
- **Data Models**: Projects, Files, Images, Vulnerabilities, Ignore Rules (SQLite schema)
|
||||||
|
- **API Layer**: FastAPI REST endpoints for frontend communication
|
||||||
|
- **Scanning Engine**: Background job system for repository scanning
|
||||||
|
- **GitLab Integration**: python-gitlab library for repository and branch access
|
||||||
|
- **Database**: SQLite with proper indexing for performance
|
||||||
|
- **Security**: Secure handling of GitLab tokens and vulnerability data
|
||||||
|
- **Scalability**: Design for scanning hundreds of repositories efficiently
|
||||||
Reference in New Issue
Block a user