Isis is a desktop and mobile app from horus backend.
README
A modern multi-platform e-commerce application built with SwiftUI for iOS and macOS. ISIS lets customers browse products, manage a shopping cart, track orders, and manage their profile โ while giving admins full control over products, categories, users, and orders.
| Platform | Minimum Version | Navigation | |----------|----------------|------------| | iOS | 17.0 | TabView (5 tabs) | | macOS | 14.0 | NavigationSplitView + sidebar |
Both targets share models, networking, ViewModels, and reusable UI components from the Shared/ directory.
Views (SwiftUI)
โโโ @Observable ViewModels
โโโ APIClient (Swift Actor)
โโโ REST API (http://<host>:8080)
@Observable macro (no Combine required)APIClient for thread-safe HTTP operationsOsirisApp/
โโโ iOS/
โ โโโ OsirisApp.swift # App entry point
โ โโโ Info.plist
โ โโโ Views/
โ โโโ RootView.swift # TabView navigation
โ โโโ Auth/
โ โโโ Products/
โ โโโ Cart/
โ โโโ Orders/
โ โโโ Profile/
โ โโโ Admin/
โโโ macOS/
โ โโโ OsirisApp.swift
โ โโโ Info.plist
โ โโโ Views/
โ โโโ RootView.swift # NavigationSplitView sidebar
โ โโโ Auth/
โ โโโ Products/
โ โโโ Cart/
โ โโโ Orders/
โ โโโ Profile/
โ โโโ Admin/
โโโ Shared/
โ โโโ Models/
โ โ โโโ Models.swift # Data models & API types
โ โโโ Networking/
โ โ โโโ APIClient.swift # HTTP client, token refresh
โ โ โโโ KeychainService.swift
โ โโโ ViewModels/
โ โ โโโ AuthViewModel.swift
โ โ โโโ ProductsViewModel.swift
โ โ โโโ CartViewModel.swift
โ โ โโโ OrdersViewModel.swift
โ โ โโโ AdminViewModel.swift
โ โ โโโ ProfileViewModel.swift
โ โโโ Views/
โ โ โโโ ProductImageView.swift
โ โ โโโ ProductFormView.swift
โ โ โโโ CategoryFormView.swift
โ โ โโโ StatusBadge.swift
โ โโโ Utilities/
โ โโโ Utilities.swift
โโโ project.yml # xcodegen configuration
โโโ OsirisApp.xcodeproj/
APIClient is a Swift actor singleton (APIClient.shared) that handles all HTTP communication.
Base URL: http://192.168.0.13:8080 (local development โ update APIConfig.baseURL for other environments)
Authentication: Bearer JWT tokens stored securely in the Keychain. On a 401 response the client automatically refreshes the access token and retries the original request once.
| Resource | Method | Path |
|----------|--------|------|
| Auth | POST | /auth/login, /auth/register, /auth/logout, /auth/logout-all, /auth/forgot-password, /auth/reset-password, /auth/refresh |
| Users | GET/PUT/DELETE | /users/me |
| Products | GET/POST/PUT/DELETE | /products, /products/{id} |
| Cart | GET/POST/PUT/DELETE | /cart, /cart/items, /cart/items/{id} |
| Orders | GET/POST/DELETE | /orders, /orders/{id}, /orders/checkout, /orders/{id}/cancel |
| Categories | GET/POST/PUT/DELETE | /categories, /categories/{id} |
| Admin | GET/PUT | /admin/users, /admin/users/{id}/role, /admin/orders, /admin/orders/{id}/status |
All prices are stored and transmitted in cents (integer) and formatted to USD by the formatPrice utility.
AuthResponse // accessToken, refreshToken
UserResponse // id, name, email, role, emailVerified
ProductResponse // id, name, description, price (cents), stock, imageUrl, category
CategoryResponse // id, name, description
CartResponse // id, items, total (cents)
OrderResponse // id, status, totalAmount, createdAt, items
Page<T> // content, totalElements, totalPages
Order status values: PENDING ยท PROCESSING ยท SHIPPED ยท DELIVERED ยท CANCELLED
brew install xcodegen)# Clone the repo
git clone <repo-url>
cd OsirisApp
# Generate the Xcode project
xcodegen generate
# Open in Xcode
open OsirisApp.xcodeproj
Select the OsirisApp-iOS or OsirisApp-macOS scheme and run.
Note: The backend URL is hard-coded in
Shared/Networking/APIClient.swift(APIConfig.baseURL). Change it to point at your server before building.
None. The app relies exclusively on Apple frameworks:
MIT