Skip to content

matheuspydev/event-analytics-system

Repository files navigation

Analytics API Platform 📊

Uma plataforma profissional de analytics que captura eventos via API, processa dados em tempo real e apresenta métricas em um dashboard interativo.

✨ Características

  • Backend Escalável: Node.js + TypeScript com arquitetura limpa
  • Processamento Assíncrono: Filas Redis com Bull para alta performance
  • Tempo Real: WebSocket para atualizações instantâneas
  • Dashboard Interativo: React com visualizações de dados profissionais
  • API RESTful: Documentada e com rate limiting
  • Containerizado: Docker Compose para desenvolvimento fácil

🏗️ Arquitetura

Cliente → API REST → Redis Queue → Event Processor
                ↓                         ↓
           WebSocket ← Cache/DB ← Agregações

Principais Componentes:

  • API REST: Recebe eventos e expõe métricas
  • Event Processor: Processa eventos assincronamente
  • Aggregation Engine: Calcula métricas (contadores, médias, percentis)
  • WebSocket Server: Push de dados em tempo real
  • Dashboard: Visualização interativa de métricas

🚀 Tecnologias

Backend

  • Node.js + TypeScript
  • Express.js
  • PostgreSQL
  • Redis + Bull
  • Socket.io
  • Jest

Frontend

  • React + TypeScript
  • Recharts
  • TailwindCSS
  • Vite

DevOps

  • Docker + Docker Compose
  • ESLint + Prettier
  • GitHub Actions (CI/CD)

📋 Pré-requisitos

  • Node.js 20+
  • Docker e Docker Compose
  • Git

🔧 Instalação e Uso

Desenvolvimento Local

  1. Clone o repositório
git clone <seu-repo>
cd analytics-platform
  1. Configure as variáveis de ambiente
# Backend
cp backend/env.template backend/.env
# Edite backend/.env com suas configurações
  1. Inicie com Docker Compose
docker-compose up -d
  1. Ou rode localmente
# Backend
cd backend
npm install
npm run dev

# Frontend (em outro terminal)
cd frontend
npm install
npm run dev

Acessar a Aplicação

📚 Estrutura do Projeto

analytics-platform/
├── backend/
│   ├── src/
│   │   ├── config/          # Configurações (DB, Redis, etc)
│   │   ├── controllers/     # Controllers da API
│   │   ├── services/        # Lógica de negócio
│   │   ├── repositories/    # Camada de dados
│   │   ├── models/          # Modelos/Entities
│   │   ├── jobs/            # Processadores de fila
│   │   ├── middlewares/     # Middlewares Express
│   │   ├── routes/          # Definição de rotas
│   │   ├── validators/      # Schemas de validação
│   │   └── utils/           # Utilitários
│   └── tests/               # Testes unitários e integração
├── frontend/
│   └── src/
│       ├── components/      # Componentes React
│       ├── pages/           # Páginas
│       ├── services/        # Clients da API
│       ├── hooks/           # Custom React Hooks
│       └── utils/           # Utilitários
└── docker-compose.yml

🔌 API Endpoints

Projetos

  • POST /api/projects - Criar projeto
  • GET /api/projects - Listar projetos
  • GET /api/projects/:id - Obter projeto
  • PUT /api/projects/:id - Atualizar projeto
  • DELETE /api/projects/:id - Deletar projeto

Eventos

  • POST /api/events - Enviar evento
  • POST /api/events/batch - Enviar múltiplos eventos
  • GET /api/events - Listar eventos

Métricas

  • GET /api/metrics/:projectId - Obter métricas do projeto
  • GET /api/metrics/:projectId/summary - Resumo de métricas
  • GET /api/metrics/:projectId/timeseries - Série temporal

API Keys

  • POST /api/keys - Criar API key
  • GET /api/keys - Listar API keys
  • DELETE /api/keys/:id - Revogar API key

📊 Exemplo de Uso

Enviar um Evento

curl -X POST http://localhost:3000/api/events \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{
    "projectId": "123",
    "eventType": "page_view",
    "data": {
      "url": "/home",
      "userId": "user123"
    }
  }'

Consultar Métricas

curl http://localhost:3000/api/metrics/123?period=1h \
  -H "X-API-Key: your-api-key"

🧪 Testes

# Backend
cd backend
npm test                 # Rodar todos os testes
npm run test:watch       # Modo watch
npm run test:coverage    # Com cobertura

🏆 Diferenciais Técnicos

Arquitetura Limpa

  • Separação clara de responsabilidades (Controllers → Services → Repositories)
  • Dependency Injection para testabilidade
  • Design patterns: Repository, Factory, Strategy

Performance

  • Filas assíncronas para processamento em background
  • Cache em Redis para queries frequentes
  • Agregações pré-computadas
  • Conexão pool otimizada

Observabilidade

  • Logs estruturados com Winston
  • Métricas de performance
  • Health checks

Segurança

  • Rate limiting por API key
  • Validação de schemas com Joi
  • Helmet para headers de segurança
  • CORS configurável

🔮 Próximas Features

  • Machine Learning para detecção de anomalias
  • Exportação de dados (CSV, JSON)
  • Alertas avançados com múltiplos canais
  • Integração com Slack/Discord
  • Dashboard customizável
  • Multi-tenancy

📝 Licença

MIT

👤 Autor

Matheus Faria

⭐ Se este projeto foi útil, considere dar uma estrela!

About

🚀 Real-time analytics platform with event tracking, metrics aggregation, and live dashboards. Built with Node.js, TypeScript, PostgreSQL, Redis, and React.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors