How thefunnyday/doubleyou works
Purpose and runtime
DoubleYou is an archived Nuxt 3 microblogging application: authenticated users publish short posts with images and interact through a social feed. It runs as a Nuxt client/server application locally or in production, with Supabase providing the database, authentication, and likely realtime/storage-backed features. Global styling is SCSS.
Key entry points: app.vue, nuxt.config.ts, and pages/index.vue.
Application shell and shared UI
app.vue establishes the Nuxt application shell. Shared layout-level UI is split into reusable header, navigation, loading, modal, and image-viewing components:
• components/Header.vue
• components/Menu/left.vue
• components/Menu/right.vue
• components/Loading.vue
• components/ModalPopup.vue
• components/ViewImage.vue
Responsive navigation has a dedicated mobile variant at components/Menu/mobile.vue.
Route-driven feature surfaces
Nuxt file routes define the primary product surfaces:
• Main feed: pages/index.vue
• Individual post view: pages/post/[postId].vue
• Public profile view: pages/user/[userNickname].vue
• Authentication: pages/login.vue
• Account preferences and user-list views: pages/settings.vue, pages/userlists.vue
• Informational and monetization pages: pages/about.vue, pages/premium.vue
Dynamic route parameters form the boundary between browser navigation and resource-specific post/profile retrieval.
Authentication boundary
Supabase Auth is the identity provider. middleware/auth.ts is the route-access control point, protecting pages that require a session and redirecting unauthenticated users as appropriate. The auth UI is isolated in components/Auth/Page.vue, while pages/login.vue exposes it as a route-level entry point.
Control flow is: route navigation → auth middleware/session check → page rendering → Supabase-authenticated data operations.
Social content flow
The feed and post-detail routes are the core content pipeline. Users create/read microblog posts from the feed, navigate to records by postId, and access authors by nickname. README-declared likes, comments, image attachments, and realtime feed behavior are UI/data concerns centered on:
• pages/index.vue
• pages/post/[postId].vue
• pages/user/[userNickname].vue
• components/ViewImage.vue
Supabase is the external persistence and realtime boundary; browser UI should not own authoritative post, interaction, or identity state.
Administrative and secondary flows
An administrative surface exists at pages/admin/index.vue, separate from normal user routes and likely requiring stronger authorization than baseline authentication. Additional standalone pages include pages/test.vue and pages/about.vue; they are not core feed-path entry points.
Client presentation and assets
Global visual rules live in assets/styles/global.scss. Client-only theme behavior is initialized through plugins/theme.client.js, making theme state/browser APIs explicitly client-bound. Static media is served from public, notably public/about-video.mp4 and premium assets under public/premium.
Main entry points: app.vue Nuxt application · index.vue Main feed · auth.ts Route auth guard · mobile.vue Responsive navigation
Components 15
App shell
- Nuxt application · Client/server application runtime.
app.vue - Shared UI · Header, loading, modal, and image-viewing UI.
components/Header.vue - Responsive navigation · Desktop and mobile menu variants.
components/Menu/mobile.vue - Client theme · Browser-only theme initialization.
plugins/theme.client.js - Global styles
assets/styles/global.scss
Product routes
- Main feed · Core post creation and feed interaction surface.
pages/index.vue - Post detail · Retrieves a post by postId.
pages/post/[postId].vue - Public profile · Retrieves an author by nickname.
pages/user/[userNickname].vue - Account surfaces · Settings and user-list views.
pages/settings.vue - Administration · Separate administrative surface.
pages/admin/index.vue
Authentication
- Login route
pages/login.vue - Auth UI · Authentication form and flow UI.
components/Auth/Page.vue - Route auth guard · Checks sessions and redirects unauthenticated users.
middleware/auth.ts
Platform services
- Supabase · Authoritative auth, persistence, realtime, and storage boundary.
- Static media · About video and premium media.
public/about-video.mp4
Connections 20
- Nuxt application → Shared UI: renders
- Nuxt application → Responsive navigation: renders
- Nuxt application → Client theme: initializes
- Nuxt application → Global styles: applies
- Nuxt application → Main feed: routes to
- Responsive navigation → Main feed: navigates to
- Main feed → Post detail: opens postId
- Main feed → Public profile: opens author
- Main feed → Shared UI: uses image viewer
- Main feed → Supabase: reads and publishes content
- Post detail → Supabase: retrieves post and interactions
- Public profile → Supabase: retrieves profile content
- Account surfaces → Supabase: manages account data
- Login route → Auth UI: hosts
- Auth UI → Supabase: authenticates with
- Route auth guard → Supabase: checks session
- Route auth guard → Account surfaces: protects
- Route auth guard → Administration: gates access
- Administration → Supabase: performs admin operations
- Nuxt application → Static media: serves