dorkhub

slipstream

It's like SwiftUI for the web. Build static sites with Swift and Tailwind CSS.

ClutchEngineering
Swift743 forksMITupdated 6 months ago
visit the demogit clone https://github.com/ClutchEngineering/slipstream.gitClutchEngineering/slipstream

Tailwind CSS

Build static web pages with Swift and Tailwind CSS.

Build Status License


Slipstream is a static site generator built for Swift developers.

Usage

Clone the Slipstream Site Template for a quick-start to deploying a Slipstream site to GitHub Pages.

Create an executable Swift package

mkdir mysite
cd mysite
swift package init --type executable

Add Slipstream to your package dependencies

Slipstream requires macOS 14.

platforms: [
  .macOS("14"),
],
dependencies: [
  .package(url: "https://github.com/jverkoey/slipstream.git", branch: "main"),
],
targets: [
  .executableTarget(name: "mysite", dependencies: [
    .product(name: "Slipstream", package: "slipstream"),
  ]
],

And off you go:

import Foundation
import Slipstream

struct HelloWorld: View {
  var body: some View {
    Text("Hello, world!")
  }
}

print(try renderHTML(HelloWorld()))

Render a sitemap

Slipstream intentionally avoids making strong opinions about how your documents should be structured and written to disk. To help get you started though you can use Slipstream's lightweight sitemap renderer to write a dictionary of Slipstream views to disk:

import Foundation
import Slipstream

struct HelloWorld: View {
  var body: some View {
    Text("Hello, world!")
  }
}

let sitemap: Sitemap = [
  "index.html": HelloWorld()
]

// Assumes this file is located in a Sources/ sub-directory of a Swift package.
guard let projectURL = URL(filePath: #filePath)?
  .deletingLastPathComponent()
  .deletingLastPathComponent() else {
  print("Unable to create URL for \(#filePath)")
  exit(1)
}

let outputURL = projectURL.appending(path: "site")

try renderSitemap(sitemap, to: outputURL)

Documentation

View Slipstream's complete documentation.

Community

To discuss Slipstream-related topics with other Slipstreamers, ask questions, or explore ideas, please use GitHub discussions.

more like this

tungsten-edge

A window-oriented bottom taskbar for macOS — a Dock replacement that organizes by window, not app. 以「窗口」为单位的 macOS 任务条

Swift58

search

search projects, people, and tags