83 lines
2.5 KiB
Markdown
83 lines
2.5 KiB
Markdown
# 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/vite` plugin)
|
|
- **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 `.nvmrc` for a version) / NVM
|
|
- pnpm
|
|
|
|
### Setup
|
|
|
|
```bash
|
|
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.
|