Skip to content

umutyerebakmaz/killreport

KillReport

Modern EVE Online Killmail Tracking & Analytics Platform

TypeScript Next.js GraphQL PostgreSQL Prisma RabbitMQ

Powered by DigitalOcean

Track, analyze, and visualize EVE Online killmails with real-time data synchronization

FeaturesQuick StartDocumentationArchitectureContributing


Overview

KillReport is a full-stack application built for EVE Online players and corporations to track, monitor, and analyze killmail data. It provides real-time synchronization with zKillboard and EVE ESI APIs, offering comprehensive analytics and a modern, responsive UI.

Why KillReport?

  • Real-time Sync: Automated background workers fetch killmails for characters, corporations, and alliances
  • Secure Authentication: EVE Online SSO integration for seamless login
  • Rich Analytics: Detailed statistics, filters, and visualizations
  • High Performance: GraphQL API with DataLoader optimization and efficient caching
  • Scalable: Distributed job processing with RabbitMQ for horizontal scaling
  • Modern UI: Built with Next.js 15, React 19, and Tailwind CSS

Features

Core Functionality

  • EVE SSO Authentication - Secure login with EVE Online accounts
  • Character Killmail Tracking - Sync and view killmail history for any character
  • Corporation/Alliance Tracking - Organization-level killmail aggregation
  • Real-time Updates - Automated background synchronization via RabbitMQ
  • Advanced Filtering - Filter by date, ship type, system, and more
  • Pagination - Efficient loading of large datasets
  • Worker Monitoring - Real-time status dashboard for background jobs

Technical Highlights

  • Modern Stack: Next.js 16 (App Router), React 19, TypeScript 5+
  • GraphQL API: Type-safe API with automatic code generation
  • Database: PostgreSQL with Prisma ORM and Materialized Views
  • Background Jobs: RabbitMQ-based distributed task queue
  • External APIs: Integration with zKillboard and EVE ESI
  • Type Safety: Full TypeScript coverage across frontend and backend
  • DataLoader: Optimized database queries to prevent N+1 problems
  • Performance: Redis caching and optimized query patterns

Quick Start

Prerequisites

  • Node.js 18+ and Yarn
  • PostgreSQL database
  • RabbitMQ server (for background workers)
  • EVE Online Developer Application (Create one here)

Installation

# Clone the repository
git clone https://github.com/umutyerebakmaz/killreport.git
cd killreport

# Install dependencies (monorepo)
yarn install

# Setup backend environment
cd backend
cp .env.example .env
# Edit .env with your EVE_CLIENT_ID, EVE_CLIENT_SECRET, DATABASE_URL, etc.

# Setup database
yarn prisma:migrate
yarn prisma:generate

# Setup frontend environment
cd ../frontend
cp .env.example .env.local
# Edit .env.local with NEXT_PUBLIC_GRAPHQL_URL

# Return to root and start development servers
cd ..
yarn dev:backend  # Terminal 1 - Starts on http://localhost:4000
yarn dev:frontend # Terminal 2 - Starts on http://localhost:3000

Documentation

Table of Contents

Getting Started

Architecture & Design

Workers & Background Jobs

Quick References

Performance & Analysis


Architecture

┌─────────────────────────────────────────────────────────────────┐
│                         Frontend (Next.js)                       │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐          │
│  │   Auth Flow  │  │  Killmails   │  │  Analytics   │          │
│  │   (EVE SSO)  │  │   (Lists)    │  │  (Graphs)    │          │
│  └──────────────┘  └──────────────┘  └──────────────┘          │
└──────────────────────────┬──────────────────────────────────────┘
                           │ GraphQL (Apollo Client)
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│                      Backend (GraphQL Yoga)                      │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐          │
│  │   Resolvers  │  │  DataLoaders │  │   Services   │          │
│  │  (Modular)   │  │ (Optimized)  │  │  (ESI/zKill) │          │
│  └──────────────┘  └──────────────┘  └──────────────┘          │
└────┬──────────────────────────┬──────────────────────┬──────────┘
     │                          │                      │
     ▼                          ▼                      ▼
