Bahasa Indonesia | English
Lexicon Timebomb adalah game sambung kata multiplayer real-time. Dua pemain bersaing untuk menyusun kata yang dimulai dari huruf terakhir kata sebelumnya. Jika waktu habis, pemain kalah!
- Multiplayer Real-Time — Dua pemain bermain bersamaan via WebSocket
- Validasi KBBI — Setiap kata divalidasi dengan Kamus Besar Bahasa Indonesia
- Timer Bom — Countdown 15 detik dengan efek visual dinamis
- Sistem Skor — Skor real-time untuk setiap kata valid
- Efek Suara — Procedural sound via Web Audio API (tanpa file eksternal)
- Responsif — Optimal di desktop dan mobile
- Hono — Framework web modern dan cepat
- Socket.IO — Komunikasi real-time
- TypeScript — Type safety
- Bun — JavaScript runtime
- React — Library UI
- Vite — Build tool
- TypeScript — Type safety
- Tailwind CSS — Utility-first styling
- shadcn/ui — Komponen UI siap pakai
- Zustand — State management
- Node.js v18+ atau Bun
- npm atau bun
# Clone repository
git clone <repository-url>
cd root
# Install dependencies backend
cd backend && bun install # atau: npm install
cd ../frontend && npm install # atau: bun installSalin .env.example ke .env di masing-masing direktori:
# Backend
cp backend/.env.example backend/.env
# Frontend
cp frontend/.env.example frontend/.envSesuaikan nilai variabel di backend/.env dan frontend/.env jika diperlukan.
cd backend
bun run index.ts / bun run devBackend berjalan di http://localhost:3001
cd frontend
npm run dev / bun run devFrontend berjalan di http://localhost:5173
- Buat Room — Klik "Host", masukkan nama, dapatkan kode room
- Bagikan Kode — Sebarkan kode room ke teman
- Gabung Room — Teman masukkan kode dan nama untuk bergabung
- Mulai Game — Host memulai jika sudah ada 2 pemain
- Sambung Kata — Pemain bergantian menulis kata berawalan huruf terakhir kata sebelumnya
- Batas Waktu — Setiap giliran terbatas 15 detik
- Game Over — Pemain yang tidak bisa menjawab dalam waktu yang ditentukan kalah
- Kata minimal 3 karakter
- Kata harus valid menurut KBBI
- Kata tidak boleh dipakai dua kali
- Kata harus diawali dengan huruf terakhir kata sebelumnya
root/
├── backend/ # Server backend
│ ├── src/
│ │ ├── socket/ # Socket.IO handlers
│ │ ├── game/ # Game logic & timer
│ │ ├── routes/ # API routes
│ │ ├── dictionary/ # Validasi KBBI
│ │ └── data/ # Daftar kata KBBI
│ └── package.json
├── frontend/ # Client frontend
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── hooks/ # Custom hooks
│ │ ├── stores/ # Zustand stores
│ │ └── lib/ # Utilities
│ └── package.json
├── docs/ # Dokumentasi
└── README.md # File ini
GET /api/health
GET /api/room/:code
GET /api/dictionary/check/:word
CREATE_ROOM— Buat room baruJOIN_ROOM— Gabung roomSTART_GAME— Mulai gameSUBMIT_WORD— Kirim kata
ROOM_CREATED— Room berhasil dibuatPLAYER_JOINED— Pemain baru bergabungTURN_START— Giliran dimulaiWORD_VALID— Kata validWORD_INVALID— Kata tidak validTIMER_SYNC— Sinkronisasi timerGAME_OVER— Game selesai
cd backend
railway init
railway upcd frontend
vercelPull request diterima untuk perbaikan dan peningkatan.
Proyek ini dibuat untuk tugas UAS Web Programming.