LANDING

this is a template for story sharing

theunpartylanding

Location: https://github.com/unparty-app/theunpartylanding
Status: Active Development
Primary Purpose: Static landing page for UNPARTY ecosystem with dynamic content filtering and Firebase integration

Overview

theunpartylanding is the public-facing landing page for the UNPARTY ecosystem. It serves as the first point of contact for visitors, providing an accessible, content-rich introduction to UNPARTY's philosophy and offerings through an interactive, filterable interface.


Tech Stack

  • Framework: Vanilla JavaScript (ES6 Modules)
  • Language: JavaScript, HTML5, CSS3
  • Database: Firebase Firestore
  • Authentication: Firebase Auth
  • Analytics: Firebase Analytics
  • Deployment: Static hosting (Firebase-compatible)
  • Styling: Custom CSS with modular architecture
  • Icons: Font Awesome 6

Key Features

Content Management

  • Dynamic Content Loading: Firestore integration for content sections
  • Category Filtering: Filter content by about, blog, connect, or view all
  • Read More/Less Toggle: Expandable content sections for better UX
  • Infinite Scroll: Load more content as users scroll

Interactive Elements

  • Mood Feature: Special interactive "MOOD. X UNPARTY" animation page
  • Profile System: Profile content toggle with sidebar management
  • Responsive Design: Mobile-first approach with flexible layouts

Design System

  • Modular CSS: Separate stylesheets for components (cards, buttons, sidebar, articles)
  • Custom Typography: Brandon Grotesque W05 font family with multiple weights (Black, BlackIt, LightIt, Medium, Regular, Thin)
  • Themed Components: Consistent styling across all UI elements

Architecture

Code

Landing Page (Static Web App)
├── Entry Points
│   ├── index.html (Main landing page)
│   ├── mood.html (Interactive mood feature)
│   └── loading.html (Loading state)
├── JavaScript Modules
│   ├── firebaseConfig.js (Firebase initialization)
│   ├── firestoreService.js (Database service placeholder)
│   ├── loadContent.js (Dynamic content loading)
│   ├── script.js (UI interactions)
│   └── mood.js (Mood feature logic)
├── Styling
│   ├── styles.css (Global styles)
│   ├── font.css (Typography)
│   ├── card.css (Card components)
│   ├── article.css (Article styling)
│   ├── buttons.css (Button components)
│   ├── sidebar.css (Navigation sidebar)
│   ├── mood.css (Mood feature styles)
│   └── unpartyxmood.css (Mood theme)
└── Assets
    └── BrandonGrotesqueW05* fonts (Black, BlackIt, LightIt, Medium, Regular, Thin)

Integration Points

Firebase Services

  • Firestore: Dynamic content storage and retrieval
  • Firebase Auth: User authentication framework
  • Firebase Analytics: User behavior tracking and insights
  • Firebase Hosting: Deployment platform (potential)

External Services

  • Font Awesome: Icon library for UI elements
  • Google Firebase: Complete backend infrastructure

Data Structure

javascript

// Firestore Collection: "sections"
{
  id: "introduction",
  title: String,
  preview: String,
  content: String,
  category: String // "about" | "blog" | "connect"
}

Business Value

ABOUT

Understanding the UNPARTY philosophy

  • Introduces visitors to UNPARTY's core mission: "Accessible web and app development that understands ideas are full of starts, stops, and skips"
  • Provides narrative-driven content that explains the creator's journey and motivations
  • Filters content by category to help visitors focus on what matters to them

BUILD

Entry point for creators

  • Demonstrates the simplicity of web-first design
  • Shows potential creators what UNPARTY can help them build
  • Serves as a reference implementation of clean, accessible web design
  • Interactive "build it yourself" message in the mood feature reinforces empowerment

CONNECT

First touchpoint for engagement

  • Provides connection options through dedicated "connect" content category
  • Creates emotional connection through personal storytelling
  • Enables Firebase-powered interactions for future features
  • Serves as gateway to other UNPARTY ecosystem products

Relationship to Ecosystem

Primary Role

  • Marketing Gateway: First impression for potential users
  • Philosophy Communication: Explains UNPARTY's creator-first approach
  • Ecosystem Hub: Links to other UNPARTY products and services

Integration with Other Repositories

→ theunpartyapp (Web Platform)

  • Potential redirect destination for deeper engagement
  • Shares design philosophy and visual identity
  • Could integrate with CMS for content management

→ theunpartyunppp (Native App)

  • Introduces the journaling product
  • Creates interest for mobile app download
  • Aligns storytelling themes

