Self-hosted error tracking and monitoring platform for modern applications. Track errors, monitor performance, and get instant Telegram notifications when things go wrong.
- π Error Tracking: Automatic error grouping by fingerprint with stack traces
- π Multi-Environment Support: Separate tracking for Production, Staging, and Development
- π Telegram Notifications: Real-time alerts with customizable triggers
- π Error Analytics: Occurrence counts, trends, and spike detection
- π― Smart Grouping: Automatic error deduplication and grouping
- π Team Collaboration: Project-based access with role management
- π Non-Blocking SDK: Zero performance impact on your application
- π¨ Modern Dashboard: Beautiful React UI for error management
vigileye/
βββ server/ # Go backend API
βββ web/ # React dashboard
βββ nestjs-sdk/ # NestJS SDK package
- Go 1.21+ with Gorilla Mux
- PostgreSQL for data persistence
- JWT authentication
- Telegram Bot API for notifications
- React 19 with TypeScript
- Vite for blazing-fast builds
- TailwindCSS for styling
- React Router v7 for navigation
- TanStack Query for data fetching
- React Hook Form for forms
- NestJS integration package
- TypeScript support
- Non-blocking error logging
- Go 1.21+
- Node.js 18+
- PostgreSQL 14+
- Docker (optional)
Using Docker:
docker-compose up -dManual PostgreSQL:
createdb vigileye
psql vigileye < database/migrations.sqlcd server
# Copy environment template
cp .env.example .env
# Update .env with your configuration
# DATABASE_URL=postgres://user:password@localhost:5432/vigileye?sslmode=disable
# JWT_SECRET=your-secret-key
# PORT=5001
# ENV=development
# ALLOWED_ORIGINS=http://localhost:5173
# TELEGRAM_HELPER_BOT_TOKEN=your-bot-token # Optional
# BASE_URL=http://localhost:3000
# Install dependencies and run
go mod download
go run cmd/server/main.goServer will start on http://localhost:5001
cd web
# Install dependencies
npm install
# Start development server
npm run devDashboard will be available at http://localhost:5173
- Register an account at
http://localhost:5173/register - Create a new project
- Copy the API key from your environment (Production/Staging/Development)
- Integrate the SDK into your application
npm install git+https://github.com/prabalesh/vigileye-nestjs.gitimport { VigileEyeModule } from '@prabalesh/vigileye-nestjs';
@Module({
imports: [
VigileEyeModule.forRoot({
apiKey: process.env.VIGILEYE_API_KEY,
serverUrl: 'http://localhost:5001',
enabled: process.env.NODE_ENV === 'production',
}),
],
})
export class AppModule {}curl -X POST http://localhost:5001/api/log \
-H "Content-Type: application/json" \
-H "X-API-Key: your-environment-api-key" \
-d '{
"message": "Something went wrong",
"level": "error",
"stack": "Error: Something went wrong\n at main.js:10:5",
"source": "backend",
"url": "/api/users",
"method": "GET"
}'- Create a Telegram bot via @BotFather
- Get your bot token
- Create a group/channel and add your bot
- Get the chat ID (use
/startwith the helper bot or check logs)
In the dashboard:
- Go to Project β Environment β Settings β Notifications
- Enable Telegram notifications
- Enter your bot token and chat ID
- Configure triggers:
- New Error: Alert on first occurrence
- Threshold: Alert when error count exceeds limit in time window
- Spike on Ignored: Alert when ignored errors spike 100x
| Error Status | Recurs? | Notification Sent? |
|---|---|---|
| New | First time | β
Yes (if new_error enabled) |
| Resolved | Yes β Reopens | β
Yes (if new_error enabled) |
| Ignored | Yes β Stays ignored | β No (silent) |
| Ignored | Yes + Spiking (100x) | β
Yes (if spike_on_ignored enabled) |
Register:
POST /api/auth/register
Content-Type: application/json
{
"username": "john",
"email": "john@example.com",
"password": "secure123"
}Login:
POST /api/auth/login
Content-Type: application/json
{
"email": "john@example.com",
"password": "secure123"
}
# Returns: { "token": "jwt-token" }Log Error:
POST /api/log
X-API-Key: your-environment-api-key
Content-Type: application/json
{
"message": "Error message",
"level": "error", # error, warn, info
"source": "backend", # backend, frontend, mobile
"stack": "stack trace",
"url": "/api/endpoint",
"method": "GET",
"user_id": "user-123",
"status_code": 500,
"extra_data": {}
}Create Project:
POST /api/projects
Authorization: Bearer jwt-token
Content-Type: application/json
{
"name": "My App"
}Get Error Groups:
GET /api/projects/{id}/error-groups?status=unresolved&level=error
Authorization: Bearer jwt-tokenResolve Error Group:
PATCH /api/projects/{id}/error-groups/{group_id}/resolve
Authorization: Bearer jwt-token
Content-Type: application/json
{
"resolved": true
}- Unresolved: Active errors requiring attention
- Resolved: Fixed errors (auto-reopen if they recur)
- Ignored: Errors you want to suppress (stay silent unless spiking)
Errors are automatically grouped by fingerprint based on:
- Error message
- Stack trace
- URL/endpoint
This prevents duplicate alerts for the same issue.
- JWT-based authentication
- API key authentication for error ingestion
- Role-based access control (Admin/Member)
- Sensitive data redaction in SDK
- CORS protection
# Database
DATABASE_URL=postgres://user:password@localhost:5432/vigileye?sslmode=disable
# Authentication
JWT_SECRET=your-secret-key-min-32-chars
# Server
PORT=5001
ENV=development # development, production
# CORS
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000
# Telegram (Optional)
TELEGRAM_HELPER_BOT_TOKEN=your-bot-token
BASE_URL=http://localhost:3000 # For notification linksVITE_API_URL=http://localhost:5001Key tables:
users- User accountsprojects- Top-level projectsproject_members- Team access controlenvironments- Environment configs (prod/staging/dev)error_groups- Grouped errors by fingerprinterror_logs- Individual error occurrencesnotification_history- Notification audit trail
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details
Built with β€οΈ for developers who want full control over their error tracking.
Questions? Open an issue or reach out!