Skip to content

Commit

Permalink
Rebuild homepage with Slipstream.
Browse files Browse the repository at this point in the history
  • Loading branch information
jverkoey committed Aug 5, 2024
1 parent f80d3b3 commit cfe32f4
Show file tree
Hide file tree
Showing 40 changed files with 384 additions and 51 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.DS_Store
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
3 changes: 3 additions & 0 deletions .src/tailwind.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
24 changes: 24 additions & 0 deletions .swiftpm/configuration/Package.resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"originHash" : "8419bb37e6c64d7f6c280f1c951af96cd992524c41c11e5413b2ba126152f3dd",
"pins" : [
{
"identity" : "slipstream",
"kind" : "remoteSourceControl",
"location" : "https://github.com/jverkoey/slipstream.git",
"state" : {
"branch" : "main",
"revision" : "0187aeaac568fc745d543f32228525d9eb0837dd"
}
},
{
"identity" : "swiftsoup",
"kind" : "remoteSourceControl",
"location" : "https://github.com/scinfu/SwiftSoup.git",
"state" : {
"revision" : "e2d11208519549c2e5798d70190472045633f22f",
"version" : "2.7.3"
}
}
],
"version" : 3
}
78 changes: 78 additions & 0 deletions .swiftpm/xcode/xcshareddata/xcschemes/jeffverkoeyen.com.xcscheme
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1600"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Site"
BuildableName = "Site"
BlueprintName = "Site"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Site"
BuildableName = "Site"
BlueprintName = "Site"
ReferencedContainer = "container:">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Site"
BuildableName = "Site"
BlueprintName = "Site"
ReferencedContainer = "container:">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
20 changes: 20 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "jeffverkoeyen.com",
platforms: [
.macOS("14"),
.iOS("17"),
],
dependencies: [
.package(url: "https://github.com/jverkoey/slipstream.git", branch: "main"),
],
targets: [
.executableTarget(name: "Site", dependencies: [
.product(name: "Slipstream", package: "slipstream")
]),
]
)
207 changes: 207 additions & 0 deletions Sources/Site/main.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
import Foundation
import Slipstream

struct SiteLink: View {
let text: String
let destination: URL?

init(_ text: String, destination: URL?) {
self.text = text
self.destination = destination
}

var body: some View {
Link(text, destination: destination)
.padding(4)
.padding(16, condition: .startingAt(.medium))
.border(
.init(.zinc, darkness: 300),
edges: .right,
condition: .init(within: Breakpoint.small..<Breakpoint.medium, state: .hover)
)
.border(
.init(.zinc, darkness: 300),
edges: .bottom,
condition: .init(startingAt: .medium, state: .hover)
)
}
}

struct Site: View {
let desktop = Condition.startingAt(.medium)
var body: some View {
HTML {
Head {
Charset(.utf8)
Title("featherless software design")
Viewport.mobileFriendly
Meta(.description, content: "Jeff Verkoeyen is a software designer under the alias featherless@.")
Meta(.generator, content: "Slipstream")
Meta(.author, content: "Jeff Verkoeyen")
Stylesheet(URL(string: "/css/main.css"))
}
Body {
Container {
VStack(spacing: 8) {
H1 {
Text("featherless")
Linebreak()
Text("software design")
}
.textAlignment(.right)
.padding(.bottom, 16)
.padding(.bottom, 0, condition: desktop)
.margin(.horizontal, .auto, condition: desktop)
.fontWeight(300)

.fontSize(40)
.padding(.top, 75)
.margin(.left, 45)
.backgroundImage(
URL(string: "/gfx/feather.svg"),
size: .size(width: 184, height: 184),
repeat: .no
)

.fontSize(48, condition: desktop)
.padding(.top, 125, condition: desktop)
.padding(.left, 150, condition: desktop)
.padding(.right, 48, condition: desktop)
.backgroundImage(
URL(string: "/gfx/feather.svg"),
size: .size(width: 256, height: 256),
condition: desktop
)

Div {
SiteLink("portfolio", destination: URL(string: "/portfolio"))
SiteLink("blog", destination: URL(string: "http://blog.jeffverkoeyen.com/"))
SiteLink("contact", destination: URL(string: "/contact"))
SiteLink("about", destination: URL(string: "/about"))
}
.fontSize(32)
.fontWeight(300)
.textAlignment(.right)
.display(.flex)
.flexDirection(.y)
.flexGap(.y, width: 8)
.textAlignment(.center, condition: desktop)
.flexDirection(.x, condition: desktop)
.flexGap(.x, width: 8, condition: desktop)
.justifyContent(.center)
.alignItems(.end)
.alignItems(.start, condition: desktop)
}
}
.textColor(.zinc, darkness: 950)
.fontDesign("rounded")
}
.antialiased()
}
.language("en")
}
}

let projectRootURL = URL(filePath: #filePath)
.deletingLastPathComponent()
.deletingLastPathComponent()
.deletingLastPathComponent()
let sourceURL = projectRootURL.appending(path: ".src")

if !FileManager.default.fileExists(atPath: sourceURL.absoluteString) {
try FileManager.default.createDirectory(at: sourceURL, withIntermediateDirectories: true)
}




try """
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./**/*.html"],
theme: {
extend: {},
fontFamily: {
'rounded': ['ui-rounded', '-apple-system', 'system-ui', 'BlinkMacSystemFont', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', 'sans-serif']
},
container: {
center: true
},
screens: {
'sm': '375px',
'md': '900px',
}
},
plugins: [],
}
""".write(
to: projectRootURL.appending(path: "tailwind.config.js"),
atomically: true,
encoding: .utf8
)

try """
@tailwind base;
@tailwind components;
@tailwind utilities;
""".write(
to: sourceURL.appending(path: "tailwind.css"),
atomically: true,
encoding: .utf8
)

let output = try "<!DOCTYPE html>\n" + renderHTML(Site())
try output.write(to: projectRootURL.appending(path: "site/index.html"), atomically: true, encoding: .utf8)

let process = Process()
let pipe = Pipe()
process.standardOutput = pipe
process.executableURL = URL(fileURLWithPath: "/bin/zsh")
process.environment = ["PATH": "/opt/homebrew/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"]
process.arguments = [
"-c",
"cd \(projectRootURL.path(percentEncoded: false)) && npx tailwindcss -i .src/tailwind.css -o ./site/css/main.css --minify",
]

try! process.run()
let data = pipe.fileHandleForReading.readDataToEndOfFile()

guard let standardOutput = String(data: data, encoding: .utf8) else {
FileHandle.standardError.write(Data("Error in reading standard output data".utf8))
fatalError() // or exit(EXIT_FAILURE) and equivalent
// or, you might want to handle it in some other way instead of a crash
}

print(standardOutput)



//module.exports = {
// content: [
// "./index.html",
// "./privacy-policy/*.html",
// "./scanning/*.html",
// "./scanning/extended-pids/*.html",
// "./scanning/repo-status/*.html",
// "./shortcuts/*.html"
// ],
// darkMode: 'media',
// theme: {
// extend: {
// colors: {
// 'sidecar-gray': '#262625',
// }
// },
// fontFamily: {
// 'rounded': ['ui-rounded', '-apple-system', 'system-ui', 'BlinkMacSystemFont', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', 'sans-serif']
// },
// container: {
// center: true
// },
// screens: {
// 'sm': '375px',
// 'md': '900px',
// }
// },
// plugins: [],
//}
51 changes: 0 additions & 51 deletions index.html

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit cfe32f4

Please sign in to comment.