→ theunpartycrawler (Analytics)

  • Landing page analytics could feed into conversation analysis
  • User journey tracking from first visit
  • Content effectiveness measurement

→ theunpartyrunway (Dev Tools)

  • Cost tracking for Firebase usage
  • Development velocity measurement
  • Budget monitoring for hosting and services

Getting Started

Prerequisites

bash

# Node.js and npm (for package management)
node --version  # v14+
npm --version   # v6+

Installation

  1. Clone the repository

bash

git clone https://github.com/unparty-app/theunpartylanding.git
cd theunpartylanding
  1. Install dependencies

bash

npm install
  1. Firebase Configuration

    • Firebase credentials are already configured in firebaseConfig.js
    • The configuration file contains the Firebase project settings
    • Note: Firebase web API keys are designed to be public and safe for client-side use. Security is enforced through Firestore security rules, not API key secrecy.
  2. Serve locally

bash

# Using Python
python3 -m http.server 8000

# Or using Node.js http-server
npx http-server -p 8000
  1. Access the site
http://localhost:8000

File Structure

Code

theunpartylanding/
├── index.html              # Main landing page
├── mood.html               # Interactive mood feature
├── loading.html            # Loading state page
├── script.js               # Main UI interactions
├── loadContent.js          # Firestore content loader
├── firebaseConfig.js       # Firebase initialization
├── firestoreService.js     # Database service placeholder
├── mood.js                 # Mood animation logic
├── styles.css              # Global styles
├── font.css                # Typography definitions
├── card.css                # Card component styles
├── article.css             # Article component styles
├── buttons.css             # Button component styles
├── sidebar.css             # Sidebar navigation styles
├── mood.css                # Mood feature styles
├── unpartyxmood.css        # Mood theme styles
├── BrandonGrotesqueW05*/   # Font files (Black, BlackIt, LightIt, Medium, Regular, Thin)
├── package.json            # Dependencies
├── package-lock.json       # Dependency lock file
└── .gitignore              # Git ignore rules

Development Guidelines

Code Style

  • JavaScript: ES6+ syntax with modules
  • HTML: Semantic HTML5 elements
  • CSS: BEM-like naming conventions, modular architecture
  • Comments: Minimal, focused on "why" not "what"

Content Categories

Content is organized into three main categories:

  • about: Introduction and philosophy
  • blog: Stories and narratives
  • connect: Engagement and contact
  • all: Display everything

Adding New Sections

  1. Create Firestore document in sections collection:

javascript

{
  title: "Section Title",
  preview: "Brief preview text...",
  content: "Full content here...",
  category: "about" // or "blog", "connect"
}
  1. Add HTML section in index.html:

html

<section id="new-section" class="card-content" data-category="about">
  <h2 class="article-heading"></h2>
  <p class="article-preview"></p>
  <div class="full-content" id="fullContentNewSection" style="display: none;">
    <p class="article-paragraph"></p>
  </div>
  <a href="javascript:void(0);" class="read-more-link" 
     onclick="toggleContent('fullContentNewSection', this)">
    <span class="action-text">Read More</span>
  </a>
</section>
  1. Update loadContent.js to fetch the new section

Features in Detail

Content Filtering System

Users can filter content by clicking sidebar links:

  • about: Personal journey and philosophy
  • blog: Stories and reflections
  • connect: Ways to engage
  • all: Show everything

Read More/Less Toggle

Expandable content sections that:

  • Keep initial view clean and scannable
  • Allow deep dives on interesting topics
  • Dynamically update button text
  • Maintain smooth transitions

Mood Feature

Special interactive page (mood.html) with:

  • Click animation that reveals "build it yourself" message
  • Reinforces UNPARTY's empowerment philosophy
  • Separate styling system for unique experience

Firebase Integration

  • Firestore: Dynamic content management
  • Auth: User authentication framework (ready for future use)
  • Analytics: Track user engagement and behavior

Design Philosophy

Accessibility First

  • Semantic HTML for screen readers
  • Keyboard navigation support
  • Clear visual hierarchy
  • Readable typography (Brandon Grotesque W05)

Creator-Focused

  • Reflects the idea that "ideas are full of starts, stops, and skips"
  • Content structure supports non-linear exploration
  • Emphasizes building and creating

Privacy-Conscious

  • Minimal tracking
  • Firebase Analytics for insights only
  • No unnecessary third-party scripts
  • Clear data usage

Deployment

Firebase Hosting (Recommended)

