Community-Bulletin-TV

Community Bulletin Board TV

A retro-style, JSON-driven community bulletin board inspired by classic cable-access TV.

A lightweight, retro-inspired Community Bulletin Board system that recreates the look and feel of classic 1990s cable-access TV displays β€” blinking text, stacked bands, and scrolling tickers β€” all editable through a web browser.

Built with plain HTML, CSS, JavaScript, and PHP. No frameworks. No database. Screenshot 2026-02-03 083548

πŸ“Ί Screenshots

Community Bulletin TV is designed to feel like a classic cable-access bulletin board β€” bold text, simple layouts, and continuous rotation.

Welcome Screen

Welcome Screen

Programming / Announcements

Programming Screen

Upcoming Features

Coming Soon Screen


πŸ“Ί What This Is

This project displays rotating β€œscreens,” each made up of horizontal text bands and an optional scrolling ticker. It’s designed for:

Everything is edited visually via a browser-based editor and saved to a simple JSON file.


✨ Features


πŸ—‚ Project Structure

community-bulletin/
β”œβ”€β”€ play.html # Public display page
β”œβ”€β”€ editor.html # Editor interface
β”œβ”€β”€ save.php # Saves bulletin data
β”œβ”€β”€ data/
β”‚ └── bulletin.json # All content & settings
β”œβ”€β”€ js/
β”‚ β”œβ”€β”€ bulletin.js # Display logic
β”‚ └── editor.js # Editor logic
β”œβ”€β”€ css/
β”‚ └── bulletin.css # Shared styles
└── README.md

πŸš€ Getting Started

Requirements

Installation

  1. Copy or clone the project into your web root: ```bash /var/www/html/community-bulletin/
  2. Ensure PHP can write to the data directory:
     chown -R www-data:www-data data
     chmod 664 data/bulletin.json
    
  3. Open in your browser:

πŸ§ͺ Demo Configuration

This repository includes a fully-featured example configuration:

The demo file showcases:

If you want to experiment, start by editing bulletin.json and reload the play page.

πŸ•’ Macros

Macros are placeholders in band or ticker text that update automatically.

Date & Time Macros

Defined in bulletin.json:

"macros": {
  "date": "%Y-%m-%d",
  "time": "%H:%M:%S",
  "datetime": "%Y-%m-%d %H:%M:%S"
}

Usage:

Date: {date}   Time: {time}

Macros update live on the display page.

Spacing Macros (Built-In)

These do not need to be configured: | Macro | Result | | β€”β€”β€” | β€”β€”β€”β€” | | {space} | Single space | | {tab} | 3 spaces | | {linef} | Line break |

Example:

Date:{tab}{date}{linef}Time:{tab}{time}

⏱ Screen Rotation

Screen timing is controlled globally:

"settings": {
  "screenDuration": 10
}

Ticker settings:

"ticker": {
  "speed": 40,
  "text": "COMMUNITY EVENTS β€’ LOCAL ANNOUNCEMENTS β€’ WEATHER ALERTS"
}

Screenshot 2026-02-03 083919

πŸ” Security Notes

This project assumes a trusted environment.

If exposed publicly:

🧠 Design Philosophy

🧭 Roadmap Ideas

πŸ“„ License

GPL2 License Free to use, modify, and redistribute.

If you run this on a cable channel in 1996, that’s on you πŸ˜‰