A Discord bot and companion website for the VzBot 3D printer community. Manages serial number assignments, printer profiles, community statistics, and blog content.
- Serial Number Management - Apply for, review, and assign serial numbers through Discord with auto-generated STL badge files
- Printer Profiles - Catalog of VzBot printer variants with media and specifications
- Community Map - Interactive 3D globe showing VzBot builds worldwide
- Blog System - Community posts and announcements
- Analytics - Registration trends and printer distribution stats
| Component | Technology |
|---|---|
| Backend | Kotlin, Ktor, Exposed ORM |
| Frontend | Nuxt 4, Vue 3, Tailwind CSS |
| Database | MariaDB 11.5 |
| Discord | JDA 5, KtBot |
| Deployment | Docker, GitHub Container Registry |
backend/ Kotlin/Ktor Discord bot and REST API
frontend/ Nuxt 4 website
- Docker & Docker Compose
- (For local dev) Java 21, Bun
-
Copy the environment template and fill in your values:
cp .env.template .env
-
Configure required environment variables in
.env:VZ_TOKEN- Discord bot tokenVZ_ADMIN_ROLE/VZ_TEAM_ROLE- Discord role IDsVZ_SERIAL_CATEGORY- Discord category for serial ticket channelsVZ_SERIAL_ANNOUNCEMENT_CHANNEL- Channel for serial announcementsVZ_SERIAL_BASE_PLATE_HOST_PATH/VZ_SERIAL_NUMBER_PLATES_HOST_PATH- Host paths to STL filesBACKEND_TOKEN- Shared token for frontend-to-backend auth
-
Start the stack:
docker compose up -d
The frontend will be available on port 3000. The backend API runs on port 8080 (internal only by default).
Backend:
cd backend
./gradlew runFrontend:
cd frontend
bun install
bun run dev