WoozieGetting Started

Project Structure

What every file and folder in a Woozie project does and when you'd use it.

Project Structure

Every Woozie project looks like this:

myapp/
    main.woozie          -- homepage (required)
    woozie.rules         -- config file
    style.woozie         -- custom style overrides (optional)
    script.js            -- custom JavaScript (optional)
    pages/               -- additional pages
        about.woozie
        contact.woozie
    plugins/             -- local reusable components
        navbar.woozie
    comet_modules/       -- installed community packages
    .woozie_build/       -- compiled output (auto-generated, don't edit)

main.woozie

This is your homepage. Every project needs one. It starts with app:

app:
    heading "Hello World"
    text "Welcome to my site."

woozie.rules

Your project config. It's a simple key: value format. No comments allowed in this file.

version: 3.2
theme: dark
title: My Site
font: Inter
lang: en
KeyWhat it doesDefault
themelight or darklight
titlePage title in the browser tabWoozie App
fontAny Google Font nameInter
langHTML language codeen
colorPrimary accent color (any CSS color)purple
faviconPath to your favicon filenone

style.woozie

This is where you override the look of any component. Comments are allowed here with //.

// make cards rounder
card:
    border-radius = 20px

// taller hero
hero:
    padding = 8rem 2rem

Selector names match component names — hero, card, button, nav, etc.

script.js

Drop a script.js file in your project root and Woozie automatically includes it on every page. Write whatever JavaScript you want — DOM manipulation, API calls, animations, anything.

See Custom JavaScript for details.

pages/

Each .woozie file inside pages/ becomes its own page with a clean URL:

  • pages/about.woozie becomes /about
  • pages/contact.woozie becomes /contact
  • pages/pricing.woozie becomes /pricing

plugins/

Put a .woozie file in here and its filename becomes a reusable tag. If you create plugins/navbar.woozie, you can use @navbar in any page after registering it in woozie.rules.

comet_modules/

Community packages installed with woozie add <name> land here. You don't need to touch this folder directly.