Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

275 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tracker Logo

Tracker

Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure

CI StatusLatest ReleaseLicenseGo Report CardGo Reference

GoReactTypeScriptgRPCDockerKubernetes


🎯 What is Tracker?

Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.

Why Tracker?

  • 🆓 Free & Open Source - No vendor lock-in, full control over your data
  • 🚀 Easy to Deploy - Single Docker image with frontend & backend
  • 📊 Rich UI - Beautiful React interface with dark mode
  • 🔌 Multi-Protocol - gRPC, REST, and Swagger UI
  • 📈 Observable - Built-in Prometheus metrics
  • 🔄 Real-time - Track events as they happen
  • 🎨 Customizable - Extend and adapt to your needs

🖥️ Interface

Dashboard

Real-time overview with event velocity chart, environment breakdown, and live activity stream.

Dashboard

Timeline

Chronological list of all events with advanced filtering by type, environment, priority and status.

Timeline

Streamline

Gantt-style visualization to detect and manage scheduling conflicts across services.

Streamline

Calendar

Monthly calendar view with per-day event details and overlap detection.

Calendar

Overlaps

Dedicated page for resolving scheduling conflicts with team contact information.

Overlaps

Insights

Analytics over a configurable period — event distribution, top projects, and trends.

Insights

Catalog

Inventory of all services, modules, libraries, and containers with version and owner tracking.

Catalog

Architecture

Interactive dependency graph of services registered in the catalog.

Architecture

Compliance

Version compliance tracking to identify projects using outdated deliverables.

Compliance

Locks

View and manage deployment locks across all services and environments.

Locks

Drifts

Track and manage configuration drifts with Jira integration.

Drifts

RPA Usage

Monitor Robotic Process Automation executions.

RPA Usage

Links

Quick access portal to all your tools and resources, synced from Homer.

Links


✨ Features

🎯 Event Management

  • Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
  • Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
  • Linking: Connect events to PRs, tickets, and related events
  • Search & Filter: Powerful search across all event attributes
  • Timeline View: Visualize events chronologically
  • Calendar View: See events in a calendar format
  • Insights: Analytics and trend visualization over configurable periods

📦 Service Catalog

  • Inventory Management: Track modules, libraries, projects, containers
  • Version Tracking: Monitor versions across your infrastructure
  • Multi-Language: Support for Go, Java, Python, JavaScript, and more
  • Repository Links: Direct links to GitHub/GitLab repositories
  • Architecture View: Interactive service dependency graph
  • Compliance Tracking: Identify projects with outdated deliverables

🔒 Distributed Locking

  • Exclusive Locks: Prevent concurrent operations
  • Lock Ownership: Track who owns which locks
  • Automatic Cleanup: Locks expire automatically
  • Coordination: Synchronize deployments and operations
  • Lock Management UI: View and release locks directly from the interface

🎨 Modern UI

  • Collapsible Sidebar: Clean navigation organized by domain
  • Dashboard: Live activity stream with charts and statistics
  • Streamline: Gantt chart with automatic overlap detection
  • Calendar: Monthly calendar view of events
  • Dark / Light / System mode: Three theme options
  • Responsive: Works on desktop, tablet, and mobile
  • Global Search: Ctrl+K instant search across all data
  • Quick Actions: Header shortcuts to create events, locks, drifts, and more

🔌 API & Integration

  • gRPC API: High-performance native API
  • REST API: HTTP/JSON endpoints via grpc-gateway
  • Swagger UI: Interactive API documentation
  • OpenAPI Spec: Standard API specification
  • MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
  • Prometheus: Built-in metrics endpoint
  • Homer Integration: Sync links from your Homer dashboard

🚀 Quick Start

Using Docker (Recommended)

# Build the image
docker build -t bananaops/tracker:latest .# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latest

Access the application:

Using Docker Compose

# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down

From Source

Backend:

# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go serv

Frontend:

# Install dependenciescd web
npm install
# Start development server
npm run dev

📖 Documentation

Getting Started

User Guides

API Documentation


🏗️ Architecture

