commit 029fb48ca640d176850bafb072671f4b1e23ef5b Author: kfj001 Date: Thu Aug 20 13:55:48 2026 -0700 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d44d7b --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# macOS +.DS_Store + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.egg-info/ +.eggs/ +build/ +dist/ +.venv/ +venv/ +env/ +*.log + +# Docker +*.env +docker-compose.override.yml + +# Editors / IDEs +.vscode/ +.idea/ +*.swp diff --git a/Copilot_20260720_151120_512.png b/Copilot_20260720_151120_512.png new file mode 100644 index 0000000..09f3669 Binary files /dev/null and b/Copilot_20260720_151120_512.png differ diff --git a/IDEA.md b/IDEA.md new file mode 100644 index 0000000..74111e0 --- /dev/null +++ b/IDEA.md @@ -0,0 +1 @@ +Taking extensive screenshots of the two seperate whitelabel sites for marketing. diff --git a/README.md b/README.md new file mode 100644 index 0000000..32faf2f --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# FlowerCMS — Marketing Screenshots + +White-label CMS demo sites for broadcasters. Two stations, one platform. + +--- + +## Sites + +| # | Station | Brand Name | URL | Local Port | +|---|---|---|---|---| +| 1 | **KMTN** | KMountain Flower Radio | http://kmtn.westerntechnologies.duckdns.org | http://localhost:4200 | +| 2 | **KRY2** | Fire FM | http://staylit.westerntechnologies.duckdns.org | http://localhost:4201 | + +Both sites run via Docker Compose behind Nginx Proxy Manager. + +## Admin Access + +**Login page:** append `/admin` to any site URL (e.g. `http://kmtn.westerntechnologies.duckdns.org/admin`) + +| Field | Value | +|---|---| +| Username | `admin` | +| Password | `123` | + +Admin dashboard tabs: **Shows · Events · History · Team · Community · Station · Theme · Underwriters · Mobile Builds · Stats** + +## Docker Services + +| Container | Image | Ports | +|---|---|---| +| `kmtnflower-frontend-1` | kmtnflower-frontend | 0.0.0.0:4200 → 80 | +| `kmtnflower-api-1` | kmtnflower-api | 8000 (internal) | +| `kmtnflower-db-1` | postgres:16-alpine | 5432 (internal) | +| `kmtnflower-build-1` | kmtnflower-build | 22 (internal) | +| `kryz-frontend-1` | kryz-frontend | 0.0.0.0:4201 → 80 | +| `kryz-api-1` | kryz-api | 8000 (internal) | +| `kryz-db-1` | postgres:16-alpine | 5432 (internal) | +| `kryz-build-1` | kryz-build | 22 (internal) | + +## Screenshot Files + +All images are 500px wide, JPEG, captured at 1.5× zoom. + +| File | Source | Used In | +|---|---|---| +| `homepage.jpg` | KMTN public homepage | marketing.html (hero + player) | +| `schedule.jpg` | KMTN schedule page | marketing.html | +| `about.jpg` | KMTN about page | marketing.html | +| `events.jpg` | KMTN events page | marketing.html | +| `contact.jpg` | KMTN contact page | marketing.html | +| `admin_dashboard.jpg` | KMTN admin — Shows tab | marketing.html | +| `admin_theme.jpg` | KMTN admin — Theme tab | marketing.html | +| `admin_mobile_builds.jpg` | KMTN admin — Mobile Builds tab | marketing.html | +| `kmtn_homepage.jpg` | KMTN homepage (white-label showcase) | marketing.html | +| `staylit_homepage.jpg` | Fire FM homepage (white-label showcase) | marketing.html | + +## How to Recapture Screenshots + +1. Open site in browser at the URL above. +2. Sign in at `/admin` with `admin` / `123`. +3. In DevTools Console, set zoom: + ```js + document.body.style.zoom = '1.5'; + document.documentElement.style.zoom = '1.5'; + ``` +4. Click the desired admin tab. +5. Capture screenshot (browser_vision or OS screencapture). +6. Resize to 500px wide, convert to JPEG: + ```bash + sips --resampleWidth 500 input.png --out tmp.png + sips -s format jpeg tmp.png --out output.jpg + ``` + +## Serving Locally + +```bash +cd "/Users/kyle/Desktop/kmtnflower shots" +python3 -m http.server 8899 +# Open http://localhost:8899 +``` + +## Project Root + +``` +/Users/kyle/Documents/kmtnflower/ +``` diff --git a/about.jpg b/about.jpg new file mode 100644 index 0000000..4bde8c9 Binary files /dev/null and b/about.jpg differ diff --git a/about.png b/about.png new file mode 100644 index 0000000..f6b167b Binary files /dev/null and b/about.png differ diff --git a/admin_dashboard.jpg b/admin_dashboard.jpg new file mode 100644 index 0000000..a7df673 Binary files /dev/null and b/admin_dashboard.jpg differ diff --git a/admin_dashboard.png b/admin_dashboard.png new file mode 100644 index 0000000..6d3c801 Binary files /dev/null and b/admin_dashboard.png differ diff --git a/admin_mobile_builds.jpg b/admin_mobile_builds.jpg new file mode 100644 index 0000000..9791cb8 Binary files /dev/null and b/admin_mobile_builds.jpg differ diff --git a/admin_mobile_builds.png b/admin_mobile_builds.png new file mode 100644 index 0000000..13af0db Binary files /dev/null and b/admin_mobile_builds.png differ diff --git a/admin_theme.jpg b/admin_theme.jpg new file mode 100644 index 0000000..2d36fbf Binary files /dev/null and b/admin_theme.jpg differ diff --git a/admin_theme.png b/admin_theme.png new file mode 100644 index 0000000..1e54a2a Binary files /dev/null and b/admin_theme.png differ diff --git a/carousel.jpg b/carousel.jpg new file mode 100644 index 0000000..0c72df0 Binary files /dev/null and b/carousel.jpg differ diff --git a/carousel.png b/carousel.png new file mode 100644 index 0000000..c8a5ff5 Binary files /dev/null and b/carousel.png differ diff --git a/carousel_2.jpg b/carousel_2.jpg new file mode 100644 index 0000000..f082efc Binary files /dev/null and b/carousel_2.jpg differ diff --git a/carousel_2.png b/carousel_2.png new file mode 100644 index 0000000..d2dd71e Binary files /dev/null and b/carousel_2.png differ diff --git a/contact.jpg b/contact.jpg new file mode 100644 index 0000000..383a305 Binary files /dev/null and b/contact.jpg differ diff --git a/contact.png b/contact.png new file mode 100644 index 0000000..13ad273 Binary files /dev/null and b/contact.png differ diff --git a/convert.py b/convert.py new file mode 100644 index 0000000..11b13dd --- /dev/null +++ b/convert.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +import subprocess +import os + +dir_path = "/Users/kyle/Desktop/kmtnflower shots" +names = ["kmtn_homepage", "staylit_homepage"] + +for name in names: + png = os.path.join(dir_path, f"{name}.png") + jpg = os.path.join(dir_path, f"{name}.jpg") + tmp = os.path.join(dir_path, f"{name}_tmp.png") + + subprocess.run(["sips", "--resampleWidth", "500", png, "--out", tmp], check=True) + subprocess.run(["sips", "-s", "format", "jpeg", tmp, "--out", jpg], check=True) + os.remove(tmp) + + nw = subprocess.check_output(["sips", "-g", "pixelWidth", jpg]).decode().strip().split()[-1] + nh = subprocess.check_output(["sips", "-g", "pixelHeight", jpg]).decode().strip().split()[-1] + sz = os.path.getsize(jpg) + print(f"{name}.jpg: {nw}x{nh} ({sz/1024:.0f} KB)") diff --git a/events.jpg b/events.jpg new file mode 100644 index 0000000..a00bdc3 Binary files /dev/null and b/events.jpg differ diff --git a/events.png b/events.png new file mode 100644 index 0000000..461bffd Binary files /dev/null and b/events.png differ diff --git a/homepage.jpg b/homepage.jpg new file mode 100644 index 0000000..8a0bada Binary files /dev/null and b/homepage.jpg differ diff --git a/homepage.png b/homepage.png new file mode 100644 index 0000000..5a1fbab Binary files /dev/null and b/homepage.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..91d90be --- /dev/null +++ b/index.html @@ -0,0 +1,1174 @@ + + + + + +FlowerCMS — White-Label CMS for Broadcasters + + + + + + + + +
+
All-in-One Broadcast Platform
+

