A simple Streamlit-based control panel for managing isolated WordPress deployments (with database containers) on subdomains.
It allows users to log in, deploy, and monitor their WordPress services — perfect for multi-tenant setups or local WordPress sandboxing.
- 🔐 Login System — Authenticates users and stores a session token.
- 🌐 Subdomain Deployment — Creates unique subdomains (e.g.
example.localtest.me). - 🧩 Service Management — Starts WordPress and DB containers through the
DeployService. - 📊 Dashboard View — Displays container statuses and quick access to logs.
- 🪄 Responsive UI — Built with Streamlit
.
├── service/
│ ├── account_service.py # Handles authentication and account APIs
│ └── deploy_service.py # Handles deployment logic for WordPress services
├── session.py # Manages user session (save/load/clear)
├── app.py # Main Streamlit entrypoint (this file)
└── README.md
- Python 3.11+
- Docker (for deployment services)
- Streamlit
- Poetry
- Additional Python packages (install below)
-
Clone the repository
git clone https://github.com/yourusername/wp-control-plane.git cd wp-control-plane -
Activate a virtual environment
poetry install $(poetry env activate) -
Run the app
streamlit run app.py
Enter your email and password (currently has a dummy [email protected] | password).
The system will authenticate using the AccountService and save your session token.
If you don’t have an existing deployment:
- Enter your preferred subdomain (e.g.
test) - Click Deploy
- The system will trigger the
DeployServiceto spin up WordPress and DB containers (e.g.,test.localtest.me)
After deployment, view:
- WordPress & DB status (🟢 running / 🟡 paused / 🔴 stopped)
- Live logs with View Logs buttons
- Option to Logout
- Session Management:
Handled through
session.py(save/load/clear token tost.session_state). - Async Support:
Streamlit supports async functions — this app uses
asynciofor service calls. - Deployment Services:
Replace or extend
DeployServicewith your Docker logic or API-based provisioning.
- Add user registration
- Manage multiple subdomains per user
- Include container metrics (CPU, memory)
- Replace
localtest.mewith a local DNS alternative - Integrate with AWS ECS, Kubernetes, or serverless infrastructure
- Option to delete existing services