┌─────────────────────────────────────────────────────────────┐
│ Web Browser │
│ http://localhost:8080 │
└────────────────────────┬────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ React │ │ REST │ │ Swagger │
│ UI │ │ API │ │ UI │
└─────────┘ └────┬────┘ └─────────┘
│
┌───────▼────────┐
│ grpc-gateway │
│ (REST→gRPC) │
└───────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌───▼────┐ ┌───▼────┐
│ Event │ │Catalog │ │ Lock │
│ Service │ │Service │ │Service │
└────┬────┘ └───┬────┘ └───┬────┘
│ │ │
└─────────────┼──────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ / FeretDB │
└─────────────┘

🎯 Use Cases & Examples

1. Track Deployments

Create a deployment event via REST API:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Deploy service-api v2.1.0 to production", "attributes": { "message": "Deployed via GitHub Actions", "type": 1, "priority": 2, "service": "service-api", "status": 3, "environment": 7, "owner": "platform-team" }, "links": { "pullRequestLink": "https://github.com/org/repo/pull/123", "ticket": "PROJ-456" } }'

Response:

{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}

2. List Recent Events

# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7

3. Manage Service Catalog

Add a service to the catalog:

curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{ "name": "user-service", "type": 3, "language": 1, "version": "1.2.3", "repositoryUrl": "https://github.com/org/user-service", "description": "User management microservice" }'

4. Configuration Drift Detection

Track when infrastructure configuration deviates from expected state:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Terraform drift detected in production", "attributes": { "message": "Manual changes detected in AWS security group", "type": 3, "priority": 3, "service": "infrastructure", "environment": 7 } }'

5. Distributed Locking

Acquire a lock before deployment:

# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{ "name": "production-deployment", "owner": "ci-pipeline-123", "ttl": 3600 }'# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deployment

6. RPA Usage Tracking

Monitor robotic process automation executions:

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "RPA: Invoice Processing Completed", "attributes": { "message": "Processed 150 invoices successfully", "type": 5, "priority": 1, "service": "invoice-automation", "status": 3 } }'

7. Incident Tracking

curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{ "title": "Production API Outage", "attributes": { "message": "API returning 500 errors", "type": 4, "priority": 4, "service": "api-gateway", "status": 1, "environment": 7, "impact": 3 }, "links": { "ticket": "INC-789", "slackThread": "https://workspace.slack.com/archives/C123/p456" } }'

🛠️ Technology Stack

Backend

  • Language: Go 1.26.2+
  • API: gRPC + REST (grpc-gateway)
  • Database: MongoDB / FeretDB (with automatic index optimization)
  • Metrics: Prometheus
  • Logging: Structured JSON logs

Frontend

  • Framework: React 19
  • Language: TypeScript 5
  • Build: Vite
  • Styling: Tailwind CSS
  • Icons: Lucide React + Font Awesome
  • State: React Query (TanStack Query)

DevOps

  • Containerization: Docker multi-stage builds
  • Orchestration: Kubernetes + Helm
  • CI/CD: Skaffold
  • Protocol: Protocol Buffers (protobuf)

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🐛 Report Bugs: Open an issue
  2. 💡 Suggest Features: Start a discussion
  3. 📝 Improve Docs: Submit documentation improvements
  4. 🔧 Submit PRs: Fix bugs or add features

See CONTRIBUTING.md for detailed guidelines.

Good First Issues

Looking for a place to start? Check out issues labeled good first issue or help wanted.


📊 Project Status

  • Core API: Production ready
  • Web UI: Production ready
  • Docker: Production ready
  • Kubernetes: Production ready
  • Slack App: Production ready (project github tracker-slack)
  • 🚧 Github Action: In development
  • 🚧 Webhooks: Planned

📜 License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.


🌟 Star History

If you find Tracker useful, please consider giving it a star! ⭐

Star History Chart


👥 Contributors

This project exists thanks to all the people who contribute. The contributors list is automatically updated.

Want to contribute? Check out our Contributing Guide!


💬 Community & Support


Made with ❤️ by the BananaOps community

⭐ Star us on GitHub🐛 Report a Bug💬 Join Discussion

Releases

Packages

Used by

Contributors

Languages