diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4021787
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,11 @@
+# Generated by XcodeGen — project.yml is the source of truth
+Kanban.xcodeproj/
+
+# Xcode
+DerivedData/
+build/
+*.xcresult
+xcuserdata/
+
+# macOS
+.DS_Store
diff --git a/Kanban/Assets.xcassets/AccentColor.colorset/Contents.json b/Kanban/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..7a9d8ed
--- /dev/null
+++ b/Kanban/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1 @@
+{"colors":[{"idiom":"universal"}],"info":{"version":1,"author":"xcode"}}
diff --git a/Kanban/Assets.xcassets/AppIcon.appiconset/Contents.json b/Kanban/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..4e12dbb
--- /dev/null
+++ b/Kanban/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1 @@
+{"images":[],"info":{"version":1,"author":"xcode"}}
diff --git a/Kanban/Assets.xcassets/Contents.json b/Kanban/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..2673658
--- /dev/null
+++ b/Kanban/Assets.xcassets/Contents.json
@@ -0,0 +1 @@
+{"info":{"version":1,"author":"xcode"}}
diff --git a/Kanban/Info.plist b/Kanban/Info.plist
new file mode 100644
index 0000000..0d32009
--- /dev/null
+++ b/Kanban/Info.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Lanework
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ Lanework
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ $(MARKETING_VERSION)
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ $(MACOSX_DEPLOYMENT_TARGET)
+ NSHumanReadableCopyright
+ © 2026 rzen
+ NSPrincipalClass
+ NSApplication
+
+
diff --git a/Kanban/Kanban.entitlements b/Kanban/Kanban.entitlements
new file mode 100644
index 0000000..05cf7fc
--- /dev/null
+++ b/Kanban/Kanban.entitlements
@@ -0,0 +1,12 @@
+
+
+
+
+ com.apple.security.app-sandbox
+
+ com.apple.security.files.user-selected.read-write
+
+ com.apple.security.files.bookmarks.app-scope
+
+
+
diff --git a/Kanban/KanbanApp.swift b/Kanban/KanbanApp.swift
new file mode 100644
index 0000000..19ddb11
--- /dev/null
+++ b/Kanban/KanbanApp.swift
@@ -0,0 +1,12 @@
+import SwiftUI
+
+@main
+struct KanbanApp: App {
+ var body: some Scene {
+ WindowGroup {
+ Text("Lanework")
+ .font(.largeTitle)
+ .padding(80)
+ }
+ }
+}
diff --git a/KanbanTests/KanbanTests.swift b/KanbanTests/KanbanTests.swift
new file mode 100644
index 0000000..8475ec5
--- /dev/null
+++ b/KanbanTests/KanbanTests.swift
@@ -0,0 +1,7 @@
+import Testing
+
+struct ScaffoldTests {
+ @Test func harnessRuns() {
+ #expect(Bool(true))
+ }
+}
diff --git a/KanbanUITests/KanbanUITests.swift b/KanbanUITests/KanbanUITests.swift
new file mode 100644
index 0000000..407e43f
--- /dev/null
+++ b/KanbanUITests/KanbanUITests.swift
@@ -0,0 +1,11 @@
+import XCTest
+
+final class KanbanUITests: XCTestCase {
+ @MainActor
+ func testAppLaunches() throws {
+ let app = XCUIApplication()
+ app.launch()
+ XCTAssertTrue(app.wait(for: .runningForeground, timeout: 30))
+ XCTAssertTrue(app.windows.firstMatch.waitForExistence(timeout: 30))
+ }
+}
diff --git a/project.yml b/project.yml
new file mode 100644
index 0000000..0c08cbd
--- /dev/null
+++ b/project.yml
@@ -0,0 +1,76 @@
+name: Kanban
+options:
+ bundleIdPrefix: dev.rzen.indie
+ deploymentTarget:
+ macOS: "26.0"
+ xcodeVersion: "26.0"
+ defaultConfig: Debug
+
+settings:
+ base:
+ SWIFT_VERSION: "6.0"
+ MACOSX_DEPLOYMENT_TARGET: "26.0"
+ DEVELOPMENT_TEAM: ${APPLE_TEAM_ID}
+ ENABLE_USER_SCRIPT_SANDBOXING: NO
+
+targets:
+ Kanban:
+ type: application
+ platform: macOS
+ sources:
+ - Kanban
+ settings:
+ base:
+ PRODUCT_BUNDLE_IDENTIFIER: dev.rzen.indie.Kanban
+ MARKETING_VERSION: "1.0"
+ INFOPLIST_FILE: Kanban/Info.plist
+ CODE_SIGN_ENTITLEMENTS: Kanban/Kanban.entitlements
+ GENERATE_INFOPLIST_FILE: false
+ SWIFT_STRICT_CONCURRENCY: complete
+ ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
+
+ KanbanTests:
+ type: bundle.unit-test
+ platform: macOS
+ sources:
+ - KanbanTests
+ dependencies:
+ - target: Kanban
+ settings:
+ base:
+ PRODUCT_BUNDLE_IDENTIFIER: dev.rzen.indie.KanbanTests
+ GENERATE_INFOPLIST_FILE: true
+ SWIFT_STRICT_CONCURRENCY: complete
+
+ KanbanUITests:
+ type: bundle.ui-testing
+ platform: macOS
+ sources:
+ - KanbanUITests
+ dependencies:
+ - target: Kanban
+ settings:
+ base:
+ PRODUCT_BUNDLE_IDENTIFIER: dev.rzen.indie.KanbanUITests
+ GENERATE_INFOPLIST_FILE: true
+ SWIFT_STRICT_CONCURRENCY: complete
+
+schemes:
+ Kanban:
+ build:
+ targets:
+ Kanban: all
+ run:
+ config: Debug
+ test:
+ config: Debug
+ gatherCoverageData: false
+ targets:
+ - KanbanTests
+ - KanbanUITests
+ profile:
+ config: Release
+ analyze:
+ config: Debug
+ archive:
+ config: Release