Your station, your brand,
one powerful CMS.

+

White-label content management for small radio and internet broadcasters. Professional websites, custom branding, and native mobile apps — all from one dashboard.

+
+ Contact Sales + +
+
+ +
+ FlowerCMS homepage — KMountain Flower Radio with mountain hero illustration, live stream player, sponsor carousel, and app download badges +
+ + +
+ +

One platform. Unlimited brands.

+

FlowerCMS is the same platform powering completely different brands — and it can create an arbitrary number of them. Each gets its own colors, imagery, copy, and identity. Your listeners never know they're on the same engine.

+ +
+ +
+ KMountain Flower Radio — warm cream and navy blue community radio station homepage +
+

KMountain Flower Radio

+
Community Radio — Est. 1987
+
+
+
+
+
+
+
+

Warm, welcoming palette of deep navy and burnt orange. Mountain landscape hero with pine silhouettes. A nonprofit community station that feels like home — heritage-forward, approachable, and rooted in place.

+
+
+ + +
+ Fire FM — bold yellow and black urban independent radio station homepage +
+

Fire FM

+
Hottest Independent Station
+
+
+
+
+
+
+
+

High-contrast black and volt-yellow with a palm-tree skyline. Bold, punchy, and unapologetically urban. An independent station that projects energy, confidence, and a "turn it up" attitude.

