Development - samyanez94/Chirpy GitHub Wiki

Development

Run commands from the repository root. The app uses the hosted Supabase backend by default; running it locally is optional.

Run the app

  1. Use an Xcode version that supports the project's iOS 26.5 deployment target.
  2. Copy Chirpy/Configuration/LocalConfiguration.example.plist to Chirpy/Chirpy/LocalConfiguration.plist.
  3. Set ChirpyAPIKey to the personal API key configured on the backend.
  4. Open Chirpy/Chirpy.xcodeproj, select the Chirpy scheme and an iPhone Simulator, then run.

The copied plist is Git-ignored. Its key is embedded in the build, so keep the key and build private. Never put a Supabase service-role key in the app. See Backend: Personal API key for key setup and rotation.

For a local backend, change AppConfiguration.baseURL in Chirpy/Chirpy/AppConfiguration.swift to http://127.0.0.1:54321 for the Simulator, or your Mac's local network address for a physical device.

Tests and previews

In Xcode, choose an iPhone Simulator and use Product › Test (⌘U). Swift Testing covers loading, cancellation, pagination, likes, deletion, shared profile state, networking, and models with fake clients.

SwiftUI previews use PreviewChirpyClient and sample models under Chirpy/Chirpy/Preview Content, without calling the backend. Use the available loaded, empty, error, dark, and large-text previews to check layout.

Quick manual check

  • Browse Home, open a detail, toggle a like, scroll through more posts, and refresh.
  • Create a post; check that Home reloads and a failed submission preserves the draft.
  • Search, change the query quickly, and clear it. Check empty results and pagination.
  • Open Profile; check the header, author-filtered posts, empty state, and refresh.
  • Delete one of your own posts from detail. Check confirmation, return to the list, and removal after refreshing other tabs. Other birds' posts should have no delete action.
  • Check retry behavior with the backend unavailable, plus large text, dark mode, and VoiceOver.

For code responsibilities, see Architecture. Backend tests and deployment commands live on Backend.