Modern EVE Online Killmail Tracking & Analytics Platform
Track, analyze, and visualize EVE Online killmails with real-time data synchronization
Features • Quick Start • Documentation • Architecture • Contributing
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.
- 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
- 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
- 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
- Node.js 18+ and Yarn
- PostgreSQL database
- RabbitMQ server (for background workers)
- EVE Online Developer Application (Create one here)
# 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- Authentication Setup - Complete guide to EVE SSO authentication flow
- Backend README - Backend architecture and API documentation
- Frontend README - Frontend setup and component structure
- Database Schema - Prisma data models and relations
- GraphQL Schema - Auto-generated GraphQL schema
- Complete Workers Documentation - All workers and queues
- Character Killmail Worker - Sync killmails for any character
- Killmail Enrichment - Auto-populate missing entity data
- Worker Status Monitoring - Real-time worker health checks
- Queue Naming Standards - Queue naming conventions
- Character Sync Quick Reference - Quick commands for character sync
- EVE SSO Documentation - Deep dive into SSO integration
- Top Charts Cost Analysis - Materialized views performance analysis and cost comparison
- Unique Features Proposal - Planned features and roadmap
┌─────────────────────────────────────────────────────────────────┐
│ 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│ └──────────────────┘
└──────────┘
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
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
Root Level (Monorepo):
yarn dev # Start frontend dev server
yarn dev:frontend # Start frontend on port 3000
yarn dev:backend # Start backend on port 4000Frontend:
yarn dev # Start Next.js dev server
yarn build # Production build
yarn codegen # Generate Apollo Client hooksCreate 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"Create frontend/.env.local:
NEXT_PUBLIC_GRAPHQL_URL="http://localhost:4000/graphql"Visit http://localhost:4000/graphql to access the GraphQL Playground and test queries.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
- 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
- Bug fixes and issue resolution
- New features and enhancements
- Documentation improvements
- UI/UX enhancements
- Performance optimizations
- Test coverage
- Internationalization
This project is open source and available under the MIT License.
- EVE Online - For the amazing game and APIs
- zKillboard - For providing public killmail data
- CCP Games - For the EVE ESI API
- 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