| # Templates |
|
|
| **Start your projects faster with pre-built templates.** |
|
|
| Templates are ready-to-use website starting points that include complete file structures, styling, and functionality. Use them to skip the initial setup and start customizing right away. |
|
|
| --- |
|
|
| ## What Are Templates? |
|
|
| Templates are complete website projects that you can use as starting points: |
|
|
| - **Complete structure** - All HTML, CSS, and JavaScript files |
| - **Professional design** - Ready-to-use layouts and styling |
| - **Customizable** - Modify anything to match your needs |
| - **Learning resources** - Study well-structured code |
|
|
| **Think of templates as:** |
| - Website blueprints you can build upon |
| - Starter kits that save time |
| - Examples of best practices |
| - Shortcuts to professional results |
|
|
| --- |
|
|
| ## Template Types |
|
|
| Each template has a **runtime** that determines how the project is built and previewed. The runtime badge is shown on each template card. |
|
|
| | Runtime | Description | |
| |---------|-------------| |
| | **Static** | Pure HTML, CSS, and JavaScript (ES module imports supported) | |
| | **Handlebars** | HTML, CSS, and JavaScript with Handlebars templating | |
| | **React** | Component-based React + TypeScript with automatic bundling | |
| | **Preact** | Lightweight React alternative (~3KB) with signals support | |
| | **Svelte** | Svelte 5 with compile-time reactivity and runes | |
| | **Vue** | Vue 3 with Composition API and SFC support | |
| | **Python** | Python scripts via Pyodide WASM, running in an interactive Console | |
| | **Lua** | Lua scripts via wasmoon WASM, running in an interactive Console | |
|
|
| Some templates also include **backend features** โ edge functions, database schema, server functions, and secrets. These show a "Backend" badge and require Server Mode for full functionality. In Browser Mode, backend templates create the frontend files normally. |
|
|
| --- |
|
|
| ## Built-in Templates |
|
|
| ### Website Starter (Project) |
|
|
| Minimal starting point with basic structure. |
|
|
| **Includes:** |
| - Single `index.html` |
| - Basic CSS file |
| - Empty JavaScript file |
| - Clean slate for building |
|
|
| **Best for**: Starting from scratch with minimal setup |
|
|
| ### Starter (Handlebars) |
|
|
| Handlebars-powered website with templating and partials. |
|
|
| **Includes:** |
| - `index.html` with Handlebars partial includes |
| - `/templates/` directory for reusable partials |
| - `data.json` for template data |
| - `.PROMPT.md` with Handlebars-specific AI instructions |
|
|
| **Best for**: Sites that benefit from reusable components (navigation, footer) and data-driven content |
|
|
| ### Example Studios (Project) |
|
|
| A multi-page agency portfolio showing OSW Studio's capabilities. |
|
|
| **Includes:** |
| - Multiple HTML pages with Handlebars partials |
| - `data.json` for site-wide data (site name, navigation, social links) |
| - Responsive design with modern CSS |
| - Interactive elements (portfolio gallery, contact form) |
|
|
| **Best for**: Learning how OSW Studio works, understanding Handlebars partials |
|
|
| ### Starter (React + TypeScript) |
|
|
| Component-based React app with TypeScript and automatic bundling. |
|
|
| **Includes:** |
| - `index.html` shell with bundle references |
| - `src/main.tsx` entry point |
| - `src/App.tsx` Hello World component |
| - `.PROMPT.md` with React-specific AI instructions |
|
|
| **Best for**: Starting a React app from scratch with AI, component-driven UIs |
|
|
| ### React Demo: Task Tracker (Project) |
|
|
| Interactive task tracker showcasing React components, state management, and typed props. |
|
|
| **Includes:** |
| - `index.html` shell with bundle references |
| - `src/main.tsx` entry point |
| - `src/App.tsx` with `useState` for task management |
| - `src/TaskForm.tsx` controlled input with form submit |
| - `src/TaskItem.tsx` checkbox toggle and delete |
| - `src/App.css` styles |
|
|
| **Best for**: Learning React in OSW Studio, exploring component composition and state |
|
|
| ### Starter (Preact + TypeScript) |
|
|
| Lightweight React alternative with signals for reactive state. |
|
|
| **Includes:** |
| - `index.html` shell with bundle references |
| - `src/main.tsx` entry point |
| - `src/App.tsx` Hello World component |
| - `.PROMPT.md` with Preact-specific AI instructions |
|
|
| **Best for**: Small, fast apps where bundle size matters. Same API as React but ~3KB |
|
|
| ### Starter (Svelte) |
|
|
| Svelte 5 app with compile-time reactivity and runes. |
|
|
| **Includes:** |
| - `index.html` shell with bundle references |
| - `src/main.ts` entry point |
| - `src/App.svelte` counter component using `$state()` rune |
| - `.PROMPT.md` with Svelte-specific AI instructions |
|
|
| **Best for**: Apps that benefit from compile-time optimization, scoped styles, and minimal boilerplate |
|
|
| ### Starter (Vue) |
|
|
| Vue 3 app with Composition API and single-file components. |
|
|
| **Includes:** |
| - `index.html` shell with bundle references |
| - `src/main.ts` entry point |
| - `src/App.vue` counter component using `ref()` and `@click` |
| - `.PROMPT.md` with Vue-specific AI instructions |
|
|
| **Best for**: Progressive apps, gentle learning curve, familiar HTML-like template syntax |
|
|
| ### Starter (Python) |
|
|
| Python script running in the browser via Pyodide WASM. |
|
|
| **Includes:** |
| - `main.py` entry point |
| - `.PROMPT.md` with Python-specific AI instructions |
| - Runs in interactive Console (not live preview) |
|
|
| **Best for**: Scripts, data processing, algorithms, learning Python |
|
|
| ### Starter (Lua) |
|
|
| Lua script running in the browser via wasmoon WASM. |
|
|
| **Includes:** |
| - `main.lua` entry point |
| - `.PROMPT.md` with Lua-specific AI instructions |
| - Runs in interactive Console (not live preview) |
|
|
| **Best for**: Scripting, game logic prototyping, learning Lua |
|
|
| ### Landing Page with Contact Form (Backend) |
|
|
| Professional landing page with a working contact form powered by Resend email. |
|
|
| **Includes:** |
| - Single-page design with contact form |
| - 2 edge functions (`submit-contact`, `list-messages`) |
| - Database schema for storing messages |
| - Optional Resend email integration (requires API key) |
|
|
| **Best for**: Business landing pages, lead capture, contact forms |
|
|
| ### Blog with Comments (Backend) |
|
|
| Static blog with user authentication and moderated comments. |
|
|
| **Includes:** |
| - Static HTML blog posts in `/blog/` directory |
| - Handlebars partials for navigation, footer, and comments section |
| - `data.json` post index for the home page |
| - 6 edge functions (comments, auth: register, login, logout, auth-status) |
| - Database schema for comments, users, and sessions |
|
|
| **File structure:** |
| ``` |
| /data.json โ Site metadata + posts array |
| /index.html โ Blog home (renders post list via Handlebars) |
| /blog/hello-world.html โ Static blog post with {{> comments}} partial |
| /blog/getting-started.html โ Static blog post with {{> comments}} partial |
| /styles/style.css โ All styles |
| /scripts/main.js โ Comments + auth JS (no post loading) |
| /templates/navigation.hbs โ Nav partial (uses {{siteName}}, {{navigation}}) |
| /templates/footer.hbs โ Footer partial |
| /templates/comments.hbs โ Comments section partial (lazy-loaded) |
| ``` |
|
|
| **How it works:** |
| - Blog posts are individual HTML files โ no database needed for content |
| - The home page uses `{{#each posts}}` from `data.json` to list posts |
| - Post links like `/blog/hello-world.html` are in static HTML, so the static builder correctly rewrites them for published deployments under `/deployments/{id}/` |
| - Only comments and auth remain dynamic (edge functions) |
| - In Browser Mode, comments fall back to localStorage |
|
|
| **Adding new posts:** |
| 1. Create a new HTML file in `/blog/` (e.g., `/blog/my-post.html`) |
| 2. Include `{{> navigation}}`, `{{> comments}}`, and `{{> footer}}` partials |
| 3. Add an entry to the `posts` array in `/data.json` |
| 4. Or just ask the AI to create a new post! |
|
|
| **Best for**: Personal blogs, content sites with community interaction |
|
|
| --- |
|
|
| ## Using Templates |
|
|
| ### Create Project from Template |
|
|
| 1. Click **Projects** in sidebar |
| 2. Click **+ New Project** |
| 3. Select **Use a template** |
| 4. Browse available templates |
| 5. Click on a template to preview |
| 6. Click **Use This Template** |
| 7. Name your project |
| 8. Click **Create** |
|
|
| Your project opens with all template files ready to customize. |
|
|
| **Backend templates in Server Mode:** When you create a project from a backend template, OSW Studio automatically syncs the project to the server, creates a deployment, and provisions all backend features (database tables, edge functions, server functions, secret placeholders). You'll see a summary of what was provisioned. |
|
|
| ### Customize the Template |
|
|
| Once your project is created, modify it like any other project: |
|
|
| **Using AI:** |
| ``` |
| Change the color scheme to blue and green |
| ``` |
|
|
| ``` |
| Replace the hero section with a full-width image banner |
| ``` |
|
|
| ``` |
| Add a contact form to the contact page |
| ``` |
|
|
| **Manually:** |
| - Edit files directly in the code editor |
| - Add/remove files as needed |
| - Update content and styling |
|
|
| --- |
|
|
| ## Creating Your Own Templates |
|
|
| Turn any project into a reusable template. |
|
|
| ### When to Create Templates |
|
|
| Create templates for: |
| - Website structures you build often |
| - Client starter kits |
| - Personal boilerplate code |
| - Team standards |
|
|
| ### How to Create a Template |
|
|
| 1. **Build your project** |
| - Create a complete, working website |
| - Include all files and assets |
| - Test thoroughly |
|
|
| 2. **Create a template** |
| - Open the project |
| - Click **Menu** (โฎ) โ **Create a Template** |
| - Fill in template information: |
| - Name |
| - Description |
| - Category |
| - Tags |
| - Preview image (optional) |
| - The template is saved to your instance's template library |
|
|
| 3. **Use your template** |
| - Find it in the Templates view |
| - Create new projects from it |
| - Export to `.oswt` from the Templates view to share with others |
|
|
| ###What Makes a Good Template |
|
|
| **โ
Include:** |
| - Clear, organized file structure |
| - Commented code for guidance |
| - Responsive design |
| - Common pages (home, about, contact) |
| - Reusable components |
|
|
| **โ Avoid:** |
| - Personal/client-specific content |
| - Hardcoded data that should be dynamic |
| - Overly complex structures |
| - Unnecessary files |
|
|
| --- |
|
|
| ## Managing Templates |
|
|
| ### Browse Templates |
|
|
| 1. Click **Templates** in sidebar |
| 2. View available templates |
| 3. Filter by category or search |
| 4. Click to preview |
|
|
| ### Delete Templates |
|
|
| 1. Go to Templates view |
| 2. Find the template |
| 3. Click **Delete** (trash icon) |
| 4. Confirm deletion |
|
|
| **Note**: Built-in templates can't be deleted. |
|
|
| --- |
|
|
| ## Importing & Exporting Templates |
|
|
| ### Export a Template |
|
|
| Share your templates with others: |
|
|
| 1. Go to **Templates** view |
| 2. Find your template |
| 3. Click **Export** (download icon) |
| 4. Save the template file (`.oswt`) |
|
|
| ### Export a Deployment as Template |
|
|
| In Server Mode, export a published deployment with its backend features: |
|
|
| 1. Go to **Deployments** view |
| 2. Click the dropdown menu on a deployment card |
| 3. Select **Export as Template** |
| 4. Backend features (edge functions, database schema, server functions, secrets) are automatically included |
|
|
| ### Import a Template |
|
|
| Use templates from others: |
|
|
| 1. Click **Templates** in sidebar |
| 2. Click **Import Template** |
| 3. Select template file |
| 4. Template appears in your library |
|
|
| --- |
|
|
| ## Template Tips |
|
|
| **๐ก Start with a template** |
| Even if you'll heavily customize it, starting from a template is faster than from scratch |
|
|
| **๐ก Create templates for repetition** |
| Building similar sites for clients? Create a template once, reuse forever |
|
|
| **๐ก Keep templates simple** |
| Generic templates are more reusable than highly specific ones |
|
|
| **๐ก Document your templates** |
| Add comments in the code explaining sections and how to customize |
|
|
| **๐ก Update your templates** |
| Improve them over time as you learn better patterns |
|
|
| --- |
|
|
| ## Templates vs Skills |
|
|
| **Templates** = Starting point for a project |
| - Complete file structure for any runtime (Static, Handlebars, React, Preact, Svelte, Vue, Python, Lua) |
| - Some templates include backend features (edge functions, database schema, secrets) |
| - Backend features are provisioned automatically in Server Mode |
|
|
| **Skills** = Instructions for AI |
| - Markdown documents |
| - Teach AI your preferences |
| - Guide AI's behavior |
|
|
| Use templates to start projects. Use skills to improve how AI builds them. |
|
|
| **[Learn about Skills โ](?doc=skills)** |
|
|
| --- |
|
|
| ## Common Questions |
|
|
| **Q: Can I modify templates after creating a project?** |
| A: Yes! Once you create a project from a template, it's yours to modify completely. |
|
|
| **Q: Do I need to credit template authors?** |
| A: Check the template's license. Most templates you create are yours to use freely. |
|
|
| **Q: Can I sell websites built from templates?** |
| A: Built-in templates are yours to use commercially. For imported templates, check their license. |
|
|
| **Q: How many templates can I have?** |
| A: No limit. Create as many as you need. |
|
|
| **Q: What happens if I use a backend template in Browser Mode?** |
| A: The frontend files are created normally. Backend features (edge functions, database, etc.) require Server Mode โ you'll see a notification about this. |
|
|
| **Q: How do blog posts work in the Blog template?** |
| A: Blog posts are static HTML files in the `/blog/` directory. The home page lists them from `data.json`. Add new posts by creating HTML files and updating `data.json`, or ask the AI to do it. |
|
|
| --- |
|
|
| **Next Steps:** |
|
|
| - **[Getting Started](?doc=getting-started)** - Create your first project |
| - **[Skills](?doc=skills)** - Teach AI your preferences |
| - **[Projects](?doc=projects)** - Manage your work |
|
|
| --- |
|
|
| **Want to create templates?** Build a great project, then export it as a template for future use! |
|
|