Background
SoundVent Social Network

SoundVent Social Network

Co-Founder & Lead Engineer

Social Network
Music
SaaS
Next.js
Supabase
Real-time
Feed Engine
Next.js
React
Supabase
PostgreSQL
TypeScript
TailwindCSS
Zustand
Row-Level Security

The social networking system inside SoundVent is the connective tissue of the platform — a full-featured social graph that ties together artists, fans, labels, venues, and industry professionals. Instead of bolting on comments and likes as isolated features, I designed a unified system that powers feeds, profile walls, clips, and conversations from the same underlying model.

Overview

SoundVent's social layer is built to feel familiar to anyone who's used modern social apps, but tuned specifically for music culture. Users can: • Follow artists, fans, labels, venues, and other entities • Publish posts with rich media (images, video, links, clips) • Comment, reply, and hold threaded conversations • Like content at both post and comment levels • Reshare content into their own feed or profile wall The same primitives drive multiple surfaces across the app: • Dashboard activity feeds • Public profile walls for artists, entities, and users • Discovery and "What's happening" style views • Social overlays around blogs, news, and marketplace content Every follow, post, comment, and like feeds into a shared social graph that powers both the user experience and creator analytics — so the system isn't just "social noise," it's structured, queryable data.

Architecture

Under the hood, the social system is a set of composable, entity-aware services built on top of Supabase. The goal was to keep the model simple, consistent, and reusable anywhere in the app without sacrificing security or clarity. Key architectural elements: • Unified Social Graph Follows, posts, comments, likes, and shares are all modeled in a shared graph. Any feature — from a dashboard widget to a full profile wall — can answer "who is connected to whom" and "who is engaging with what" using the same relationships and queries. • Entity-Aware Identity Every social record stores both user_id (who performed the action) and entity_id (who they were acting as: band, venue, label, etc.). This lets users post "as themselves" or "as their project" while keeping attribution and permissions clean and auditable. • Feed Engine A dedicated feed layer merges social posts with industry content, applies follow- and context-aware ranking, and exposes a paginated API via shared hooks. It supports multiple modes (global, following-only, profile-specific) without duplicating logic. • Engagement Pipeline Likes, comments, replies, and shares all flow through structured endpoints that enforce idempotency, prevent double-actions, and emit notifications/analytics events. Engagement counts are derived from the data, not manually patched in the UI. • Short-Form Clips Layer Time-bound, snackable content (clips, micro-posts, promos) sits on top of the same social model, reusing identity, follow, and analytics patterns while optimizing for fast browsing and lightweight interaction. All of this lives behind strict row-level security policies in Supabase, so even as the graph grows more complex, access control stays predictable and enforceable at the database level rather than scattered throughout the codebase.

UI/UX

The social UI is designed to feel like something you already know how to use — but tuned for how musicians and fans actually behave online. The goal was to surface connection and conversation in context, not force people into a separate "social" mode. Some UX highlights: • Dashboard Activity Feed A personalized stream that blends posts from followed accounts with curated industry content, using infinite scroll and lightweight filters to keep discovery fast and frictionless. • Profile Walls Public timelines for artists, entities, and users that act as each profile's social home base — posts, shares, and engagement all in one place, aligned with SoundVent's visual system. • Inline Composer A post composer that supports mentions, rich media, visibility controls, and entity context — embedded directly into the places where users are already working and browsing, so posting doesn't feel like a chore. • Threaded Comments & Reactions Conversations stay readable with clear hierarchy, subtle moderation cues, and responsive interactions on posts and replies. Reactions update quickly, with optimistic UI and smooth feedback. • Social Overlays & Mini-Feeds Hover states, dialogs, and compact feeds let users explore networks and activity without losing their place. You can peek into a profile's social footprint without leaving your current workflow. The visual language is consistent with the rest of SoundVent: dark, minimal, music-first, and focused on letting content and relationships take center stage.

Challenges & Solutions

1. Supporting both people and entities in one network SoundVent isn't just individual users — people act as bands, venues, labels, studios, and more. Mixing those in a single network can quickly create messy attribution and security issues if you're not careful. Solution: Every social object stores both the user_id and the optional entity_id. Query helpers and hooks are entity-aware, so feeds, profile walls, notifications, and analytics always respect the current context while preserving a clear accountability trail. 2. Balancing global discovery with follower relevance The feed needed to feel alive and global, but still prioritize the artists, scenes, and entities a user actually cares about. Solution: The feed engine supports multiple modes (global, following-only, profile-specific) and blends follow relationships, recency, engagement, and content type into a simple scoring model. The result is predictable, tweakable ranking that doesn't feel like a black box. 3. Handling rich media and cross-surface sharing Posts can include images, video, and links to blogs, news, or marketplace items — and they need to render correctly across dashboards, discovery tabs, and detail views without forking the UI for each surface. Solution: Media is normalized into a shared mapping layer, and posts can reference foreign resources (blogs, news, products) via explicit keys. Reusable components understand these relationships and adjust layouts automatically based on the attached content. 4. Keeping engagement state accurate and responsive Rapid interactions (likes, unlikes, multiple comments) can easily cause out-of-sync counts or duplicate records if the system isn't carefully designed. Solution: Engagement endpoints are idempotent and entity-aware, checking for existing records before inserting new ones. The UI uses optimistic updates with server reconciliation, and shared hooks centralize the logic so every interaction behaves the same way. 5. Preserving performance with heavy feeds Social feeds can grow large and media-heavy over time. They also appear in multiple layout sizes (full page, dashboard widget, overlays), where poor performance would be immediately obvious. Solution: Infinite scroll, intersection observers, memoized selectors, and skeleton states keep the experience feeling fast. Expensive work (analytics, deeper personalization) is batched or deferred so reading and posting never feel blocked.

Impact

This social networking system is what turns SoundVent from "a collection of features" into a living community. It connects profiles, discovery, content, and analytics into a single, coherent experience where artists and fans don't just consume — they interact, react, and build relationships. On the engineering side, it established a reusable pattern for entity-aware, engagement-driven features: clear identity modeling, strongly typed hooks and components, and tightly constrained APIs that are safe to reuse in new surfaces without rewriting core logic. For users, the result feels music-native: expressive, conversational, and deeply woven into everything else they do on the platform — from discovering new artists to following labels to sharing clips with their scene.