SOMEWHERE

the app for components

theunpartysomewhere

Location: unparty-app/theunpartysomewhere
Status: Active Development
Primary Purpose: Public-facing web application and content management platform for the UNPARTY ecosystem


Overview

theunpartysomewhere is UNPARTY's flagship web platform - a dynamic blogging and content management system that evolves as content is created. Built on RedwoodJS, it serves as the primary public-facing interface for the UNPARTY ecosystem, enabling creators to share stories, build community, and manage their digital presence.

The platform embodies the UNPARTY philosophy: empowering creators through ownership, privacy, and cost-sensitivity while providing a seamless path from discovery (ABOUT) to creation (BUILD) to sharing (CONNECT).


Tech Stack

  • Framework: RedwoodJS 7.7.3 (Full-stack React + GraphQL + Prisma)
  • Frontend: React 18 with TypeScript
  • Backend: Node.js with GraphQL API
  • Database: PostgreSQL via Prisma ORM
  • Authentication: Clerk
  • Deployment: Vercel
  • Styling: Tailwind CSS 3.4
  • Rich Content: MDX support with React Quill
  • UI Components: Headless UI, Heroicons
  • State Management: Redux Toolkit
  • Animations: Framer Motion
  • Testing: Jest

Key Features

Content Management

  • Blog System: Full-featured blogging with posts, comments, and rich text editing
  • MDX Support: Write content in Markdown with embedded React components
  • Article Management: Create, edit, and publish articles with visual editor
  • Stories Platform: Curated content and narrative experiences

Brand Customization

  • Dynamic Brand System: Customize brand name, fonts, colors, and icons
  • Landing Page Builder: Create personalized landing pages with custom styling
  • About Page Management: Configurable about sections with priorities and descriptions
  • Theme System: Custom color schemes for card backgrounds, icons, and text

User Experience

  • Authentication: Secure user login/signup via Clerk integration
  • Role-Based Access: Admin vs. public routes with granular permissions
  • Contact Forms: Direct communication channel with site visitors
  • Responsive Design: Mobile-first responsive layouts

Developer Experience

  • GraphQL API: Type-safe API with auto-generated types
  • Hot Reload: Instant feedback during development
  • Database Migrations: Managed schema evolution with Prisma
  • Code Generation: Automatic scaffolding for models and CRUD operations

Architecture

Code

RedwoodJS Full-Stack Application
├── Web Side (React + TypeScript)
│   ├── Pages (33+ routes)
│   │   ├── Public Routes
│   │   │   ├── HomePage (Landing)
│   │   │   ├── BlogPage (Content)
│   │   │   ├── AboutPage (Info)
│   │   │   ├── ArticlePage (Dynamic content)
│   │   │   ├── StoriesPage (Curated content)
│   │   │   └── MarketplacePage (Coming soon)
│   │   ├── Auth Routes
│   │   │   ├── LoginPage
│   │   │   ├── SignupPage
│   │   │   └── Password Reset
│   │   └── Admin Routes (Protected)
│   │       ├── AdminBuildPage (Build tools)
│   │       ├── AdminAboutPage (Content management)
│   │       ├── BrandPage (Customization)
│   │       └── Post Management (CRUD)
│   ├── Layouts
│   │   ├── UniversalLayout (Main wrapper)
│   │   ├── BlogLayout (Blog-specific)
│   │   ├── StoriesLayout (Stories-specific)
│   │   └── BuildLayout (Admin-specific)
│   ├── Components (100+ reusable components)
│   └── Styling (Tailwind + Custom CSS)
│
├── API Side (GraphQL + Services)
│   ├── GraphQL Schema
│   ├── Services (Business Logic)
│   │   ├── posts (Blog management)
│   │   ├── comments (Discussion)
│   │   ├── users (Authentication)
│   │   ├── contacts (Communication)
│   │   ├── abouts (Page content)
│   │   ├── brandNames (Branding)
│   │   ├── brandDescriptions (Copy)
│   │   ├── brandIcons (Visual identity)
│   │   ├── colors (Theme management)
│   │   ├── landingPages (Marketing)
│   │   └── mdx (Rich content)
│   └── Functions (Serverless endpoints)
│
└── Database (PostgreSQL via Prisma)
    ├── Models
    │   ├── Post (Blog content)
    │   ├── Comment (Discussions)
    │   ├── User (Authentication)
    │   ├── Contact (Messages)
    │   ├── About (About sections)
    │   ├── BrandName (Brand identity)
    │   ├── BrandDescription (Brand copy)
    │   ├── BrandIcon (Visual elements)
    │   ├── Color (Theme colors)
    │   └── LandingPage (Marketing pages)
    └── Migrations (Version-controlled schema)

Data Flow

Code

User Request
    ↓
Web Router (RedwoodJS)
    ↓
Page Component (React)
    ↓
GraphQL Query/Mutation (Apollo Client)
    ↓
GraphQL API (RedwoodJS)
    ↓
Service Layer (Business Logic)
    ↓
Prisma ORM
    ↓
PostgreSQL Database