+
+
+
+ +
+

Colors and imagery are your brand's first handshake. KMountain Flower Radio uses earthy blues, warm oranges, and mountain scenery to signal trust, tradition, and community. Fire FM goes full neon-on-black with a city skyline to shout energy, independence, and nightlife. These are just two examples — the platform can launch as many independent brands as you need, each with its own look, feel, and voice. Your colors, your photos, your voice — FlowerCMS adapts to you, at any scale.

+
+
+ + +
+ +

Everything you need. Nothing you don't.

+

Built specifically for broadcasters who need a professional presence without the complexity.

+ + +
+
+

Beautiful Program Schedule

+

Auto-generated program listings with hosts, genres, and time slots. Show cards feature custom artwork, descriptions, and one-click play. Your listeners always know what's on — and what's coming next.

+
    +
  • Day-by-day program cards with artwork
  • +
  • Genre tags & host info
  • +
  • Live now indicator
  • +
  • Color-coded time-slot indicators
  • +
  • Recurring show support
  • +
+
+
+ Program schedule page with show cards for Morning Mountain Mist, Community Roundup, and Bluegrass Trails +
+
+ + +
+
+

Rich Station Pages

+

Every station gets a full About page with core values, interactive history timeline, and team profiles. Showcase your mission, milestones, and the people behind the mic — all editable from the dashboard.

+
    +
  • Core values cards
  • +
  • Interactive history timeline
  • +
  • Team member profiles with photos
  • +
  • Custom station artwork & logo
  • +
  • Professional typography
  • +
+
+
+ About page with station values, history timeline from 1987 to 2008, and team profiles +
+
+ + +
+
+

Event Management

+

Promote live events, fundraisers, and open houses with dates, locations, and descriptions. Each event card includes a "Learn More" link and integrates with your station's branding automatically.

