iOS client for Grain grain.social
ios photography atproto
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs: user-facing README with screenshots and DEVELOPMENT.md (#7)

* docs: user-facing README with screenshots, move dev setup to DEVELOPMENT.md

* docs: rewrite DEVELOPMENT.md with accurate setup and workflow

* docs: tighten README features list

authored by

Hima and committed by
GitHub
cd057332 3b635dbf

+74 -47
+50
DEVELOPMENT.md
··· 1 + # Development 2 + 3 + ## Requirements 4 + 5 + - Xcode 26+ 6 + - [XcodeGen](https://github.com/yonaskolb/XcodeGen) 7 + - [just](https://github.com/casey/just) 8 + - [xcbeautify](https://github.com/cpisciotta/xcbeautify) 9 + - [SwiftFormat](https://github.com/nicklockwood/SwiftFormat) 10 + - [SwiftLint](https://github.com/realm/SwiftLint) 11 + 12 + ```bash 13 + brew install xcodegen just xcbeautify swiftformat swiftlint 14 + ``` 15 + 16 + ## Setup 17 + 18 + Generate the Xcode project and open it: 19 + 20 + ```bash 21 + just generate 22 + open Grain.xcodeproj 23 + ``` 24 + 25 + No local backend needed — `just sim` and `just device` both hit the production API at grain.social. 26 + 27 + ### Device builds 28 + 29 + Device builds require an Apple Developer account. Create a `.env` in the repo root: 30 + 31 + ``` 32 + APPLE_TEAM_ID=YOUR_TEAM_ID 33 + BUNDLE_ID=com.yourorg.grain 34 + BUNDLE_NAME=Grain 35 + ``` 36 + 37 + Then re-run `just generate` before building. 38 + 39 + ## Commands 40 + 41 + ```bash 42 + just sim # Build + install + launch on simulator (production API) 43 + just sim-local # Build + install + launch on simulator (local/dev API) 44 + just device DEVICE_ID # Build + install to a plugged-in iOS device 45 + just test # Run tests (iPhone 17 Pro Max simulator) 46 + just generate # Regenerate Xcode project from project.yml 47 + just format-fix # Fix formatting in-place 48 + just lint-fix # Fix lint violations 49 + just release # Bump build, archive, upload to App Store Connect 50 + ```
+18 -47
README.md
··· 1 1 # Grain for iOS 2 2 3 - Native iOS client for [Grain](https://grain.social), a photography community built on the [AT Protocol](https://atproto.com). 3 + A photography community built on the [AT Protocol](https://atproto.com). Share your work, follow photographers, and explore galleries with rich camera metadata. 4 4 5 - ## Requirements 5 + <p float="left"> 6 + <img src="Screenshots/feed.png" width="250" /> 7 + <img src="Screenshots/notifications.png" width="250" /> 8 + </p> 6 9 7 - - Xcode 26+ 8 - - iOS 26.0+ 9 - - [XcodeGen](https://github.com/yonaskolb/XcodeGen) 10 - - [just](https://github.com/casey/just) (optional, for task running) 11 - - [xcbeautify](https://github.com/cpisciotta/xcbeautify) (for formatted build/test output) 12 - - [SwiftFormat](https://github.com/nicklockwood/SwiftFormat) (code formatter) 13 - - [SwiftLint](https://github.com/realm/SwiftLint) (linter) 10 + ## Features 14 11 15 - ## Setup 12 + - Feed 13 + - Galleries 14 + - Stories 15 + - Camera & EXIF metadata 16 + - Likes, comments & shares 17 + - Notifications 18 + - Search 19 + - Profiles 16 20 17 - ```bash 18 - brew install xcodegen just xcbeautify swiftformat swiftlint 19 - ``` 21 + ## License 20 22 21 - Create a `.env` file in the repo root with your Apple team and bundle configuration: 23 + [MIT](LICENSE) — Copyright (c) 2026 Grain Social 22 24 23 - ``` 24 - APPLE_TEAM_ID=YOUR_TEAM_ID 25 - BUNDLE_ID=com.yourorg.grain 26 - BUNDLE_NAME=Grain 27 - ``` 25 + --- 28 26 29 - Then generate the Xcode project and open it: 30 - 31 - ```bash 32 - just generate 33 - open Grain.xcodeproj 34 - ``` 35 - 36 - The app connects to the [Grain backend](https://tangled.org/grain.social/grain), which must be running for full functionality. 37 - 38 - ## Commands 39 - 40 - ```bash 41 - just generate # Regenerate Xcode project from project.yml 42 - just build # Build for simulator 43 - just sim-local # Build + install + launch on simulator (local/dev API) 44 - just sim # Build + install + launch on simulator (production API) 45 - just test # Run tests 46 - just format # Check formatting (list unformatted files) 47 - just format-fix # Fix formatting in-place 48 - just lint # Lint Swift code 49 - just lint-fix # Fix lint violations 50 - just device ID # Build + install to a plugged-in iOS device 51 - just release # Bump build, archive, upload to App Store Connect 52 - ``` 53 - 54 - ## License 55 - 56 - [MIT](LICENSE) — Copyright (c) 2026 Grain Social 27 + See [DEVELOPMENT.md](DEVELOPMENT.md) to build and run.
+3
Screenshots/feed.png
··· 1 + version https://git-lfs.github.com/spec/v1 2 + oid sha256:1e56e75227b57fd4971a43aae258fc3469a57136e0a82eb38a5cdab1ac834b15 3 + size 3561768
+3
Screenshots/notifications.png
··· 1 + version https://git-lfs.github.com/spec/v1 2 + oid sha256:bd1fe2a43a829a7bc0e6770319c7d810fc2840c6e0133dce5dec5242e7c3c9fd 3 + size 790790