Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

FuelCommunication/frontend

Open more actions menu

Repository files navigation

Frontend

SPA/SSR client for FuelCommunication, built on Nuxt 4. Covers authentication (email + OAuth Google/GitHub), channels ( CRUD, search, subscriptions), WebSocket chat with typing indicators and history, and WebRTC mesh-topology video calls.

Stack

Nuxt 4 + Vue 3 (Composition API, <script setup>) with strict TypeScript.

Layer Choice
UI kit @nuxt/ui v4
Icons @iconify-json/lucide, @iconify-json/simple-icons
State pinia + pinia-plugin-persistedstate
Validation zod (reactive schemas — re-evaluated on locale change)
i18n @nuxtjs/i18n (prefix_except_default strategy, detectBrowserLanguage with cookie)
SEO @nuxtjs/seo (sitemap, robots, OG, schema.org)
Fonts @nuxt/fonts
Images @nuxt/image
Lint @nuxt/eslint (flat config)

Features

  • Auth: login, register, OAuth (Google, GitHub), JWT + refresh with automatic rotation in useApi. Bearer tokens kept in memory, refresh tracked via expires_at.
  • Channels: create / update / delete with avatars (uploaded via /images), Meilisearch-backed search, subscription listing, ownership transfer, reactive sidebar.
  • Chat: WebSocket with auto-reconnect and heartbeat (useWs), TTL-based typing indicator, history via WS history event, edit / delete messages, handling of channel_deleted and kicked events.
  • Video calls: WebRTC mesh topology, signaling over WebSocket to service-calls, getUserMedia + dynamic video grid (1 / 2 / 4 / 9 tiles), mute / camera toggle, peer reconnect.
  • i18n: 2 locales (en / ru) with reactive SEO meta and validation messages.
  • Theming: light / dark via useColorMode plus a locale switcher in settings.

Run

npm i           # or npm i / pnpm i
npm run dev     # http://localhost:3000

npm run build   # production build (Nitro)
npm run lint    # eslint --fix

Requires the backend to be running — see ../devops/README.md. URLs can be overridden via NUXT_PUBLIC_API_URL and NUXT_PUBLIC_WS_URL.

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.