+
    +
  • Event cards with dates & venues
  • +
  • Rich descriptions & learn-more links
  • +
  • Location & registration support
  • +
  • Auto-syncs with station branding
  • +
  • Community open to all events
  • +
+
+
+ Events page with Summer Sounds Festival, Annual Fundraiser Gala, Volunteer Open House, and Harvest Moon Broadcast +
+
+ + +
+
+

Contact & Engagement

+

Built-in contact forms with subject categorization, studio location cards, phone, email, and broadcast frequencies. Everything your listeners need to get in touch — no extra plugins required.

+
    +
  • Subject-categorized contact form
  • +
  • Studio location & hours
  • +
  • Phone, email & frequency display
  • +
  • Social media integration
  • +
  • Responsive mobile-first layout
  • +
+
+
+ Contact page with message form, studio location, phone, email, and broadcast frequencies +
+
+ + +
+
+

Always-On Media Player

+

Your live stream lives in the navigation bar — present on every page, never intrusive. Listeners can start listening the moment they land and keep the stream running as they browse your schedule, events, or contact info. No pop-ups, no overlays, no interruptions.

+
    +
  • Embedded in the navbar — visible on every page
  • +
  • Play/stop toggle with pulsing LIVE indicator
  • +
  • Real-time track metadata from Airtime
  • +
  • Scrolling marquee on mobile, clean ellipsis on desktop
  • +
  • 48×48 touch target — thumb-friendly
  • +
  • Stream persists across page navigation
  • +
+
+
+ Top navigation bar showing the KMTN logo, Live Stream media player button, and menu links — always visible on every page +
+
+ + +
+
+

Smart Color Picker

+

Pick your brand colors and let our harmony engine do the rest. Complementary, analogous, triadic — we generate a full, accessible palette automatically. Changes preview in real time and carry through to both your website and mobile app.

+
    +
  • Color harmony mode selection
  • +
  • Auto-generated light, dark & muted variants
  • +
  • Real-time scheme preview
  • +
  • One-click auto-fix for contrast issues
  • +
  • Propagates to mobile app theme
  • +
+
+
+ Admin theme page showing color swatches grid with hex codes, harmony settings, auto-generate variants toggle, and save buttons +
+
+ + +
+
+

Built-In Mobile Build Server

+

FlowerCMS comes with a build server — no third-party CI needed. Configure your app metadata, upload signing certificates, and kick off native Android & iOS builds from the dashboard. Track build history and download artifacts for app store deployment.

+
    +
  • Android & iOS build targets
  • +
  • Keystore & provisioning profile upload
  • +
  • Version name & build number control
  • +
  • Build history with status tracking
  • +
  • Theme JSON auto-export for app sync
  • +
+
+
+ Admin mobile builds page showing derived defaults, theme export status, build request form with platform selection and file uploads, and build history table +
+
+ + +
+
+

White-Label Mobile App

+

Your station's own branded app on iOS and Android — no generic player, no shared identity. Your logo, your colors, your schedule, your live stream. Listeners get Now Playing metadata, upcoming shows, AirPlay & casting, and a native experience that carries your brand from the radio into their pocket.

+
    +
  • Station-branded home screen with your identity
  • +
  • Live Studio Feed — Now Playing & Coming Next
  • +
  • On-Air schedule with upcoming shows
  • +
  • Playback controls — play, stop, AirPlay, casting
  • +
  • Auto-synced from your CMS theme & content
  • +
+
+
+ Fire FM white-label mobile app on iPhone showing branded header, Live Studio Feed with Now Playing and Coming Next cards, on-air schedule, and bottom playback controls with AirPlay +
+
+ + + + + + +
+
+

LibreTime Studio — Included

+

Every FlowerCMS account comes with a fully managed, hosted instance of LibreTime — the professional open-source audio studio management platform. Schedule shows, manage playlists, track playouts, and run your station from one powerful web interface. No separate hosting, no setup hassle — it's bundled and managed for free as part of your service.

