Merge pull request 'docs: rewrite README to describe FlowerCMS marketing site' (#1) from docs/readme-flowercms-marketing into main
Reviewed-on: http://192.168.1.74:30008/kfj001/flowercms_marketing/pulls/1
This commit was merged in pull request #1.
This commit is contained in:
commit
ccb0d53bdc
1 file changed
+35
-73
@@ -1,86 +1,48 @@
|
|||||||
# FlowerCMS — Marketing Screenshots
|
# FlowerCMS
|
||||||
|
|
||||||
White-label CMS demo sites for broadcasters. Two stations, one platform.
|
Marketing website for **FlowerCMS** — white-label content management for small
|
||||||
|
radio and internet broadcasters. One platform, every channel: a branded public
|
||||||
|
website, an admin dashboard, native mobile apps, an always-on live stream
|
||||||
|
player, event and sponsor tools, and a hosted LibreTime studio.
|
||||||
|
|
||||||
---
|
This repository is the marketing site itself plus the screenshot assets that
|
||||||
|
demonstrate the product. It is a static HTML site.
|
||||||
|
|
||||||
## Sites
|
## What's in this repo
|
||||||
|
|
||||||
| # | Station | Brand Name | URL | Local Port |
|
- **`index.html`** — the FlowerCMS marketing landing page. Sections:
|
||||||
|---|---|---|---|---|
|
- **Hero** — "Your station, your brand, one powerful CMS."
|
||||||
| 1 | **KMTN** | KMountain Flower Radio | http://kmtn.westerntechnologies.duckdns.org | http://localhost:4200 |
|
- **White-Label Showcase** — two demo stations, *KMountain Flower Radio* and
|
||||||
| 2 | **KRY2** | Fire FM | http://staylit.westerntechnologies.duckdns.org | http://localhost:4201 |
|
*Fire FM*, built on the same platform.
|
||||||
|
- **Features** — program schedule, station pages, event management, contact &
|
||||||
|
engagement, media player, smart color picker, mobile build server,
|
||||||
|
white-label mobile app, sponsor carousel & takeover modal, hosted LibreTime
|
||||||
|
studio, worldwide MP3 streaming.
|
||||||
|
- **Pricing** — single flat plan.
|
||||||
|
- **CTA / footer** — contact sales.
|
||||||
|
- **`site-screenshots.html`** — a gallery of screenshots of the
|
||||||
|
*KMountain Flower Radio* site (public pages and admin dashboard).
|
||||||
|
- **`convert.py`** — resizes full-res `.png` screenshots down to the 500px-wide
|
||||||
|
JPEGs used on the showcase.
|
||||||
|
- **`server.py`** — tiny static file server for viewing the site locally.
|
||||||
|
- **`*.jpg` / `*.png`** — screenshot and screenshot-source assets used by the
|
||||||
|
pages above.
|
||||||
|
|
||||||
Both sites run via Docker Compose behind Nginx Proxy Manager.
|
## View locally
|
||||||
|
|
||||||
## Admin Access
|
The site is static — open `index.html` directly, or serve the folder:
|
||||||
|
|
||||||
**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
|
```bash
|
||||||
cd "/Users/kyle/Desktop/kmtnflower shots"
|
python3 server.py # http://localhost:8899
|
||||||
|
# or, equivalently:
|
||||||
python3 -m http.server 8899
|
python3 -m http.server 8899
|
||||||
# Open http://localhost:8899
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Project Root
|
## Recapture a screenshot asset
|
||||||
|
|
||||||
```
|
`convert.py` turns a full-resolution `.png` into the 500px-wide JPEG used on the
|
||||||
/Users/kyle/Documents/kmtnflower/
|
showcase. Add file names to the `names` list at the top of the script, then:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 convert.py
|
||||||
```
|
```
|
||||||
Reference in new issue
Block a user