Development Setup
Prerequisites
Required Software
| Software | Version | Purpose |
|---|---|---|
| macOS | 14.0+ (Sonoma) | Target platform |
| Xcode | 15.0+ | Development IDE |
| Git | Latest | Version control |
Optional Tools
| Tool | Purpose |
|---|---|
| SwiftLint | Code linting |
| SwiftFormat | Code formatting |
| Homebrew | Package management |
GitHub CLI (gh) | Downloads pre-built native libraries from GitHub Releases |
Getting Started
Step 1: Clone and Bootstrap
Step 2: Open in Xcode
Step 3: Configure Signing
- Select TablePro target
- Go to Signing & Capabilities
- Change Team to your own Apple Developer account (free account works for development)
Step 4: Build and Run
- Select the TablePro scheme
- Select My Mac as the destination
- Press
Cmd+Rto build and run


Project Structure
tablepro
TablePro
Core
Database
Plugins
Services
Utilities
Models
Views
ViewModels
Extensions
Theme
Resources
Plugins
TableProPluginKit
MySQLDriverPlugin
PostgreSQLDriverPlugin
SQLiteDriverPlugin
ClickHouseDriverPlugin
...
TableProTests
Libs
scripts
.swiftlint.yml
.swiftformat
Building
Development Build
Release Build
Running Tests
Cmd+U).
Code Quality
SwiftLint
SwiftFormat
Configuration Files
.swiftlint.yml
SwiftLint rules and configuration:- Line length limits
- Function complexity limits
- Disabled rules
- Custom rules
.swiftformat
SwiftFormat options:- Indentation style
- Brace placement
- Import ordering
- Other formatting rules
Development Workflow
- Create feature branch:
git checkout -b feature/my-feature - Make changes
- Lint:
swiftlint lintandswiftformat --lint . - Test:
xcodebuild -project TablePro.xcodeproj -scheme TablePro test -skipPackagePluginValidation - Commit:
git commit -m "Add my feature" - Push:
git push origin feature/my-feature
Logger(subsystem: "com.TablePro", category: "Name").
Troubleshooting
Build fails: Clean withCmd+Shift+K, delete derived data, close/reopen Xcode.
SwiftLint errors: Run swiftlint --fix for auto-fixable issues.
Missing libraries: Run scripts/download-libs.sh and touch Secrets.xcconfig.