A client-side landing page builder for mobile apps — design, preview, and export in your browser.
No backend. No build step. No sign-up. Pick a theme, fill a form, download a ready-to-host static site.
Features · Quick Start · Themes · Project Structure · Adding a Theme
- Live preview — every edit reflects instantly in a sandboxed iframe, with smart fast-paths for color and text changes.
- 5 themes — from minimal editorial to Apple-style liquid glass, all swappable in one click.
- Form-based editing — no code; fill in app name, tagline, features, screenshots, links, and SEO meta.
- Full color & font control — 8 themeable color variables plus font selection per page.
- Image support — drop in your app icon and screenshots.
- Static export — download a self-contained ZIP (HTML + CSS + JS) ready to host anywhere.
- Persistence — autosave to
localStorage, plus JSON import/export to move projects between machines. - Undo / redo — full edit history while you build.
- Responsive editor — desktop split-view collapses to a mobile drawer.
DroidPage is a static site — serve the project root with any HTTP server.
# clone
git clone https://github.com/OneDroid/DroidPage.git
cd DroidPage
# serve (any of these)
python3 -m http.server 8766
# or: npx serve .
# or: php -S localhost:8766Open http://localhost:8766 and start building.
ES6 modules require an HTTP origin — opening
index.htmldirectly viafile://will not load the JS.
- Home (
index.html) — browse the theme gallery. - Click Live Demo to preview a theme, or Edit to open it in the builder.
- Editor (
editor.html) — pick a theme, fill in your content, tune colors, fonts, header, and footer. - Upload your icon and screenshots.
- Download Website — exports a ready-to-host ZIP.
| Theme | ID | Style |
|---|---|---|
| DroidPage Default | droidpage-default |
Clean light, modern product page |
| Dark Glass | droidpage-glass |
Dark glassmorphism, frosted panels, neon accent glow |
| Minimal Editorial | droidpage-editorial |
Serif magazine layout, generous whitespace, ruled sections |
| Playful Gradient | droidpage-playful |
Vibrant gradients, chunky rounded cards, bouncy hover |
| Vision Glass | droidpage-vision |
Apple-style liquid glass over a soft color-mesh backdrop |
| File | Purpose |
|---|---|
index.html |
Home — navbar, hero, theme gallery |
editor.html |
The builder. Accepts ?theme=<id> to preselect a theme |
demo.html |
Standalone live preview. Accepts ?theme=<id>, renders with demo content |
DroidPage/
├── index.html # home / theme gallery
├── editor.html # builder UI
├── demo.html # standalone theme preview
├── assets/
│ ├── css/
│ │ ├── global.css # shared base, consumed by templates
│ │ ├── home.css # home page
│ │ └── editor.css # builder UI
│ ├── js/
│ │ ├── pages/ # page entry points
│ │ │ ├── home.js
│ │ │ ├── editor.js
│ │ │ └── demo.js
│ │ ├── modules/ # shared ES6 modules
│ │ │ ├── renderer.js # {{placeholder}} → HTML
│ │ │ ├── preview.js # live iframe rendering
│ │ │ ├── exporter.js # ZIP export
│ │ │ ├── formManager.js
│ │ │ ├── themeManager.js
│ │ │ └── icons.js
│ │ └── vendor/ # third-party libs (FileSaver)
│ └── img/
├── config/
│ └── themes.json # theme registry + color variables
└── templates/
└── <theme-id>/
├── index.html # {{placeholder}} markup (identical across themes)
└── public/
├── styles/theme.css
├── scripts/theme.js
└── media/ # logo + screenshots
- Templates are plain HTML with
{{placeholder}}tokens.renderer.jssubstitutes form data to produce the final markup. - Shared contract — every theme uses identical placeholders and element IDs, so the renderer, live preview, and editor code work against any theme unchanged. Themes differ only in
theme.css. - Color bridge —
themes.jsondefines 8 color variables per theme (primary_color,bg_color,text_primary,text_secondary,card_bg,border_color,header_bg,footer_bg); eachtheme.cssmaps them to its own CSS custom properties. - Export —
exporter.jsrewrites asset paths to a flat layout and bundlesindex.html+ styles + scripts into a ZIP via JSZip + FileSaver.
- Copy an existing folder, e.g.
templates/droidpage-default/→templates/droidpage-yourtheme/. - Keep
index.htmlandpublic/scripts/theme.jsunchanged (the shared contract). Restyle onlypublic/styles/theme.css. - Map the 8 color variables to your theme's CSS custom properties inside
:root. - Register the theme in
config/themes.jsonwithid,name,description,thumbnail,path, and acolorVarsblock of 8 entries. - Reload — your theme appears in the gallery and editor automatically.
- HTML5 / CSS3 (vanilla, no framework)
- ES6 modules
- JSZip — ZIP generation
- FileSaver.js — client-side download
Fully static — host the project root on GitHub Pages, Netlify, Vercel, Cloudflare Pages, or any static host. Exported landing pages are likewise standalone and host anywhere.
MIT © OneDroid