Integration Points

External Services

  • Clerk: User authentication and management
  • Vercel: Hosting and deployment platform
  • PostgreSQL: Database (hosted separately or via Vercel Postgres)
  • Vercel Analytics: Usage and performance tracking

Internal Ecosystem

  • theunpartyrunway: Cost tracking and development metrics
  • theunpartycrawler: Content analytics and intelligence
  • theunpartyunppp: Future cross-platform content synchronization

Business Value

ABOUT → Understanding

  • Marketing Pages: Clear communication of UNPARTY's mission and values
  • Stories Platform: Curated narratives that explain the creator's journey
  • Blog System: Educational content and thought leadership
  • About Management: Dynamic "about" sections that evolve with the creator

BUILD → Creation

  • Admin Panel: Intuitive content management interface
  • Brand Customization: Tools to express unique identity
  • MDX Support: Technical creators can embed interactive components
  • Landing Page Builder: Create custom entry points for different audiences

CONNECT → Sharing

  • Public Blog: Share insights and connect with readers
  • Comment System: Foster community discussions
  • Contact Forms: Direct communication channel
  • Social Integration: (Coming soon) Share across platforms

Getting Started

Prerequisites

  • Node.js 20.x
  • PostgreSQL database
  • Yarn package manager
  • Clerk account (for authentication)

Installation

bash

# Clone the repository
git clone https://github.com/unparty-app/theunpartysomewhere.git
cd theunpartysomewhere

# Install dependencies
yarn install

# Set up environment variables
cp .env.example .env
# Edit .env with your DATABASE_URL and CLERK_PUBLISHABLE_KEY

# Run database migrations
yarn rw prisma migrate dev

# Start development server
yarn rw dev

The application will be available at:

Development Commands

bash

# Start dev server
yarn rw dev

# Run tests
yarn rw test

# Generate types
yarn rw generate types

# Create new pages/components
yarn rw generate page PageName
yarn rw generate component ComponentName

# Database operations
yarn rw prisma studio     # Visual database editor
yarn rw prisma migrate dev # Create migration
yarn rw prisma db push     # Quick schema sync (prototyping)

# Build for production
yarn rw build

# Deploy to Vercel
yarn rw deploy

Project Structure

Code

theunpartysomewhere/
├── api/                    # Backend (API, services, database)
│   ├── db/
│   │   ├── schema.prisma   # Database schema
│   │   └── migrations/     # Version-controlled schema changes
│   └── src/
│       ├── functions/      # Serverless functions
│       ├── graphql/        # GraphQL schema definitions
│       ├── lib/            # Shared utilities
│       └── services/       # Business logic layer
│
├── web/                    # Frontend (React app)
│   ├── public/             # Static assets
│   └── src/
│       ├── components/     # Reusable UI components
│       ├── layouts/        # Page layout wrappers
│       ├── pages/          # Route-based pages
│       ├── writing/        # Content files
│       ├── Routes.tsx      # Application routing
│       └── App.tsx         # Root component
│
├── scripts/                # Build and deployment scripts
├── .redwood/              # RedwoodJS configuration
└── README.md              # This file

Database Schema

The application uses PostgreSQL with the following core models:

ModelPurposeKey Fields
PostBlog poststitle, body, comments, createdAt
CommentPost commentsname, body, postId
UserAuthenticationemail, hashedPassword, roles, status
ContactContact form submissionsname, email, subject, message
AboutAbout page sectionstitle, description, bgColor, textColor
BrandNameBrand identitytitle, brandFont
BrandDescriptionBrand copydescription, brandSecondaryFont
BrandIconVisual elementsicon
ColorTheme colorscardBackground, iconForeground, iconBackground
LandingPageMarketing pagesbrandName, primaryColor, secondaryColor

Relationship to UNPARTY Ecosystem

theunpartysomewhere serves as the public hub of the UNPARTY ecosystem:

As a Product

  • Primary web presence for UNPARTY
  • Content distribution platform
  • Brand showcase and customization tool
  • Community engagement platform

As a Development Asset

  • Reference implementation for RedwoodJS best practices
  • Pattern library for future UNPARTY applications
  • Testing ground for new features and experiments
  • Data source for analytics (via theunpartycrawler)

As a Business Tool

  • Marketing platform (landing pages, about pages)
  • Lead generation (contact forms)
  • Cost tracking (monitored by theunpartyrunway)
  • Performance measurement (Vercel Analytics)

Roadmap

Current Focus (Q4 2025)

  • Enhanced brand customization tools
  • Improved MDX content workflows
  • Mobile-responsive optimizations
  • Performance improvements

Planned Features

  • Marketplace integration
  • Advanced analytics dashboard
  • Content versioning and drafts
  • Multi-language support
  • Social media integration
  • Newsletter functionality
  • Advanced search and filtering

Long-Term Vision

  • Cross-platform content sync (with theunpartyunppp)
  • AI-powered content suggestions
  • Collaborative editing features
  • Plugin/extension system
  • White-label platform for other creators

Contributing

