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
-
Environment Setup: Create
.envfiles inapps/apiandapps/web(see their respective READMEs for details).
Start the development servers:
# Start the API
npx nx serve api
# Start the Web App
npx nx dev webPopulate the database with initial static data (Legends, etc.):
npm run seed:legendsnpm run seed:api: Run general API seeder.npm run seed:legends: Seed static Legend data from the Brawlhalla API.npx nx graph: Visualize the project dependency graph.