┌──────────┐          ┌──────────────────┐   ┌─────────────────┐
│PostgreSQL│          │     RabbitMQ     │   │  External APIs  │
│ (Prisma) │          │  (Task Queue)    │   │  - zKillboard   │
│          │          │                  │   │  - EVE ESI      │
│  Users   │          │  ┌────────────┐  │   └─────────────────┘
│  Chars   │          │  │  Workers   │  │
│  Kills   │          │  │  (Sync)    │  │
│  Corps   │          │  └────────────┘  │
│  Alliances│         └──────────────────┘
└──────────┘

Tech Stack

Frontend:

  • Next.js 16.0.10 with App Router
  • React 19.2.0 with Server Components
  • Apollo Client 3.11 for GraphQL
  • Tailwind CSS 4.1.15 for styling
  • TypeScript 5+ for type safety

Backend:

  • GraphQL Yoga (GraphQL Server)
  • Prisma ORM with PostgreSQL
  • RabbitMQ for job queues
  • DataLoader for query optimization
  • TypeScript with auto-generated types

External Services:

  • EVE Online ESI API
  • zKillboard API
  • EVE SSO for authentication

Development

Project Structure

killreport/
├── frontend/              # Next.js application
│   ├── src/
│   │   ├── app/           # App Router pages
│   │   ├── components/    # React components
│   │   ├── generated/     # Auto-generated GraphQL types
│   │   ├── hooks/         # Custom React hooks
│   │   └── lib/           # Utilities (Apollo Client)
│   └── package.json
│
├── backend/               # GraphQL API server
│   ├── src/
│   │   ├── schema/        # GraphQL schema files
│   │   ├── resolvers/     # GraphQL resolvers
│   │   ├── services/      # External API integrations
│   │   ├── workers/       # Background job workers
│   │   └── server.ts      # GraphQL Yoga server
│   ├── prisma/
│   │   └── schema.prisma  # Database schema
│   └── package.json
│
└── package.json           # Monorepo root

Available Scripts

Root Level (Monorepo):

yarn dev              # Start frontend dev server
yarn dev:frontend     # Start frontend on port 3000
yarn dev:backend      # Start backend on port 4000

Frontend:

yarn dev              # Start Next.js dev server
yarn build            # Production build
yarn codegen          # Generate Apollo Client hooks

Configuration

Backend Environment Variables

Create backend/.env:

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/killreport"

# EVE Online SSO
EVE_CLIENT_ID="your_eve_client_id"
EVE_CLIENT_SECRET="your_eve_client_secret"
EVE_CALLBACK_URL="http://localhost:4000/auth/callback"

# Server
PORT=4000
FRONTEND_URL="http://localhost:3000"

# RabbitMQ
RABBITMQ_URL="amqp://localhost"

Frontend Environment Variables

Create frontend/.env.local:

NEXT_PUBLIC_GRAPHQL_URL="http://localhost:4000/graphql"

Testing

GraphQL Playground

Visit http://localhost:4000/graphql to access the GraphQL Playground and test queries.


Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and commit: git commit -m 'Add amazing feature'
  4. Push to your branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Contribution Guidelines

  • Write clear, descriptive commit messages
  • Add documentation for new features
  • Ensure TypeScript types are properly defined
  • Test your changes thoroughly
  • Follow the existing code style

Areas for Contribution

  • Bug fixes and issue resolution
  • New features and enhancements
  • Documentation improvements
  • UI/UX enhancements
  • Performance optimizations
  • Test coverage
  • Internationalization

License

This project is open source and available under the MIT License.


Acknowledgments


Support & Contact

  • Issues: GitHub Issues
  • Discussions: GitHub Discussions
  • In-Game Contact: General XAN (EVE Online character)
    • Feel free to send ISK, feedback, or questions in-game
    • All donations and feedback are appreciated!

Made with ❤️ for the EVE Online community

About

Modern EVE Online Killmail Tracking & Analytics Platform

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors