Installation
Prism is distributed as a Swift package. No Homebrew, no CocoaPods — add it to your Package.swift.
Requirements
| Requirement | Minimum |
|---|
| Swift | 6.3+ |
| Xcode | 16.4+ |
| iOS / macOS / tvOS / watchOS / visionOS | 26+ |
PrismServer uses Network.framework — macOS only for server targets. Client modules work on all Apple platforms.
Swift Package Manager
Client app (iOS/macOS)
// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "my-app",
platforms: [.iOS(.v17), .macOS(.v14)],
dependencies: [
.package(url: "https://github.com/byescaleira/prism.git", from: "4.4.0")
],
targets: [
.target(
name: "my-app",
dependencies: [
.product(name: "Prism", package: "prism")
]
)
]
)
import Prism gives you PrismUI, PrismArchitecture, PrismNetwork, PrismStorage, PrismSecurity, PrismIntelligence, and PrismCapabilities.
Server API
// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "my-server",
platforms: [.macOS(.v14)],
dependencies: [
.package(url: "https://github.com/byescaleira/prism.git", from: "4.4.0")
],
targets: [
.executableTarget(
name: "my-server",
dependencies: [
.product(name: "PrismServer", package: "prism")
]
)
]
)
Full-stack (client + server)
// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "my-project",
platforms: [.iOS(.v17), .macOS(.v14)],
dependencies: [
.package(url: "https://github.com/byescaleira/prism.git", from: "4.4.0")
],
targets: [
.target(name: "App", dependencies: [.product(name: "Prism", package: "prism")]),
.executableTarget(name: "Server", dependencies: [.product(name: "PrismServer", package: "prism")])
]
)
Pin to a specific version for production: .package(url: "...", exact: "4.4.0"). Use from: for automatic minor/patch updates.
Available Products
Import only what you need:
| Product | Includes |
|---|
Prism | Umbrella — UI, Architecture, Network, Foundation, Intelligence, Capabilities, Video |
PrismServer | HTTP server, routing, middleware, database, WebSocket, GraphQL, MCP |
PrismUI | 100+ components, design tokens, theming |
PrismArchitecture | Store, reducer, middleware, router |
PrismNetwork | HTTP client, WebSocket client, cache, retry |
PrismStorage | Defaults, Disk, Memory, SwiftData, Keychain |
PrismSecurity | Biometrics, encryption, cert pinning, JWT |
PrismIntelligence | CoreML, Apple Intelligence, NLP/RAG |
PrismGamification | Challenges, streaks, leaderboards |
PrismCapabilities | StoreKit, HealthKit, Camera, Location |
PrismFoundation | Core utilities — logging, extensions, protocols |
Verify Installation
import Prism
struct ContentView: View {
var body: some View {
PrismButton("Hello, Prism!", variant: .filled) {
print("It works!")
}
.prismTheme(.default)
}
}
If it compiles, you’re good. Open in Xcode to run on simulator.import PrismServer
let server = PrismHTTPServer(port: 8080)
await server.get("/") { _ in
.json(["status": "ok", "framework": "Prism"])
}
try await server.start()
try await Task.sleep(for: .seconds(.max))
swift run
curl http://localhost:8080
# {"status":"ok","framework":"Prism"}
IDE Setup
Xcode resolves dependencies automatically. Full autocomplete, jump-to-definition, and debugging. Install the Swift extension for SourceKit-LSP integration. swift build # Compile
swift run # Build and run
swift test # Run tests
Server: Docker & Scaffolding
# Build stage
FROM swift:6.0-jammy AS builder
WORKDIR /app
COPY Package.swift Package.resolved ./
RUN swift package resolve
COPY Sources/ Sources/
RUN swift build -c release
# Run stage
FROM swift:6.0-jammy-slim
WORKDIR /app
COPY --from=builder /app/.build/release/my-server .
EXPOSE 8080
CMD ["./my-server"]
docker build -t my-server .
docker run -p 8080:8080 my-server
import PrismServer
try PrismServerScaffold.generate(name: "my-api", directory: "./my-api")
Creates a ready-to-run project with Package.swift, main.swift, Dockerfile, and .gitignore.
Server configuration (.env)
Prism reads configuration from environment variables and .env files via PrismConfig:PORT=3000
HOST=0.0.0.0
DATABASE_PATH=./data/app.db
PRISM_ENV=production
let config = PrismConfig.load()
let port = config.port // from PORT (default 8080)
let isProd = config.isProduction // checks PRISM_ENV == "production"
let dbPath = config.get("DATABASE_PATH", default: ":memory:")
Supports environment profiles: .env → .env.{PRISM_ENV} → environment variables (highest priority).
Next Steps
Quickstart
Build an iOS app or server API — pick your path.
UI Components
Explore 100+ SwiftUI components with design tokens.
State Management
Build reactive apps with PrismStore and reducers.
Server Core
Routing, middleware pipeline, request/response lifecycle.