A fullscreen, touch-first "Web OS" shell for dedicated touchscreens, kiosks, and internal showcases. Built with Electron, React, and Tailwind CSS.
Web Deck turns any computer into a dedicated web application launcher. It hosts independent web apps in an Android-like environment, hiding the underlying OS distractions and providing a unified system navigation experience.
- Fullscreen Kiosk UX: Zero browser chrome, zero OS distractions.
- System Navigation: Persistent bottom bar with Back, Home, and Recents buttons.
- Task Manager (Recents):
- Swipe-up to Close: Fluid, native-feeling gestures for multitasking.
- Visual Snapshots: Real-time previews of running apps.
- Dynamic App Spawning: Handles popups (
window.open) as independent system apps. - Responsive Layout: System UI that adapts to portrait, landscape, and custom screen ratios.
- Zero-SDK Requirements: Hosts any standard web page without requiring a framework or SDK.
- Main Process: Electron 39
- Renderer: React 19 + Vite 7
- Styling: Tailwind CSS 4
- Animations/Gestures: Framer Motion
- Icons: Lucide React
# Clone the repository
git clone https://github.com/emarock/webdeck.git
# Navigate to the project directory
cd webdeck
# Install dependencies
npm installTo quickly build and run the application:
npm run devFor advanced development with Hot Module Replacement (HMR) (requires two terminals):
# Terminal 1: Start Vite dev server
npm run dev:renderer
# Terminal 2: Start Electron pointing to the dev server
npm run dev:electronTo build the React application for the renderer:
npm run build- Full support for development and testing.
- Launching in fullscreen might cover the Dock/MenuBar.
- Designed for Windows 11 / Windows IoT Enterprise.
- Optimized for kiosk-mode deployment on touchscreens.
- Ideal for lightweight Linux distributions in kiosk mode.
- Requires standard X11/Wayland dependencies for Electron.
Available apps are managed through a hierarchical configuration system. The shell looks for the following files in order and uses the first one it finds:
apps.dev.json: Local development overrides (Git ignored).apps.user.json: Personal user configuration (Git ignored).apps.json: Default system configuration (Versioned).
The JSON structure should contain an array of app objects:
{
"apps": [
{
"id": "my-app",
"title": "My Application",
"url": "https://example.com",
"symbol": "🚀"
}
]
}Note: The Home app (id: "launcher") is automatically added by the system and doesn't need to be defined in your config files.
This project is licensed under the ISC License.