Skip to content

byescaleira/prism

Repository files navigation

Release CI Swift 6.3 Platforms Architecture Concurrency License

Prism

A modular Swift package for building Apple-platform apps — shared foundation, networking, architecture, adaptive UI, media, and on-device intelligence.

1188 tests · 212 suites · 8 modules · Swift 6.3 strict concurrency · DocC on every public API


Architecture

┌─────────────────────────────────────────────────┐
│                    Prism                        │  ← umbrella re-export
├──────────┬──────────┬───────────┬───────────────┤
│ PrismUI  │PrismVideo│PrismIntel.│PrismArchitect.│  ← feature modules
├──────────┴──────────┴───────────┴───────────────┤
│                PrismNetwork                     │  ← transport layer
├─────────────────────────────────────────────────┤
│               PrismFoundation                   │  ← zero-dep core
└─────────────────────────────────────────────────┘
Module Role
PrismFoundation Entities, logging, analytics, locale, resources, defaults, formatting
PrismNetwork HTTP client, socket transport, endpoints, caching, FIX protocol
PrismArchitecture Router, store, reducer, middleware — unidirectional data flow
PrismUI Token-driven design system — 80+ components, 4 themes, Apple HIG
PrismVideo Video download helpers and media entities
PrismIntelligence CreateML training, CoreML inference, Apple Intelligence, remote LLM
PrismCapabilities Apple Developer Program capability wrappers — StoreKit, HealthKit, CloudKit, Apple Pay, CallKit, CoreBluetooth, NFC, Camera, GameKit, Location, Motion, Biometrics, App Intents, Nearby Interaction, MultipeerConnectivity
Prism Umbrella — import Prism gives you everything

Install

// Package.swift
dependencies: [
    .package(url: "https://github.com/rafaelesantos/prism.git", from: "1.0.0")
]
import Prism          // everything
import PrismUI        // just design system
import PrismNetwork   // just networking

Requires: Swift 6.3 · Xcode 16.4+ · iOS 26 · macOS 26 · tvOS 26 · watchOS 26 · visionOS 26


PrismUI Design System

Tokens

Six semantic token types drive every visual decision:

Token Purpose Values
ColorToken 28 semantic color roles brand, surfaces, content, feedback
TypographyToken Text styles with weights largeTitle → caption2
SpacingToken 4pt grid system 0–64pt
RadiusToken Continuous corners sm(8) → full(1000)
ElevationToken Shadow hierarchy flat → overlay
MotionToken Reduce-motion-aware instant → expressive

Themes

Theme Description
DefaultTheme Apple HIG system colors, auto light/dark
DarkTheme Always-dark, ignores system appearance
HighContrastTheme Maximum contrast for accessibility
BrandTheme Configurable primary/secondary/accent
// Apply theme
ContentView()
    .prismTheme(DefaultTheme())

// Custom brand
let theme = BrandTheme(primary: .indigo, secondary: .mint, accent: .orange)

Components (60+)

Primitives: Button, Icon, AsyncImage, TextField, Card, Tag, Chip, Divider, LoadingState, ProgressBar, Avatar

Composites: Alert, Banner, Carousel, SearchBar, Toolbar, Toast, Menu, BottomSheet, Tooltip, EmptyState, CountdownTimer

Forms: Toggle, Picker, Slider, SecureField, DatePicker, SegmentedControl, Stepper, TextArea, Rating, PinField, ColorWell

Lists: Row, DisclosureRow, List, Badge, SwipeActions

Layout: AdaptiveStack, Grid, Section, Scaffold, Spacer

Navigation: NavigationView, TabView, Sheet

Usage

// Themed button with async action
PrismButton("Sign In", variant: .filled) {
    await viewModel.signIn()
}

// Validated text field
PrismTextField("Email", text: $email, validation: .pattern(
    "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}",
    "Enter a valid email"
))

// Semantic modifiers
Text("Welcome")
    .prismFont(.title)
    .prismColor(.onBackground)
    .prismPadding(.lg)
    .prismSurface(.surfaceSecondary, radius: .lg)

// Auto-dismissing toast
.prismToast(isPresented: $showToast, "Saved!", icon: "checkmark", style: .success)

// Avatar with status
PrismAvatar(initials: "JD", size: .large, status: .online)

State Management

let store = PrismStore(
    initialState: AppState(),
    reducer: appReducer
)

store.send(.loadData)

Analytics

ContentView()
    .prismAnalytics(FirebaseAnalytics())

// Track screen views
ContentView()
    .prismTrackScreen("Home")

Intelligence

// Train from any Codable
let training = PrismCodableTrainingData(data: houses)
let result = await training.trainRegressor(
    id: "price", name: "House Price", target: \.price
)

// Predict
let client = try await PrismIntelligenceClient.local(modelID: "price")
let prediction = try await client.regress(
    features: ["rooms": .int(3), "area": .double(120)]
)

// Remote LLM
let remote = PrismIntelligenceClient.remote(
    endpoint: url, token: "sk-...", model: "gpt-4"
)
let answer = try await remote.generate("Summarize this document.")

Development

make format          # swift-format in-place
make lint            # strict lint check
make build           # build all targets + tests
make test            # test with coverage
make validate        # format → lint → build → test
make docs            # generate DocC
make docs-serve      # DocC + local server at :8000

Quality

Check Status
Tests 275+ across 44 suites
Concurrency Strict — Sendable, @MainActor, actor isolation
Formatting swift-format enforced in CI
Docs DocC with guides: Getting Started, Tokens, Components, Theming
Themes 4 built-in + custom theme protocol
Accessibility VoiceOver, Dynamic Type, contrast ratios, reduce motion
Snapshot Testing Built-in PrismSnapshotTest for visual regression
WCAG Contrast ratio validation (AA/AAA) via PrismAccessibilityTest

License

MIT


swift · swiftui · ios · macos · swift-package-manager · clean-architecture · design-system · coreml · accessibility · localization · analytics

About

A modular Swift package — foundation, networking, architecture, adaptive UI, media, and on-device intelligence for Apple platforms.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages