Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions ios/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# TimesheetApp iOS client

## Prerequisites

- macOS with Xcode 26.6 or later
- XcodeGen (`/opt/homebrew/bin/xcodegen`)
- An iOS 17 or later simulator

The app uses only Foundation, SwiftUI, and system frameworks. XcodeGen is the
source of truth for the Xcode project:

```sh
cd ios
xcodegen generate
```

## Run the backend

From the repository root:

```sh
cd backend
npm install
npm run dev
```

The development backend listens on port 3001. The simulator can reach a
backend running on the Mac at `http://localhost:3001`.

## Point the app at another host

On the login screen, expand **Advanced** and edit **Server URL**. The value is
stored in the app's settings for the next launch. For a physical device, use
the Mac's LAN IP and ensure the backend is bound to an address reachable by the
device.

## Build and test

```sh
xcodebuild -project TimesheetApp.xcodeproj \
-scheme TimesheetApp \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' build

xcodebuild -project TimesheetApp.xcodeproj \
-scheme TimesheetApp \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' test
```
500 changes: 500 additions & 0 deletions ios/TimesheetApp.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
runPostActionsOnFailure = "NO">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "431A7BD4ABBF7F1DC4A8251B"
BuildableName = "TimesheetApp.app"
BlueprintName = "TimesheetApp"
ReferencedContainer = "container:TimesheetApp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
onlyGenerateCoverageForSpecifiedTargets = "NO">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "431A7BD4ABBF7F1DC4A8251B"
BuildableName = "TimesheetApp.app"
BlueprintName = "TimesheetApp"
ReferencedContainer = "container:TimesheetApp.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "69C2FB1DFE7D6351B1C346F1"
BuildableName = "TimesheetAppTests.xctest"
BlueprintName = "TimesheetAppTests"
ReferencedContainer = "container:TimesheetApp.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<CommandLineArguments>
</CommandLineArguments>
</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 = "431A7BD4ABBF7F1DC4A8251B"
BuildableName = "TimesheetApp.app"
BlueprintName = "TimesheetApp"
ReferencedContainer = "container:TimesheetApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "431A7BD4ABBF7F1DC4A8251B"
BuildableName = "TimesheetApp.app"
BlueprintName = "TimesheetApp"
ReferencedContainer = "container:TimesheetApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
20 changes: 20 additions & 0 deletions ios/TimesheetApp/Assets.xcassets/AppAccent.colorset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"colors" : [
{
"idiom" : "universal",
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.850",
"green" : "0.350",
"red" : "0.180"
}
}
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
6 changes: 6 additions & 0 deletions ios/TimesheetApp/Assets.xcassets/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
41 changes: 41 additions & 0 deletions ios/TimesheetApp/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Timesheet</string>
<key>CFBundleIdentifier</key>
<string>ai.cognition.workshops.timesheet</string>
<key>CFBundleName</key>
<string>TimesheetApp</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>UILaunchScreen</key>
<dict/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
</dict>
</plist>
Loading