|
| 1 | +# Repository Guidelines |
| 2 | + |
| 3 | +## Project Structure & Module Organization |
| 4 | +- `V2er/` contains the SwiftUI app; feature views live in `View/`, state management in `State/`, and shared configuration (including `Version.xcconfig`) in `Config/`. |
| 5 | +- `V2erTests/` hosts unit tests for reducers, services, and view models; `V2erUITests/` is reserved for UI automation suites. |
| 6 | +- `fastlane/` holds release automation (`Fastfile`, `changelog_helper.rb`), while `scripts/` includes utilities such as `update-version.sh`. |
| 7 | +- Asset bundles (`Assets.xcassets`, `Preview Content/`) and bundled web resources (`www/`) ship with the iOS target; marketing collateral lives in `website/`. |
| 8 | + |
| 9 | +## Build, Test, and Development Commands |
| 10 | +```bash |
| 11 | +xcodebuild -project V2er.xcodeproj -scheme V2er -configuration Debug build # Local debug build |
| 12 | +xcodebuild test -project V2er.xcodeproj -scheme V2er -destination 'platform=iOS Simulator,name=iPhone 14' # Unit/UI tests |
| 13 | +fastlane beta # Validate changelog, bump build number, upload to TestFlight |
| 14 | +fastlane distribute_beta # Distribute an existing TestFlight build to beta groups |
| 15 | +./scripts/update-version.sh 1.2.0 42 # Update MARKETING_VERSION and CURRENT_PROJECT_VERSION |
| 16 | +``` |
| 17 | +Run automation from the repository root; Fastlane expects valid App Store Connect credentials in your environment. |
| 18 | + |
| 19 | +## Coding Style & Naming Conventions |
| 20 | +- Follow Swift API Design Guidelines: `UpperCamelCase` for types, `lowerCamelCase` for values, and keep file-per-feature modules consistent with existing folders (e.g., add Feed views under `V2er/View/Feed/`). |
| 21 | +- Indent with four spaces, prefer SwiftUI composition over UIKit, and scope helpers with `private` extensions to keep reducers and services focused. |
| 22 | +- Keep reducers pure; network side effects belong in service layers under `V2er/State/Networking/`. |
| 23 | + |
| 24 | +## Testing Guidelines |
| 25 | +- Mirror production code structure inside `V2erTests/`; create `FeatureNameTests.swift` alongside the feature reducer or service you touch. |
| 26 | +- Use `xcodebuild test` (above) for local validation; set destinations to match CI simulators (iPhone 14, iOS 17) to avoid config drift. |
| 27 | +- When adding UI work, include a smoke scenario in `V2erUITests/` or capture simulator screenshots for PR reviewers if automation is impractical. |
| 28 | + |
| 29 | +## Commit & Pull Request Guidelines |
| 30 | +- Adopt the conventional short prefix format from history, e.g., `chore: bump version to 1.1.18` or `fix(auth): handle MFA token refresh`; keep messages in English and under 72 characters. |
| 31 | +- Each PR should link the tracking issue, describe user-facing impact, list test evidence (`xcodebuild test`, simulator run), and attach before/after screenshots for UI changes. |
| 32 | +- Update `CHANGELOG.md` and `V2er/Config/Version.xcconfig` together; CI will block TestFlight lanes if the changelog entry is missing. |
0 commit comments