A Self-hosted digital board for displaying events, weather, news and other widgets. Works on small to large screens, portrait or landscape. Clean, customizable, secure, and responsive.
- Docker and Docker Compose (recommended)
- OR Node.js 20+ and Python 3.11+ (for local development)
-
Clone the repository:
git clone <repository-url> cd ZeroBoard
-
Configure Environment Variables:
cp .env.sample .env # Edit .env with your configuration values -
Start all services:
docker-compose up -d
This will start:
- Backend API on http://localhost:8000 (or port from .env)
- Frontend on http://localhost:3000 (or port from .env)
- SQLite database (default) or PostgreSQL/MySQL if configured
-
Get Admin Credentials: After the backend starts, check the Docker logs:
docker logs zero-board-backend
Or check the log file:
cat logs/zero-board.log
You'll see output like:
================================================================================ ZERO BOARD - ADMIN CREDENTIALS ================================================================================ Username: zbadmin Password: <generated-password> ================================================================================
ZeroBoard/
├── backend/ # FastAPI backend application
├── zero-board/ # Next.js frontend application
├── logs/ # Application logs
└── docker-compose.yml
-
Navigate to backend directory:
cd backend -
Create virtual environment:
python -m venv venv source venv/bin/activate -
Install dependencies:
pip install -r requirements-dev.txt
-
Create
.envfile (copy fromenv.example):cp env.example .env # Edit .env with your settings -
Update
.envwith your database configuration (SQLite by default):DATABASE_TYPE=sqlite DATABASE_URL=sqlite+aiosqlite:///./zeroboard.db
-
Start server:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
The server will automatically:
- Initialize database schema (create tables if they don't exist)
- Create admin user if no users exist
- Print admin credentials to console and
logs/zero-board.log
-
Navigate to frontend directory:
cd zero-board -
Install dependencies:
npm install
-
Create
.env.localfile:NEXT_PUBLIC_API_URL=http://localhost:8000
-
Start development server:
npm run dev
Frontend will be available at http://localhost:3000
For Docker Compose, create a .env file in the root directory:
cp .env.sample .envSee .env.sample for all available options. Key variables:
DATABASE_TYPE:sqlite,postgresql, ormysqlDATABASE_URL: Database connection stringSECRET_KEY: REQUIRED in production - Secret key for sessions (generate withpython3 -c "import secrets; print(secrets.token_urlsafe(32))")CORS_ORIGINS: Comma-separated list of allowed origins (e.g.,https://yourdomain.com)NEXT_PUBLIC_API_URL: Backend API URL for frontendBACKEND_PORT: Backend port (default: 8000)FRONTEND_PORT: Frontend port (default: 3000)
For local development without Docker, see backend/env.example for backend-specific options.
For local frontend development, create .env.local:
NEXT_PUBLIC_API_URL: Backend API URL (e.g.,http://localhost:8000)
On first run, the admin password is automatically generated and logged to:
- Console output (stdout)
logs/setup.logfile
Use the provided script:
cd backend
python scripts/reset_admin_password.pyThe new password will be printed to console and logged to logs/setup.log.
We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to submit issues and pull requests.
For security concerns, please see SECURITY.md for reporting vulnerabilities.
This project is licensed under the MIT License - see the LICENSE file for details.