This is a private repository for UNPARTY development. If you're part of the team:

  1. Follow the RedwoodJS contribution guidelines
  2. Use conventional commits for clear history
  3. Write tests for new features
  4. Update documentation with changes
  5. Request code review before merging

Core Principles

Creator Ownership

  • All content belongs to the creator
  • Export functionality for data portability
  • No platform lock-in

Privacy First

  • Minimal data collection
  • User-controlled visibility settings
  • Transparent data handling

Cost Sensitivity

  • Efficient database queries
  • Optimized asset delivery
  • Serverless architecture for scaling
  • Monitored by theunpartyrunway for cost tracking

Architecture Decisions

Why RedwoodJS?

  • Integrated backend: GraphQL API and database included
  • Type safety: End-to-end TypeScript support
  • Developer experience: Excellent tooling and documentation
  • Community: Active community and regular updates
  • Opinionated structure: Clear patterns reduce decision fatigue

Why Clerk for Auth?

  • Low maintenance: Managed authentication service
  • Security: Industry-standard best practices
  • Flexibility: Customizable user flows
  • Integration: First-class RedwoodJS support

Why PostgreSQL?

  • Reliability: Battle-tested production database
  • Features: Advanced querying and JSON support
  • Ecosystem: Excellent Prisma integration
  • Scalability: Grows with application needs

Deployment

The application is deployed to Vercel with the following configuration:

Environment Variables (Production)

Code

DATABASE_URL=postgresql://...
CLERK_PUBLISHABLE_KEY=pk_...
NODE_ENV=production

Build Configuration

  • Build command: yarn rw build
  • Output directory: web/dist (web) + api/dist (API)
  • Node version: 20.x
  • Install command: yarn install

Deployment Workflow

  1. Push to main branch
  2. Vercel auto-deploys
  3. Database migrations run automatically
  4. Health checks verify deployment

Troubleshooting

Common Issues

Database connection errors

bash

# Check DATABASE_URL is set
echo $DATABASE_URL

# Test database connection
yarn rw prisma db push

Authentication not working

bash

# Verify Clerk key is set
echo $CLERK_PUBLISHABLE_KEY

# Check Clerk dashboard for configuration

Build failures

bash

# Clear cache and reinstall
rm -rf node_modules .redwood
yarn install
yarn rw build

Performance

Current Metrics (as of 2025-10-29)

  • First Contentful Paint: <1.5s
  • Time to Interactive: <3s
  • Lighthouse Score: 90+ (aim)
  • Bundle Size: Optimized with code splitting

Optimization Strategies

  • Lazy loading for routes and components
  • Image optimization via Vercel
  • GraphQL query optimization
  • Database indexing on key fields
  • CDN for static assets

Security

Authentication

  • Clerk handles password hashing and storage
  • Session management via Clerk
  • Role-based access control (RBAC)

Data Protection

  • SQL injection prevention via Prisma
  • XSS protection via React
  • CSRF tokens on mutations
  • Environment variables for secrets

Best Practices

  • Regular dependency updates
  • Security scanning via GitHub
  • Clerk security monitoring
  • Production error tracking

Testing Strategy

Unit Tests

  • Service layer business logic
  • Utility functions
  • Component logic (isolated)

Integration Tests

  • GraphQL resolvers with database
  • API endpoints end-to-end
  • Authentication flows

Manual Testing Checklist

  • User registration and login
  • Post creation and editing
  • Comment submission
  • Brand customization
  • Mobile responsiveness
  • Admin panel access control

Documentation

Key Files

  • README.md (this file) - Project overview and setup
  • api/db/schema.prisma - Database schema documentation
  • web/src/Routes.tsx - Application routing map
  • .env.example - Required environment variables
  • redwood.toml - RedwoodJS configuration

Additional Resources


Currently Documented in Ecosystem

  1. theunpartyunppp - iOS/macOS native journaling app
  2. theunpartyrunway - Development workflow automation
  3. theunpartycrawler - Analytics intelligence suite

Note: The UNPARTY ecosystem documentation also references theunpartyapp as a web platform repository. The relationship between theunpartyapp and theunpartysomewhere may represent different deployment environments, project phases, or naming conventions within the UNPARTY organization.

Integration Points

  • Monitored by theunpartyrunway for cost and velocity tracking
  • Analytics processed by theunpartycrawler for user insights
  • Future content sync with theunpartyunppp

Maintenance

Last Updated: 2025-10-29
Maintained By: UNPARTY Development Team
Review Frequency: Monthly or with significant changes

Current Status: 🚀 Active Development
Next Milestone: Enhanced brand customization tools


Contact & Support

Primary Platform: https://unparty.app
Repository: https://github.com/unparty-app/theunpartysomewhere

For questions, issues, or contributions, please contact the UNPARTY development team or open an issue in the repository.


License

Proprietary - UNPARTY LLC
All rights reserved.


Let's Get to Building 🎉

This platform is built with the belief that creators deserve tools that respect their ownership, protect their privacy, and remain cost-sensitive. Every feature, every decision, every line of code serves the creator first.