Skip to content

Evntaly/Evntaly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Evntaly Cover

Evntaly

Open-source event analytics platform for tracking users, sessions, and product events in real time.

Quick Start β€’ Test Results β€’ Features β€’ SDK & Docs β€’ Architecture β€’ Manual Setup β€’ Configuration β€’ Contributing

License PRs Welcome


Test Results

Suite Tests Status
Backend (Jest) 14 tests, 3 suites βœ… Passing
Portal (Karma/Jasmine) 4 tests, 2 components βœ… Passing

Backend coverage: utilities.service, lookups.service, lookup.controller

# Run backend tests
cd backend && npm test

# Run portal tests
cd portal && npm test

Features

  • Real-Time Event Tracking β€” Capture and visualize events as they happen via WebSocket
  • User & Session Analytics β€” Track active users, sessions, page views, and user journeys
  • Dashboard β€” KPIs, charts, geographic distribution, browser/OS breakdown, UTM analysis
  • Funnel Analytics β€” Build and analyze conversion funnels
  • Alerting System β€” Set up alerts on events with Slack and email notifications
  • Integrations β€” Slack, email (Resend/Nodemailer), and webhook support
  • Multi-Project β€” Manage multiple projects under one account
  • OAuth Login β€” Sign in with GitHub or Google
  • REST API β€” Full API with JWT authentication and PAT tokens

SDK & Documentation

Track events from your app using the official SDKs:

SDK Install Docs
JavaScript/Node npm install evntaly-js SDK Integration Guide
Python pip install evntaly-python SDK Integration Guide
Go go get github.com/Evntaly/evntaly-go SDK Integration Guide
C# dotnet add package EvntalySDK SDK Integration Guide

Self-hosted: When running Evntaly yourself, configure the SDK with your backend URL (e.g. http://localhost/api/v1 or your domain). See each SDK's docs for the apiUrl or baseUrl option.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Browser (:80)                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  Portal (Nginx) β”‚
              β”‚  Angular SPA    β”‚
              β””β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”˜
                  β”‚         β”‚
         /api/*   β”‚         β”‚  /*
                  β”‚         β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”     β”‚ Static files
          β”‚  Backend  β”‚     β”‚ served by Nginx
          β”‚  NestJS   β”‚     β”‚
          β”‚  (:3000)  β”‚
          β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
         β”‚   MongoDB   β”‚
         β”‚  (:27017)   β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Component Tech Stack
Backend NestJS 10, TypeScript, Mongoose, Socket.IO, Passport JWT
Portal Angular 17, Angular Material, Bootstrap 5, ApexCharts, ECharts
Database MongoDB 7
Container Docker, Docker Compose, Nginx

Quick Start

The fastest way to run Evntaly is with Docker Compose.

Prerequisites: Docker and Docker Compose

# 1. Clone the repo
git clone https://github.com/Evntaly/Evntaly.git
cd Evntaly

# 2. Copy and configure environment variables
cp .env.example .env

# 3. Start all services
docker compose up -d

Open http://localhost:8080 in your browser.

The API is available at http://localhost:8080/api/v1/.

Manual Setup

Backend

cd backend

# Install dependencies
npm install

# Copy environment config
cp ../.env.example .env
# Edit .env with your MongoDB connection string

# Run in development mode
npm run start:dev

The API starts on http://localhost:3000.

Portal

cd portal

# Install dependencies
npm install

# Run in development mode
npm start

The portal starts on http://localhost:8945.

MongoDB

You need a running MongoDB instance. For local development:

# Using Docker
docker run -d --name evntaly-mongo -p 27017:27017 mongo:7

# Or install MongoDB locally
# https://www.mongodb.com/docs/manual/installation/

Environment Variables

Variable Required Default Description
NODE_ENV No development development or production
PORT No 3000 Backend server port
DB_CONNECTION Yes β€” MongoDB connection string
CLIENT_URL No http://localhost:8945 Frontend URL for CORS
API_BASE_URL No β€” Backend API URL for server-side event forwarding (self-hosted)
SENTRY_DSN No β€” Sentry DSN for error tracking
GITHUB_CLIENT_ID No β€” GitHub OAuth app client ID
GITHUB_SECRET No β€” GitHub OAuth app secret
GITHUB_REDIRECT_URI No β€” GitHub OAuth callback URL
GOOGLE_CLIENT_ID No β€” Google OAuth client ID
GOOGLE_SECRET No β€” Google OAuth client secret
GOOGLE_REDIRECT_URI No β€” Google OAuth callback URL
RESEND_API_KEY No β€” Resend API key for transactional emails
SLACK_REDIRECT_URI No β€” Slack OAuth redirect for integrations

Project Structure

evntaly/
β”œβ”€β”€ backend/                    # NestJS API
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ @core/              # Utilities, middleware, helpers
β”‚   β”‚   β”œβ”€β”€ @domain/            # Mongoose schemas/models
β”‚   β”‚   β”œβ”€β”€ api/                # REST controllers + WebSocket gateway
β”‚   β”‚   β”œβ”€β”€ Infrastructure/     # Services, repositories, DTOs, transactions
β”‚   β”‚   β”œβ”€β”€ app.module.ts       # Root NestJS module
β”‚   β”‚   └── main.ts             # Entry point
β”‚   β”œβ”€β”€ templates/              # Email templates (Handlebars)
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── package.json
β”œβ”€β”€ portal/                     # Angular frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”‚   β”œβ”€β”€ analytics/      # Funnels, retention
β”‚   β”‚   β”‚   β”œβ”€β”€ core/           # Services, interceptors, helpers
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/      # KPIs, charts, maps
β”‚   β”‚   β”‚   β”œβ”€β”€ developer-account/ # Auth, settings
β”‚   β”‚   β”‚   β”œβ”€β”€ events/         # Event feed
β”‚   β”‚   β”‚   β”œβ”€β”€ insights/       # Users, features, topics
β”‚   β”‚   β”‚   β”œβ”€β”€ integrations/   # Slack, email
β”‚   β”‚   β”‚   β”œβ”€β”€ shared/         # Reusable components
β”‚   β”‚   β”‚   └── theme/          # Layout, header, sidebar
β”‚   β”‚   └── environments/       # Angular environment configs
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ nginx.conf
β”‚   └── package.json
β”œβ”€β”€ docker-compose.yml          # Orchestrates all 3 services
β”œβ”€β”€ .env.example                # Environment template
β”œβ”€β”€ LICENSE
└── README.md

API Overview

All endpoints are prefixed with /api/v1/.

Method Endpoint Description
POST /account/create Create a new account
POST /account/signin Sign in
GET /account/details Get account details
POST /register/event Register an event (SDK endpoint)
POST /register/user Register/identify a user
GET /events/list List events
GET /events/kpis Event KPIs
GET /dashboard/kpis/* Dashboard metrics
GET /users/list List tracked users
POST /alerts/create Create an alert
GET /integrations/list List integrations
POST /funnels/create Create a funnel

Authentication is via JWT token in the Authorization header for dashboard endpoints, and via secret + pat headers for SDK/registration endpoints.

Contributing

Contributions are welcome! Here's how to get started:

  1. Fork the repository
  2. (Optional) Run ./scripts/setup-git-hooks.sh to use project git hooks
  3. Create a feature branch: git checkout -b feature/my-feature
  4. Make your changes and add tests if applicable
  5. Commit: git commit -m "Add my feature"
  6. Push: git push origin feature/my-feature
  7. Open a Pull Request

Please open an issue first for major changes to discuss the approach.

License

MIT

About

Open-source event analytics platform for tracking users, sessions, and product events in real time πŸ“Š

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors