Help us improve the GitPulse documentation. Fill in the survey.

Project overview

  • For: Everyone
  • Requires: Nothing

What is a GitPulse?

GitPulse is a web application that automatically analyzes student activity on GitLab projects and provides teachers with objective metrics for evaluating teamwork and DevOps practices.

Target group

Primary users

RoleUsing
Teacher/TrainerActivity monitoring, evaluation, problem identification
Course AdminCourse configuration, user management
OperatorDeployment, maintenance, monitoring of the system

Secondary users

  • Students - indirect access through transparent metrics
  • Administrators - administration of the entire instance

Key features

1. Data collection from GitLab

sequenceDiagram
    participant G as GitLab
    participant W as Webhook Handler
    participant Q as Redis Queue
    participant P as Event Processor
    participant D as Database

    G->>W: Push/MR/Issue Event
    W->>W: Validate signature
    W->>Q: Enqueue event
    Q->>P: Process event
    P->>D: Store metrics

GitPulse receives webhooks from GitLab and processes:

  • Push events - commits, file changes
  • Merge request events - creation, review, merge
  • Note events - comments, code review
  • Pipeline events - CI/CD builds
  • Issue events - task management

2. Compliance assessment

The system evaluates 13 DevOps practices (R01-R13):

CodeCheckCategoryWeight
R01Issue AssignedIssue8 %
R02Branch + MR CreatedMR6 %
R03Tests WrittenMR10 %
R04MR Linked to IssueMR8 %
R05MR DescriptionMR5 %
R06Code Review ReceivedReview12 %
R07Code Review GivenReview12 %
R08Review ResponseReview10 %
R09MR ApprovedReview9 %
R10Merged by AuthorMR7 %
R11MR + Issue ClosedMR6 %
R12Pipeline GreenCI7 %
R13Commit QualityCommit0 % (opt-in)

3. Dashboard and analysis

  • Real-time dashboard - current status of all teams with SSE live updates
  • Team drill-down - detailed analysis of a specific team
  • Student detail - individual contributions with per-check breakdown
  • Export - CSV data export, JSON course configuration export/import
  • LLM analysis - optional AI analysis of merge requests with personal data redaction, disabled in production
  • Email notifications - automated course and assessment notifications

Technology stack

flowchart TB
    subgraph "Frontend"
        D["Dashboard - Jinja2/HTML"]
    end
    
    subgraph "Backend"
        A["FastAPI"] --> B["SQLAlchemy"]
        A --> C["Redis"]
        W["RQ Workers"]
    end
    
    subgraph "Data"
        B --> P[("PostgreSQL")]
        C --> R[("Redis")]
    end
    
    subgraph "External"
        G["GitLab API"]
    end
    
    A --> G
    W --> G
ComponentTechnologyPurpose
API ServerFastAPIREST API, webhook handling
DatabasePostgreSQLPersistent data
Cache/QueueRedisCaching, job queue
WorkersRQ (Redis Queue)Background processing
FrontendJinja2 + htmx + Alpine.jsServer-side rendering with component macros

Deployment

GitPulse is designed to be deployed using Docker Compose:

services:
  api:           # FastAPI application
  worker:        # RQ worker (high / default / low)
  postgres:      # Database
  redis:         # Cache and queue
  gitpulse-docs: # Documentation site (Hugo)
  caddy:         # Reverse proxy with HTTPS

GitPulse does not use a scheduler or cron. All jobs are triggered by webhooks or explicit actions in the interface.

Limits and restrictions

Current restrictions. - Only supports GitLab (not GitHub, Bitbucket) - Self-hosted GitLab must be accessible from the VM - Requires a GitLab API token with sufficient rights

Further reading