BentoPi is a multi-purpose, self-hosted dashboard designed for Raspberry Pi. It provides real-time information such as weather, news, and transport disruptions, making it ideal for home automation, information kiosks, or personal dashboards.
The target is a 3.5" 480x320 touchscreen attached to a Raspberry Pi Zero 2 W, but it can run on any Raspberry Pi model with minor adjustments.
- Self-hosted: All data is processed and displayed locally on your Raspberry Pi.
- Dashboard: Aggregates weather, news, transport information, and security camera feeds in a single interface.
- Extensible: Easily add new data sources or dashboard widgets.
- Modern UI: Built with React and Ant Design for a responsive, user-friendly experience.
- API Backend: FastAPI-based backend for data aggregation and sensor integration.
frontend/: React + TypeScript dashboard UI.backend/: FastAPI Python backend serving APIs and static files.
- Node.js >= 22 and pnpm >= 10 for frontend. This project targets Node.js v22 by default as it is the latest LTS version that supports 32-bit ARM architecture commonly used by Raspberry Pi Zero 2 W.
- Python >= 3.10 for backend. This project targets Python 3.13 by default as it is the version bundled with Raspberry Pi OS Lite (Trixie).
cd frontend
pnpm i
pnpm start- Access the dashboard at
http://localhost:5173(default Vite port).
cd backend
make venv
source venv/bin/activate
make upgrade
make- Backend API runs at
http://localhost:8000.
cd frontend
pnpm build- The build output will be placed in
frontend/dist/.
- Build the frontend as above.
- The build output will be automatically copied to the backend's web directory (automated in Docker build).
- Start the backend:
cd backend
make venv
source venv/bin/activate
make upgrade
make prod- Access the dashboard at
http://localhost:8000/web.
Build and run the complete system using Docker:
cd backend
docker build -t bentopi .
docker run -p 8000:8000 bentopi- Frontend: Hot-reloading, TypeScript, React 19, Ant Design 5.
- Backend: FastAPI, CORS enabled, sensor integration via SMBus.
- Testing: Run
pnpm testin frontend,make testin backend.
MIT