A modern full-stack Discord bot application built with TypeScript, featuring a robust backend API and a sleek React frontend.
This project is organized as a monorepo with the following structure:
WingTechBot-MK3/
├── packages/
│ ├── backend/ # Express.js API & Discord Bot
│ └── frontend/ # React Web Application
├── package.json # Root workspace configuration
└── README.md # This file
- Express.js - Web framework
- TypeScript - Type safety
- Discord.js - Discord bot functionality
- Kysely - Type-safe SQL query builder
- Vitest - Testing framework
- Hexagonal Architecture - Clean code organization
- React 19 - UI library
- Vite - Build tool and dev server
- TypeScript - Type safety
- Tailwind CSS - Utility-first styling
- Zustand - State management
- TanStack Query - Data fetching and caching
- Node.js >= 18.0.0
- pnpm (install with
npm install -g pnpm)
# Clone the repository
git clone https://github.com/ellman12/WingTechBot-MK3.git
cd WingTechBot-MK3
# Install dependencies for all packages
pnpm installpnpm dev:all# Backend only (Discord bot + API)
pnpm dev
# Frontend only (React app)
pnpm dev:frontendpnpm db:generate
# Run database migrations
pnpm db:migrate# Build all packages
pnpm build
# Build specific packages
pnpm build:backend
pnpm build:frontend
pnpm build:types# Run linting on all packages
pnpm lint
# Auto-fix linting issues
pnpm lint:fix
# Format code
pnpm format
# Check formatting
pnpm format:check# Run tests for all packages
pnpm test
# Run tests for specific packages
pnpm test:backend
pnpm test:frontendThe backend serves as both a Discord bot and a REST API. It follows hexagonal architecture principles with clear separation of concerns.
Structure:
packages/backend/src/
├── adapters/ # External adapters (Discord, DB, etc.)
├── application/ # Use cases and application logic
├── core/ # Domain models and business logic
├── infrastructure/ # Framework and external concerns
A modern React application with state-of-the-art tooling for building user interfaces.
Structure:
packages/frontend/src/
├── components/ # Reusable UI components
├── hooks/ # Custom React hooks
├── stores/ # Zustand state stores
└── App.tsx # Main application component
The backend includes Docker support for easy deployment:
# Build Docker image (from backend directory)
cd packages/backend
pnpm docker:build
# Run Docker container
pnpm docker:run- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.