2.5 KiB
2.5 KiB
Honey Frontend
Telegram mini-app game frontend with a bee/honey theme. Built as a single-page application targeting mobile-first layout.
Tech Stack
- React 19 + TypeScript 5.9 (strict mode)
- Vite 7 with SWC (
@vitejs/plugin-react-swc) - TanStack Router (file-based routing, auto code-splitting) + React Query
- Tailwind CSS v4 (
@tailwindcss/viteplugin) - i18next + react-i18next (EN, RU — loaded via HTTP backend from
public/locales/) - axios for HTTP requests
- arktype for runtime validation
- motion (Framer Motion) for animations
- oxlint / oxfmt for linting and formatting
- pnpm package manager
Getting Started
Prerequisites
- Node.js (see
.nvmrcfor a version) / NVM - pnpm
Setup
nvm use
pnpm install
cp .env.example .env # fill in required variables
pnpm dev
Environment Variables
| Variable | Description |
|---|---|
VITE_APP_NAME |
Application name |
VITE_APP_URL |
Application URL |
VITE_API_BASE_URL |
Backend API base URL |
Scripts
| Command | Description |
|---|---|
pnpm dev |
Start dev server |
pnpm build |
Typecheck + production build |
pnpm build:staging |
Typecheck + staging build |
pnpm lint |
Run oxlint |
pnpm lint:fix |
Run oxlint with auto-fix |
pnpm fmt |
Format code with oxfmt |
pnpm fmt:check |
Check formatting without writing |
Project Structure
src/
api/ — Axios instance and API utilities
components/
atoms/ — Generic reusable components
form/ — Components for user inputs
icons/ — SVG icon components
modals/ — Application modals with shared interface
surface/ — Themed containers
i18n/ — i18n runtime setup
routes/ — TanStack file-based routes
styles/ — Global CSS, fonts
main.tsx — App entry point
public/
locales/ — Translation JSON files
plugins/ — Custom Vite plugins
dynamic-json.ts — JSON templating with env var interpolation
Path Aliases
@/*→src/*@components/*→src/components/*
Pre-commit Hooks
Husky + lint-staged run oxfmt and oxlint on staged files before each commit.