Quick Start

Create and run your first tulip site in under a minute.

1. Create a project

Run the interactive init command:

tulip init my-site

tulip will prompt you for a few details:

Site name: My Site
Description: A personal blog

This creates the full project structure with starter templates, a layout, and a sample page.

2. Start the dev server

cd my-site
tulip serve

This builds your site and starts a local server at http://localhost:3000. The dev server watches all files for changes and reloads the browser automatically via WebSocket — no manual refresh needed.

3. Edit a page

Open pages/index.tulip in your editor. You'll see a template that extends the main layout:

@extends('layouts/main')

@section('content')
<div>
    <h1>Welcome to {{ site.name }}</h1>
    <p>{{ site.description }}</p>
</div>
@endsection

Make a change and save — the browser updates instantly.

4. Add a new page

Create a new file at pages/about.tulip:

@extends('layouts/main')

@section('content')
<div>
    <h1>About</h1>
    <p>This is my about page.</p>
</div>
@endsection

It's available immediately at http://localhost:3000/about/.

5. Add markdown content

Create a file at content/hello.md:

---
title: Hello World
layout: layouts/main
---

# Hello World

This is a markdown page rendered by tulip.

6. Build for production

tulip build

This compiles everything into static HTML in the dist/ directory. If Tailwind is enabled, CSS is generated automatically. The output is plain HTML that you can deploy anywhere: GitHub Pages, Netlify, Vercel, S3, or any static host.