+
    +
  • Hosted LibreTime instance — zero setup
  • +
  • Professional playlist & show scheduling
  • +
  • Real-time playout queue management
  • +
  • Track metadata & duration tracking
  • +
  • Multi-user access for hosts & admins
  • +
  • Fully managed — updates, backups & uptime
  • +
+
+
+ LibreTime studio interface showing playlist queue with scheduled tracks, start/end times, durations, and color-coded status for Ben Howard, Phillip Phillips, and Mumford & Sons +
+
+ + +
+
+

Worldwide MP3 Streaming

+

We partner with leading streaming audio infrastructure providers to deliver seamless, reliable MP3 audio streaming to your listeners — anywhere in the world. No need to configure your own servers or manage bandwidth. Your stream is included with your monthly fee, backed by enterprise-grade CDN infrastructure that scales with your audience.

+
    +
  • Seamless MP3 streaming — worldwide reach
  • +
  • Partner-hosted infrastructure — zero config
  • +
  • Auto-scaling CDN for peak listenership
  • +
  • Real-time metadata pushed to players
  • +
  • Low-latency, high-availability uptime
  • +
  • Included in your service fee
  • +
+
+
+ Always-on live stream player embedded in the navigation bar — visible on every page with play/stop toggle and real-time track metadata +
+
+ + +
+

Your stream. Your content. Zero ads. Unlike ad-supported streaming platforms that inject commercials into your broadcast, FlowerCMS delivers your audio exactly as you send it — no interruptions, no third-party ads, no surprises. The only ads your listeners hear are the ones you choose to put there. Your brand stays yours, 24/7.

+
+
+ + +
+
+ +

One platform. Every channel.

+

Website, branding, and mobile apps — managed from a single admin panel.

+
+
+
🎨
+

Website Builder

+

Professional, responsive site with live streaming, schedules, events, and contact forms.

+
+
+
🎛️
+

Smart Branding

+

AI-assisted color harmony engine generates full palettes from just two colors you pick.

+
+
+
📱
+

Mobile Apps

+

Native Android & iOS apps with casting, AirPlay, Android Auto, and CarPlay built in.

+
+
+
📅
+

Schedule Manager

+

Drag-and-drop programming with time slots, hosts, genres, and recurring shows.

+
+
+
🎤
+

Event System

+

Promote live events, fundraisers, and open houses with location and registration.

+
+
+
🏢
+

Sponsor Management

+

Underwriter carousel on your homepage. Grow your funding with visible sponsor credits.

+
+
+
🎧
+

Live Stream Player

+

Always-on player in the navbar. Listeners stream while browsing — no pop-ups, no overlays.

+
+
+
🎙️
+

LibreTime Studio

+

Hosted, managed LibreTime instance included — playlist scheduling, playout queues & show management.

+
+
+
🌍
+

Worldwide Streaming

+

Partner-hosted MP3 streaming with CDN delivery. Scales with your audience — included in your fee.

+
+
+
+
+ + +
+
+ +

One plan. Everything included.

+

No tiers. No listening hour caps. No platform ads. Just professional broadcasting tools at a fair price.

+ +
+
+
+ $250/mo +
+
Everything your station needs — included.
+
+
    +
  • ✓ Unlimited listeners & streaming hours
  • +
  • ✓ White-label website — your brand, your domain
  • +
  • ✓ Custom mobile app builder (iOS & Android)
  • +
  • ✓ Hosted LibreTime studio — zero setup
  • +
  • ✓ Worldwide MP3 streaming via CDN
  • +
  • ✓ Event management & sponsor tools
  • +
  • ✓ Smart color picker & theme engine
  • +
  • ✓ Always-on live stream player
  • +
  • ✓ Zero platform ads — your stream stays yours
  • +
  • ✓ Minimal analytics — privacy by design
  • +
