Metabolizer Blog Pipeline - integrated CMS for SecuBox: - Gitea: Mirror GitHub repos, store blog content - Streamlit: CMS app with markdown editor and live preview - HexoJS: Static site generator (clean → generate → publish) - Webhooks: Auto-rebuild on git push - Portal: Static blog served at /blog/ Pipeline: Edit in Streamlit CMS → Push to Gitea → Build with Hexo → Publish Packages: - secubox-app-streamlit: Streamlit server with LXC container - luci-app-streamlit: LuCI dashboard for Streamlit apps - secubox-app-metabolizer: CMS pipeline orchestrator CMS Features: - Two-column markdown editor with live preview - YAML front matter editor - Post management (drafts, publish, unpublish) - Media library with image upload - Git sync and Hexo build controls - Cyberpunk theme styling Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
174 lines
3.5 KiB
Python
174 lines
3.5 KiB
Python
"""
|
|
SecuBox Streamlit - Default Demo App
|
|
CyberMind Neural Data Platform
|
|
"""
|
|
import streamlit as st
|
|
import time
|
|
from datetime import datetime
|
|
|
|
# Page config
|
|
st.set_page_config(
|
|
page_title="SecuBox Streamlit",
|
|
page_icon="⚡",
|
|
layout="wide"
|
|
)
|
|
|
|
# Cyberpunk CSS
|
|
st.markdown("""
|
|
<style>
|
|
.stApp {
|
|
background-color: #0a0a0f;
|
|
background-image:
|
|
linear-gradient(rgba(0, 255, 255, 0.03) 1px, transparent 1px),
|
|
linear-gradient(90deg, rgba(0, 255, 255, 0.03) 1px, transparent 1px);
|
|
background-size: 50px 50px;
|
|
}
|
|
|
|
h1 {
|
|
color: #0ff !important;
|
|
text-shadow: 0 0 10px #0ff, 0 0 20px #0ff, 0 0 30px #0ff;
|
|
font-family: 'Courier New', monospace !important;
|
|
letter-spacing: 3px;
|
|
}
|
|
|
|
h3 {
|
|
color: #0ff !important;
|
|
text-shadow: 0 0 5px #0ff;
|
|
}
|
|
|
|
.stMetric {
|
|
background: rgba(0, 255, 255, 0.05);
|
|
border: 1px solid rgba(0, 255, 255, 0.2);
|
|
border-radius: 10px;
|
|
padding: 10px;
|
|
}
|
|
|
|
.stMetric label {
|
|
color: #0ff !important;
|
|
}
|
|
|
|
.stMetric [data-testid="stMetricValue"] {
|
|
color: #fff !important;
|
|
text-shadow: 0 0 5px #0ff;
|
|
}
|
|
|
|
.stAlert {
|
|
background: rgba(0, 255, 255, 0.1);
|
|
border: 1px solid #0ff;
|
|
}
|
|
|
|
.stButton button {
|
|
background: linear-gradient(135deg, #0ff, #00a0a0);
|
|
color: #000;
|
|
border: none;
|
|
font-weight: bold;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.stButton button:hover {
|
|
box-shadow: 0 0 20px #0ff;
|
|
}
|
|
|
|
/* CRT scanline effect */
|
|
.stApp::before {
|
|
content: "";
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
pointer-events: none;
|
|
background: repeating-linear-gradient(
|
|
0deg,
|
|
rgba(0, 0, 0, 0.1) 0px,
|
|
rgba(0, 0, 0, 0.1) 1px,
|
|
transparent 1px,
|
|
transparent 2px
|
|
);
|
|
z-index: 1000;
|
|
}
|
|
</style>
|
|
""", unsafe_allow_html=True)
|
|
|
|
# Header
|
|
st.title("⚡ SECUBOX STREAMLIT ⚡")
|
|
st.markdown("### Neural Data App Platform")
|
|
|
|
# Metrics row
|
|
col1, col2, col3, col4 = st.columns(4)
|
|
|
|
with col1:
|
|
st.metric("Status", "ONLINE", delta="Active")
|
|
|
|
with col2:
|
|
st.metric("Platform", "SecuBox", delta="v1.0")
|
|
|
|
with col3:
|
|
st.metric("Python", "3.12", delta="Latest")
|
|
|
|
with col4:
|
|
current_time = datetime.now().strftime("%H:%M:%S")
|
|
st.metric("System Time", current_time)
|
|
|
|
st.divider()
|
|
|
|
# Info section
|
|
col_left, col_right = st.columns(2)
|
|
|
|
with col_left:
|
|
st.markdown("### System Info")
|
|
st.info("""
|
|
**Streamlit Data Platform**
|
|
|
|
Deploy your Python data apps with ease:
|
|
- Interactive dashboards
|
|
- Data visualization
|
|
- Machine learning demos
|
|
- Real-time analytics
|
|
|
|
Manage apps via LuCI dashboard.
|
|
""")
|
|
|
|
with col_right:
|
|
st.markdown("### Quick Start")
|
|
st.code("""
|
|
# Deploy a new app
|
|
streamlitctl app add myapp /path/to/app.py
|
|
|
|
# Switch active app
|
|
streamlitctl app run myapp
|
|
|
|
# List all apps
|
|
streamlitctl app list
|
|
""", language="bash")
|
|
|
|
st.divider()
|
|
|
|
# Interactive demo
|
|
st.markdown("### Interactive Demo")
|
|
|
|
demo_col1, demo_col2 = st.columns(2)
|
|
|
|
with demo_col1:
|
|
st.markdown("#### Data Generator")
|
|
num_points = st.slider("Data Points", 10, 100, 50)
|
|
|
|
import random
|
|
data = [random.randint(0, 100) for _ in range(num_points)]
|
|
st.line_chart(data)
|
|
|
|
with demo_col2:
|
|
st.markdown("#### User Input")
|
|
user_name = st.text_input("Enter your name", "CyberMind")
|
|
|
|
if st.button("Greet"):
|
|
st.success(f"Welcome to SecuBox, {user_name}! ⚡")
|
|
|
|
# Footer
|
|
st.divider()
|
|
st.markdown("""
|
|
<div style="text-align: center; color: #0ff; font-family: 'Courier New', monospace;">
|
|
<small>SecuBox Streamlit Platform | CyberMind Studio | 2025</small>
|
|
</div>
|
|
""", unsafe_allow_html=True)
|