Prerequisites
System Requirements
- macOS: 13.0 (Ventura) or later
- Mac: Apple Silicon or Intel
- Xcode: 16.0 or later
- Command Line Tools: Latest version
Installing Xcode
- Download Xcode from the Mac App Store
- Open Xcode and accept license agreement
- Install additional components when prompted
Verify Installation
Clone Repository
Project Structure
The repository structure:Build Steps
Option 1: Xcode GUI
-
Open Project
Double-click
typesteps.xcodeprojor: - Select Target In Xcode toolbar, ensure “typesteps” scheme is selected and “My Mac” is the destination.
-
Build
- Click Product > Build (⌘B)
- Or click the Play button to build and run (⌘R)
- Run Click the Play button or press ⌘R
Option 2: Command Line
Build from terminal:Configuration
Signing & Capabilities
- In Xcode, select the project in the navigator
- Select the “typesteps” target
- Go to “Signing & Capabilities” tab
- Set your development team
- Xcode will automatically manage signing
Required Entitlements
The app requires these entitlements (already configured):First Launch
Grant Permissions
On first run, TypeSteps will:- Show Onboarding Welcome screen explaining the app
- Request Accessibility Permission Click “Grant Access” to open: System Settings > Privacy & Security > Accessibility Enable TypeSteps in the list.
- Request Notification Permission Allow notifications for daily goal reminders.
Debugging Permission Issues
If keystroke tracking doesn’t work:-
Check Accessibility
-
Manually Grant Permission
- Open System Settings
- Go to Privacy & Security > Accessibility
- Click the lock to make changes
- Add TypeSteps if not listed
- Check the checkbox next to TypeSteps
- Restart the App After granting permission, quit and relaunch.
Development Workflow
Hot Reload
SwiftUI supports live previews:- Open any View file (e.g.,
DashboardView.swift) - Click “Resume” in the preview pane
- Edit code and see changes instantly
Debugging
Print Statements:- Click line number gutter in Xcode
- Run app with debugger (⌘R)
- Code will pause at breakpoint
- Inspect variables in debug area
- Run app with debugger
- Click Debug View Hierarchy button in debug bar
- Inspect SwiftUI view tree
Testing Changes
Test Keystroke Counting:- Run the app
- Grant Accessibility permission
- Type in any application
- Check menu bar for count updates
- Open dashboard to verify stats
- Type some characters
- Quit the app (⌘Q)
- Relaunch
- Verify counts persist
Build Configurations
Debug Build
For development:- Includes debug symbols
- No optimizations
- Enables console logging
- Faster compilation
Release Build
For distribution:- Optimized for performance
- Smaller binary size
- No debug symbols
- Code signing required
Common Build Issues
Issue: “No signing identity found”
Solution:- Go to Signing & Capabilities in Xcode
- Select your development team
- Check “Automatically manage signing”
Issue: “Command Line Tools not found”
Solution:Issue: “Target has been disabled”
Solution:- Select project in navigator
- Select the target
- Check “Enable Hardened Runtime”
Issue: “Accessibility permission not working”
Solution:- Fully quit the app
- Remove from Accessibility list in System Settings
- Rebuild and relaunch
- Grant permission again
Creating Distribution Build
Archive for Distribution
- Set Scheme to Release Product > Scheme > Edit Scheme Set Run configuration to “Release”
- Archive Product > Archive Wait for build to complete
-
Distribute
In Organizer:
- Select archive
- Click “Distribute App”
- Choose distribution method:
- Developer ID (for direct distribution)
- Mac App Store (for App Store release)
Export as .app
For local distribution:- Build in Release mode
-
Find TypeSteps.app in build folder:
-
Navigate to:
- Copy to Applications or compress for sharing
Next Steps
- Read Architecture Guide to understand code structure
- Check Contributing Guide for code standards
- Review Data Storage to understand data flow
- Explore Keystroke Listener for event monitoring details
Getting Help
Stuck? Try these resources:- Check existing GitHub issues
- Review Xcode build logs for errors
- Search Apple Developer documentation
- Open a new issue with:
- macOS version
- Xcode version
- Full error message
- Steps to reproduce