+ +

You'll need your own Apple Developer ($99/yr) and Google Play ($25 one-time) accounts for app store submission — same as any platform.

+
+ + +
+

How we compare

+

Live365's comparable tier (Broadcast 3) charges $274/mo for less. Here's the gap:

+
+
+
Feature
+
Live365 Broadcast 3
+
FlowerCMS
+
+
+
Monthly price
+
$274
+
$250
+
+
+
Listening hours
+
7,000 TLH + $0.05/overage
+
Unlimited
+
+
+
White-label website
+
✗ Live365 branded
+
✓ Your brand
+
+
+
Custom mobile app
+
Included
+
Included
+
+
+
Studio software
+
✗ Not included
+
✓ LibreTime hosted
+
+
+
Event management
+
✗ Not included
+
✓ Built-in
+
+
+
Sponsor tools
+
✗ Not included
+
✓ Carousel + modals
+
+
+
Platform ads on your stream
+
⚠ Optional upsell (50/50 revenue)
+
✓ Never — zero platform ads
+
+
+
Analytics & tracking
+
Extensive listener surveillance
+
Minimal — privacy-respecting
+
+
+ +
+
+
+ + +
+

Ready to launch your station?

+

No developer required. No design degree needed. Reach out and we'll get you up and running.

+Contact Sales +
+ + + + + + diff --git a/kmtn_homepage.jpg b/kmtn_homepage.jpg new file mode 100644 index 0000000..d036ce6 Binary files /dev/null and b/kmtn_homepage.jpg differ diff --git a/kryz-go-app.jpg b/kryz-go-app.jpg new file mode 100644 index 0000000..aadc8bf Binary files /dev/null and b/kryz-go-app.jpg differ diff --git a/kryz-go-app.png b/kryz-go-app.png new file mode 100644 index 0000000..2984a4f Binary files /dev/null and b/kryz-go-app.png differ diff --git a/kryz-go-home.png b/kryz-go-home.png new file mode 100644 index 0000000..0fde947 Binary files /dev/null and b/kryz-go-home.png differ diff --git a/libretime.jpg b/libretime.jpg new file mode 100644 index 0000000..94e6135 Binary files /dev/null and b/libretime.jpg differ diff --git a/mobile_1.jpg b/mobile_1.jpg new file mode 100644 index 0000000..2e93411 Binary files /dev/null and b/mobile_1.jpg differ diff --git a/navbar.jpg b/navbar.jpg new file mode 100644 index 0000000..bae4b21 Binary files /dev/null and b/navbar.jpg differ diff --git a/navbar.png b/navbar.png new file mode 100644 index 0000000..13fda52 Binary files /dev/null and b/navbar.png differ diff --git a/schedule.jpg b/schedule.jpg new file mode 100644 index 0000000..c50761c Binary files /dev/null and b/schedule.jpg differ diff --git a/schedule.png b/schedule.png new file mode 100644 index 0000000..02974ca Binary files /dev/null and b/schedule.png differ diff --git a/server.py b/server.py new file mode 100644 index 0000000..0907a6d --- /dev/null +++ b/server.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +import http.server +import socketserver + +PORT = 8899 + +Handler = http.server.SimpleHTTPRequestHandler + +with socketserver.TCPServer(("", PORT), Handler) as httpd: + print(f"Serving HTTP on port {PORT} (http://localhost:{PORT}/)") + httpd.serve_forever() diff --git a/site-screenshots.html b/site-screenshots.html new file mode 100644 index 0000000..f6fe857 --- /dev/null +++ b/site-screenshots.html @@ -0,0 +1,318 @@ + + + + + +KMountain Flower Radio — Site Screenshots + + + + +
+

KMtn Flower Radio

+

Complete site walkthrough — public pages and admin dashboard

+
kryz.westerntechnologies.duckdns.org · 14 screenshots
+
+ + +
+

Public Pages

