A modern Telegram mini app built with Nuxt 3, Pinia, PrimeVue, and full i18n support.
love-app/
├── app/ # Main application directory
│ ├── assets/ # Static assets (styles, icons, images, localization)
│ ├── components/ # Vue components (grouped by feature)
│ ├── composables/ # Custom composables (hooks)
│ ├── config/ # App configuration files
│ ├── helpers/ # Helper functions and utilities
│ ├── layouts/ # Global page layouts
│ ├── legacy/ # Legacy/archived code (if any)
│ ├── middleware/ # Nuxt middleware
│ ├── pages/ # Application pages (Nuxt routing)
│ ├── plugins/ # Nuxt plugins
│ ├── stores/ # Pinia stores (global state)
│ ├── types/ # TypeScript types
│ ├── utils/ # Utilities and API wrappers
│ ├── app.config.ts # App config
│ ├── app.vue # Root Vue component
│ └── error.vue # Global error page
├── public/ # Public files (favicon, etc.)
├── nuxt.config.ts # Nuxt global config
├── package.json # Dependencies and scripts
├── tsconfig.json
├── README.md
-
Install dependencies:
pnpm install # or npm install / yarn install / bun install -
Create environment files:
.env.developmentand.env.productionin the project root:NUXT_PUBLIC_API_URL=https://api.example.com
- Do not commit these files to version control!
-
Run the development server:
pnpm run dev # or npm run dev / yarn dev / bun run dev -
Build for production:
pnpm run build pnpm run start
- assets/ — Styles, images, icons, and localization files (i18n).
- components/ — Reusable Vue components, organized by feature (e.g., loader, location, progress).
- composables/ — Custom hooks (e.g., useApi, useDebounce, usePolling, useLanguage).
- config/ — App and connection configuration files.
- helpers/ — Utility functions (e.g., date helpers, stats helpers).
- layouts/ — Page layouts (default, unauthorized, etc.).
- legacy/ — Deprecated or archived code.
- middleware/ — Global and route middleware.
- pages/ — Application pages (auto-routed by Nuxt).
- plugins/ — Plugins for app initialization, i18n, input handling, etc.
- stores/ — Pinia stores for global state (e.g., pair, tgWebApp, token).
- types/ — TypeScript types for app data.
- utils/ — API wrappers and general utilities (auth, calendar, pair, etc.).
- Localization files:
app/assets/i18n/en.json,ru.json - Config:
app/assets/i18n/i18n.config.ts - Uses
@nuxtjs/i18nwith automatic browser language detection.
- Nuxt 3 — Modern Vue 3 framework (SPA/SSR)
- Pinia — State management
- PrimeVue — UI components
- @nuxt/ui — UI utilities and themes
- @nuxtjs/i18n — Internationalization
- TypeScript — Type safety
dev— Start development serverbuild— Build for productionstart— Start production serverlint— Run linter
Create .env.development and .env.production in the project root:
NUXT_PUBLIC_API_URL=https://api.example.comAdd other variables as needed for your deployment.
We welcome contributions to improve Love App!
- Reporting Bugs: Open a detailed issue on GitHub (steps to reproduce, expected/actual behavior, screenshots if possible).
- Feature Suggestions: Open an issue with the "enhancement" tag and a clear description/use case.
- Code Contributions:
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Follow coding standards and use clear commit messages (conventional commits)
- Submit a Pull Request to the
developmentbranch
For questions and discussions, join our Telegram channel.