🔐 Checking Access...
← View Public Site

🏛️ Centre Township Board Meetings Ingestion Pipeline

Automatically creates and updates posts for monthly township meetings by synchronizing YouTube livestreams (@CentreTwpIN) with official meeting agendas and minutes (centretownshipin.gov/meetings/).

Video Ingestion Source: YouTube @CentreTwpIN/streams
Document Ingestion Source: centretownshipin.gov/meetings/
Automated Schedule: ● Daily 4:00 AM UTC (Cron)
Post Category Tag: Civic & Government

📰 Community News & Announcements Management

Create, edit, pin featured hero stories, and rearrange community bulletins synced to Cloudflare KV.

Media Title & Excerpt Category Date Featured Hero Actions

🎉 Community Traditions & Annual Events Management

Create, edit, reorder, and update annual community tradition cards displayed on the Events & Calendar page.

Media Title & Badge Tag Schedule / Date Button Action Actions

🔍 Google News Search Topics

Automate local news collection by defining Google News search terms. The system fetches and aggregates matching headlines in real-time.

âš¡ Quick-Add Popular Michiana Topics:
Status Search Query Phrase Category Tag Preview Actions

📡 Local & Regional RSS News Feeds Catalog

Select from curated Michiana media outlets or add custom RSS/Atom feeds to feature on the Local News page.

📰 Select Outlets from Michiana Directory (1-Click Enable / Disable):
Changes sync automatically to Cloudflare KV

Configured RSS Feed List

Status Outlet / Source Name RSS Feed URL Category Actions

⭐ Business Partner Spotlight & Rotation Schedule

Centrally coordinated for all visitors. Active businesses rotate fairly so every business is featured before repeats.

Cycle #1
● Currently Featured on Homepage Calculating...
Loading current spotlight...
Next scheduled rotation: -- -- of -- businesses featured
days per business

Type any number of days. The edge server automatically advances to the next unfeatured business after this duration.

Manual Rotation & Pin Controls

🏢 Local Business Directory Management

Manage local partner businesses, service providers, and sponsor listings.

Status Last Paid Logo Business Name & Tagline Category & Tier Contact Info Actions

👥 Neighborhood Associations & Message Routing

Manage registered committees and the email destination addresses for the contact form.

Association / Committee Name Category Badge Tag Registered Routing Email Actions

💾 Data Backup & Disaster Recovery

Export live database snapshots, restore historical backups with 1-click, and inspect automated rolling retention.

AUTOMATED RETENTION ENGINE
1 Snapshot / 24 Hours

deploy.ps1 automatically triggers scripts/backup.py with a 24-hour rate limit and retains the last 10 historical snapshots.

DISASTER RECOVERY STATUS
Active & Protected

Full-site ZIP archives + JSON database snapshots are safely archived locally in backups/ (git-isolated).

☁️ Cloudflare KV Daily Cloud Snapshots (Last 10 Days)

Automated daily snapshots stored directly at Cloudflare's edge in your KV namespace.

Snapshot Date Dataset Items Cloudflare KV Key Action
Loading cloud snapshots from Cloudflare KV...

CLI Disaster Recovery Commands (Terminal)

If you ever need to rollback via command line:

# Create a forced backup immediately:
python scripts/backup.py --force

# Interactively restore data or full site:
python scripts/restore.py

🛡️ Cloudflare Zero Trust (Access) Setup Instructions

Cloudflare Zero Trust protects this /admin path and your editing APIs at the edge before requests reach your website. Only authenticated emails (via One-Time PIN or Google login) will be granted access.

Step 1: Create an Access Application in Cloudflare Zero Trust

  1. Go to Cloudflare Dashboard → Select Zero Trust in the left sidebar.
  2. Navigate to Access → Applications → Click Add an application.
  3. Select Self-hosted.
  4. Application name: MTOH Community Admin
  5. Application domain / path: Set your domain and path to admin* (e.g. yourdomain.org/admin*).

Step 2: Define Who Can Log In (Access Policy)

  1. Policy name: Allow Committee Leaders
  2. Action: Allow
  3. Configure rules:
    • Selector: Emails → Enter authorized admin emails (e.g. brian@yourdomain.com, board@mtoh-neighbors.org).
    • Or Selector: Access Groups / Emails ending in @mtoh-neighbors.org.
  4. Click Next and Save Application.

Step 3: Cloudflare KV Binding (One-Time Setup)

In Cloudflare Pages Project → Settings → Functions → KV namespace bindings → Bind COMMUNITY_KV to your KV namespace.

🛡️
Miami Trails & Orchard Heights

Admin Console

Enter the board passcode to continue

Protected by Cloudflare Zero Trust + board passcode.
Unauthorized access is logged.