How vvl1m/simple works
Purpose and Runtime
Simple is an archived Nuxt 3 full-stack messenger. It provides authenticated real-time text chat, public/private channels, presence, user profiles, and photo sharing. Supabase supplies Auth, database access, Realtime/Presence, and Storage; Nuxt runs the application and any server-side layer. Primary setup is in nuxt.config.ts, with Supabase credentials expected through environment variables.
Application Entry and Shell
Nuxt mounts the application through app.vue; route-level failures are handled by error.vue. Global visual styling is centralized in assets/scss/main.scss. The main user-facing routes are:
• pages/index.vue — primary messenger surface.
• pages/login.vue — authentication entry.
• pages/reset-password.vue — password recovery flow.
Supabase Integration Boundary
plugins/aneks.js is the central client-side integration point implied by the plugin layout, likely exposing shared application/backend functionality to pages and components. Supabase is the authoritative external boundary for identity, persisted chat/channel/user data, real-time subscriptions and presence, and uploaded media. The frontend should not treat local UI state as authoritative after remote updates.
Authentication and User Identity
Authentication UI is represented by components/Auth.vue, with components/AuthOld.vue retained as an older implementation. User display and profile management are separated into:
• components/UserCard.vue — user identity presentation.
• components/modals/User.vue — user details.
• components/modals/UserEdit.vue — profile editing.
The login/reset routes initiate identity flows; authenticated user state then drives access to channels, messaging, presence, and profile-specific UI.
Messaging and Channel Workspace
The primary workspace is assembled from navigation and interaction components:
• components/SideMenu.vue — likely channel/workspace navigation.
• components/Menu.vue — main menu controls.
• components/ContextMenu.vue — item/channel/message actions.
• components/modals/CreateChannel.vue — channel creation.
• components/modals/ViewChannel.vue — channel inspection or membership/settings.
The expected control flow is route shell → authenticated workspace → selected channel → Supabase-backed message and presence streams. Channel visibility and membership rules are ultimately enforced by Supabase-side data/security configuration, not visible in this tree.
Media and UI Interaction Boundaries
Media attachment is handled through modal UI and Supabase Storage:
• components/modals/Attachs.vue — attachment selection/handling.
• components/modals/Picture.vue — image display or image-specific interaction.
• pages/dev/image-attach.vue and pages/dev/imageCrop.vue — isolated development surfaces for image workflows.
Uploads cross from browser UI to Supabase Storage; resulting file references are expected to be associated with chat data in Supabase.
Shared Feedback and Server Surface
Reusable transient UI is split into:
• components/Dialog.vue — confirmation/error dialogs.
• components/Loading.vue — asynchronous-state feedback.
• composables/useNotifications.js — shared notification state/dispatch.
server/tsconfig.json indicates Nuxt server code is TypeScript-configured, although no server handlers are present in the supplied tree. The production runtime is Nuxt’s generated .output deployment, with Supabase remaining the required managed backend dependency.
Main entry points: index.vue Messenger route · app.vue Application shell · aneks.js Shared backend client · login.vue Login and recovery
Components 18
Nuxt application
- Nuxt configuration · Configures the application and Supabase environment integration.
nuxt.config.ts - Application shell
app.vue - Route error UI
error.vue - Global styles
assets/scss/main.scss - Login and recovery · Authentication entry and password recovery flows.
pages/login.vue - Shared backend client · Central client-side integration boundary for shared backend access.
plugins/aneks.js - Authentication UI
components/Auth.vue - Nuxt server runtime · TypeScript-configured server surface; deployed as generated Nuxt output.
server/tsconfig.json
Messenger workspace
- Messenger route · Primary authenticated chat surface.
pages/index.vue - Channel navigation · Navigation and controls for the selected workspace.
components/SideMenu.vue - Channel management · Creates and inspects channels.
components/modals/CreateChannel.vue - Profile UI · Displays and edits user identity details.
components/UserCard.vue
Media and feedback
- Attachment UI · Selects attachments and displays pictures.
components/modals/Attachs.vue - Notification state · Shared transient notification dispatch and state.
composables/useNotifications.js
Supabase managed backend
- Identity
- Chat data · Authoritative users, channels, memberships, and messages.
- Realtime and presence
- Media storage
Connections 20
- Nuxt configuration → Application shell: configures
- Application shell → Messenger route: mounts route
- Application shell → Login and recovery: mounts route
- Application shell → Route error UI: handles failures
- Global styles → Application shell: styles
- Login and recovery → Authentication UI: uses
- Authentication UI → Shared backend client: auth requests
- Messenger route → Channel navigation: assembles
- Messenger route → Profile UI: shows identity
- Channel navigation → Channel management: manages channels
- Messenger route → Attachment UI: opens
- Messenger route → Shared backend client: uses backend client
- Shared backend client → Identity: authenticates
- Shared backend client → Chat data: reads and writes
- Shared backend client → Realtime and presence: subscribes
- Attachment UI → Media storage: uploads media
- Media storage → Chat data: file references
- Realtime and presence → Messenger route: remote updates
- Notification state → Messenger route: feedback
- Nuxt server runtime → Chat data: managed backend dependency