bash

# Install Firebase CLI
npm install -g firebase-tools

# Login
firebase login

# Initialize
firebase init hosting

# Deploy
firebase deploy --only hosting

Static Hosting Alternatives

  • Vercel
  • Netlify
  • GitHub Pages
  • Any static file server

Maintenance

Content Updates

Content is managed through Firebase Firestore:

  1. Access Firebase Console
  2. Navigate to Firestore Database
  3. Update documents in sections collection
  4. Changes reflect immediately on the site

Style Updates

  • Modular CSS allows targeted updates
  • Edit specific component files (card.css, buttons.css, etc.)
  • Global changes go in styles.css

Adding Features

  • Follow existing patterns in script.js
  • Keep functions focused and single-purpose
  • Test across browsers and devices

Cost Considerations

Firebase Usage

  • Firestore: Free tier sufficient for landing page traffic
  • Hosting: Generous free tier (10 GB transfer/month)
  • Analytics: Free and unlimited

Monitoring

  • Track Firebase usage in console
  • Set up billing alerts
  • Consider CDN for static assets at scale

Future Enhancements

Potential Features

  • Newsletter signup integration
  • Contact form with Firestore storage
  • Blog post comments system
  • User accounts and profiles
  • Integration with theunpartyapp CMS
  • Progressive Web App (PWA) features
  • Dark mode toggle
  • Multi-language support

Technical Improvements

  • Bundle JavaScript modules
  • Optimize font loading
  • Add service worker for offline support
  • Implement lazy loading for images
  • Add automated testing
  • Set up CI/CD pipeline

Security Considerations

Current Setup

  • Firebase API key is public (expected for web apps)
  • Firestore security rules should restrict write access
  • No sensitive data in client-side code

Recommendations

  • Implement Firestore security rules
  • Add CAPTCHA for forms (future)
  • Regular dependency updates
  • Monitor Firebase security advisories

Contributing

Development Workflow

  1. Create feature branch
  2. Make changes
  3. Test locally
  4. Submit pull request
  5. Deploy after review

Code Review Checklist

  • Code follows existing style
  • No console errors
  • Works on mobile
  • Firebase integration tested
  • No exposed secrets

Support

Documentation

Ecosystem Documentation

  • theunpartyapp/CLAUDE.md - Web app development guide
  • theunpartyrunway/CLAUDE.md - Automation framework guide
  • UNPARTY Ecosystem Overview - See parent issue for full context

License

License information to be added


Ecosystem Metrics

Repository Type: 🌐 Web Application (Static Landing Page)
Platform: Web (Desktop + Mobile)
Primary Language: JavaScript
Target Audience: Public visitors, potential UNPARTY users
Development Status: Active


Questions Answered

  1. What problem does this repo solve?
    Provides an accessible, engaging first touchpoint for UNPARTY that communicates the brand philosophy and serves as a gateway to the ecosystem.

  2. Who is the primary user?
    Public visitors discovering UNPARTY, potential creators interested in the platform, and anyone exploring the ABOUT → BUILD → CONNECT journey.

  3. What tech stack does it use?
    Vanilla JavaScript, HTML5, CSS3, Firebase (Firestore, Auth, Analytics), Font Awesome.

  4. How does it integrate with other repos?
    Serves as marketing gateway to theunpartyapp and theunpartyunppp, provides user journey data for theunpartycrawler, and cost tracking data for theunpartyrunway.

  5. Is it actively developed or archived?
    Active development.

  6. What are the key features/capabilities?
    Dynamic content filtering, Firebase integration, expandable content sections, interactive mood feature, responsive design.

  7. What external services does it depend on?
    Firebase (Firestore, Auth, Analytics), Font Awesome CDN.

  8. How does it align with ABOUT → BUILD → CONNECT?
    ABOUT: Introduces UNPARTY philosophy. BUILD: Shows what can be created, empowers with "build it yourself". CONNECT: Provides gateway to engagement and ecosystem.

  9. What business value does it provide?
    First impression, brand communication, user acquisition funnel, philosophy education, ecosystem gateway.

  10. How does it protect creator ownership, privacy, and cost-sensitivity?
    Minimal tracking, Firebase free tier usage, no vendor lock-in for static content, open architecture allows self-hosting.


Last Updated: 2025-10-29
Maintained By: UNPARTY Development Team
Status: ✅ Complete Documentation

Focus: First touchpoint for the measurable user progress through ABOUT → BUILD → CONNECT while protecting creator ownership, privacy, and cost-sensitivity.