BrawlTome is a comprehensive Brawlhalla tracking application built with a modern monorepo architecture. It provides player statistics, rankings, and detailed insights into Brawlhalla gameplay.
This project is organized as an Nx monorepo:
- apps/api: NestJS backend application handling data synchronization, caching, and serving the REST API.
- apps/web: Next.js frontend application providing the user interface.
- libs/bhapi-client: A dedicated client library for interacting with the Brawlhalla API.
- libs/database: Prisma ORM setup and database utilities.
- libs/shared-types: Shared TypeScript interfaces and DTOs used across frontend and backend.
- libs/ui: Shared UI components (built with Shadcn UI/Radix UI).
- Framework: NestJS (Backend), Next.js (Frontend)
- Language: TypeScript
- Database: PostgreSQL with Prisma
- Styling: Tailwind CSS
- Tools: Nx, ESLint, Prettier
- Node.js (v18+)
- PostgreSQL
- Redis (for queue management)
- Brawlhalla API Key (Get one at dev.brawlhalla.com)
-
Clone the repository:
git clone https://github.com/NickTacke/brawltome cd brawltome -
Install dependencies:
pnpm install
-
Start local dependencies (optional but recommended):
docker compose up -d
-
Environment Setup: Copy the example env files and fill in required values:
apps/api/.env.example→apps/api/.envapps/worker/.env.example→apps/worker/.envapps/web/.env.example→apps/web/.env.local
Start the development servers:
# Start the API
pnpm dev:api
# Start the Worker
pnpm dev:worker
# Start the Web App
pnpm dev:webPopulate the database with initial static data (Legends, etc.):
pnpm seed:legendspnpm seed:api: Run general API seeder.pnpm seed:legends: Seed static Legend data from the Brawlhalla API.pnpm lint: Lint all projects.pnpm typecheck: Typecheck all projects.pnpm build: Build all projects.pnpm format: Format all projects.pnpm format:check: Verify formatting for all projects.npx nx graph: Visualize the project dependency graph.