+

Front-end pages visible to visitors

+
+
+ +
+ Homepage +
+
Page 1
+

Homepage

+

Mountain landscape hero, "KMountain Flower Radio" branding, View Schedule CTA, live stream indicator, underwriter placeholders, and full footer with social links.

+
+
+ +
+ About page +
+
Page 2
+

About

+

Core values (Music, Community, Reach, Mission), history timeline (1987–2008), and team profiles for 4 key staff members.

+
+
+ +
+ Schedule page +
+
Page 3
+

Schedule

+

10 program cards with show titles, hosts, genres, and time slots — from Morning Mountain Mist through Weekend Sunrise.

+
+
+ +
+ Events page +
+
Page 4
+

Events

+

4 upcoming events: Summer Sounds Festival (Jul 12), Annual Fundraiser Gala (Aug 5), Volunteer Open House (Sep 18), Harvest Moon Broadcast (Oct 30).

+
+
+ +
+ Contact page +
+
Page 5
+

Contact

+

Contact form (name, email, subject, message), studio address at 42 Pine St, phone number, email, and frequency info.

+
+
+ +
+ Sign In page +
+
Page 6
+

Sign In

+

Admin login form with username and password fields, flower logo header, and "Admin access for KMountain Flower Radio" subtitle.

+
+
+ +
+ + +
+

Admin Dashboard

+

Logged-in management interface (username: admin)

+
+
+ +
+ Dashboard overview +
+
Admin — 7
+

Dashboard Overview

+

Tab navigation for all admin sections (Shows, Events, History, Team, Community, Station, Theme, Underwriters, Mobile Builds, Stats) with the Shows table visible.

+
+
+ +
+ Shows management +
+
Admin — 8
+

Shows (10)

+

Full shows management table with Edit/Delete actions: Morning Mountain Mist, Community Roundup, Bluegrass Trails, Lunchtime Jazz, Folk Roots Hour, Afternoon Acoustics, Evening Echoes, Classical Mountains, Night Owl Session, Weekend Sunrise.

+
+
+ +
+ Events management +
+
Admin — 9
+

Events (4)

+

Events management table with date, title, location, and active status. All 4 events active. Add Event button available.

+
+
+ +
+ History timeline +
+
Admin — 10
+

History Timeline (4)

+

1987 “The Idea Takes Root”, 1991 “FCC License Granted”, 1995 “First Broadcast”, 2008 “Studio Expansion” — each with Edit/Delete controls.

+
+
+ +
+ Team management +
+
Admin — 11
+

Team Members (4)

+

Margaret Ellis (Board Chair), James Whitfield (General Manager), Dr. Priya Nair (Program Director), Carlos Mendez (Community Outreach Coordinator).

+
+
+ +
+ Community highlights +
+
Admin — 12
+

Community Highlights (4)

+

Our Music 🎵, Our Community 🤝, Our Reach 📡, Our Mission 🌱 — each with icons, ordering, and active status.

+
+
+ +
+ Station configuration +
+
Admin — 13
+

Station Configuration

+

Callsign KMTN, frequency 98.7 FM, founded 1987, email, phone, website. Donation URL and app store URLs not yet configured. Edit Config button.

+
+
+ +
+ Theme customization +
+
Admin — 14
+

Theme & Color Palette

+

Harmony settings (Complementary), 14 color swatches — primary blues (#1a3a5c), accent oranges (#e87a2e), functional colors. Warning triangles on Success/Danger colors. Reset / Auto-Fix / Save buttons.

+
+
+ +
+ + + + + diff --git a/staylit_homepage.jpg b/staylit_homepage.jpg new file mode 100644 index 0000000..b5f8f29 Binary files /dev/null and b/staylit_homepage.jpg differ diff --git a/underwriter_takeover.png b/underwriter_takeover.png new file mode 100644 index 0000000..2092cfb Binary files /dev/null and b/underwriter_takeover.png differ