vPeng boots, asks your name, locks, unlocks and runs real apps. One HTML file. No install, no account, no internet needed. Your data stays on the device.
A real progress bar, then setup, then lock. It feels like unboxing a phone, not opening a page.
Long press any icon and everything starts jiggling. Drag apps anywhere you like and your layout is remembered.
Your name, notes, photos, account, wallpaper, bezel colour and app layout all persist. Close the tab, come back, still there.
The Downloader ships 12 working utilities. Install them onto your home screen, remove them whenever you like.
Every app below is real code, not screenshots. Notes save as you type, the calculator does the maths, the camera taps the real sensor, and Weather pulls live readings off the internet.
That is the whole point of vPeng. Adding an app is one entry in a list, plus one render function. Nothing else in the file needs to change.
Give it an id, a name, an icon, a colour gradient and whether it sits in the dock.
RENDER.yourid = (body, app) => { ... } gets the app body element. Put whatever HTML you want in it.
Push into state.data and call save(). It persists automatically.
// 1. the app appears on the grid { id:'timer', name:'Timer', icon:'⏱', color:'linear-gradient(160deg,#ff9f0a,#c10f36)' } // 2. the app does something RENDER.timer = (body) => { body.innerHTML = `<button class="ios-btn" id="go">Start</button>`; body.querySelector('#go').onclick = () => { state.data.timers.push({ id: uid(), at: Date.now() }); save(); // 3. it is now permanent toast('timer started'); }; };
The demo opens on its own page so you can resize it, bookmark it, or drop it on your phone home screen.
cd vpeng-web
python3 -m http.server 8080
# then open http://localhost:8080