Skip to content

Project overview

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 team collaboration and DevOps practices.

Target group

Primary users

Role Using
Teacher/Trainer Activity monitoring, evaluation, problem identification
Course Admin Course configuration, user management
Operator Deployment, 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):

Code Check Category Weight
R01 Issue Assigned Issue 8 %
R02 Branch + MR Created MR 6 %
R03 Tests Written MR 10 %
R04 MR Linked to Issue MR 8 %
R05 MR Description MR 5 %
R06 Code Review Received Review 12 %
R07 Code Review Given Review 12 %
R08 Review Response Review 10 %
R09 MR Approved Review 9 %
R10 Merged by Author MR 7 %
R11 MR + Issue Closed MR 6 %
R12 Pipeline Green CI 7 %

3. Gaming detection

GitPulse detects suspicious behavior:

Detected patterns

  • Commit spam - lots of small commits with no content
  • LGTM reviews - empty code review
  • Review rings - mutual review without real control
  • Last-minute burst - all work before the deadline

4. Dashboard and reports

  • Real-time dashboard - current status of all teams
  • Team drill-down - detailed analysis of a specific team
  • Student detail - individual contributions
  • Export - HTML, PDF, CSV reports

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
Component Technology Purpose
API Server FastAPI REST API, webhook handling
Database PostgreSQL Persistent data
Cache/Queue Redis Caching, job queue
Workers RQ (Redis Queue) Background processing
Frontend Jinja2 + htmx + Alpine.js Server-side rendering with component macros

Deployment

GitPulse is designed to be deployed using Docker Compose:

YAML
1
2
3
4
5
6
7
services:
  api:        # FastAPI aplikácia
  worker:     # RQ worker pre pozadie úlohy
  scheduler:  # Periodické úlohy
  postgres:   # Databáza
  redis:      # Cache a queue
  caddy:      # Reverse proxy s HTTPS

Limits and restrictions

Current restrictions

  • Only supports GitLab (not GitHub, Bitbucket)
  • Self-hosted GitLab must be accessible from a VM
  • Requires a GitLab API token with sufficient rights
  • Maximum recommended: 50 projects, 500 students

Further reading