Forji is an iOS app for Forgejo. View and interact with repositories, issues and pull requests.
Find a file
2026-03-12 19:37:33 +01:00
Forji test: switch from bash to swift for integration test setup 2026-03-11 22:44:19 +01:00
integration test: switch from bash to swift for integration test setup 2026-03-11 22:44:19 +01:00
screenshots feat: screenshots for App Store publishing 2026-02-28 23:02:16 +01:00
.gitignore feat: add dotfiles 2026-02-28 21:18:14 +01:00
.swiftformat feat: add dotfiles 2026-02-28 21:18:14 +01:00
.swiftlint.yml feat: add dotfiles 2026-02-28 21:18:14 +01:00
DISTRIBUTE.md docs: change the way the version is set 2026-03-08 20:02:12 +01:00
flake.lock feat: inital commit 2026-02-28 21:08:13 +01:00
flake.nix feat: inital commit 2026-02-28 21:08:13 +01:00
justfile refactor: clean up justfile 2026-03-12 19:37:33 +01:00
LICENSE feat: inital commit 2026-02-28 21:08:13 +01:00
PRIVACY.md feat: add privacy policy 2026-02-28 21:51:39 +01:00
README.md docs: add licence grant 2026-03-09 20:46:31 +01:00

Forji

A native iOS client for Forgejo


Forji is a native iOS app for managing your Forgejo repositories, issues, pull requests, and notifications from your phone. Built with SwiftUI and Swift concurrency.

Screenshots

Repositories Code browser Pull request detail Notifications

App Store

Foji is availbe on the Apple App Store for free: Forji App Store

Features

Repositories

  • Browse and search your repositories
  • Filter by All or Starred
  • Star/unstar repositories
  • View repository stats (stars, forks, language, open issues)

Code Browser

  • Navigate file trees
  • View files with syntax highlighting
  • Render Markdown previews
  • Edit files and commit changes directly
  • Browse commit history with diffs
  • Switch branches

Issues

  • View issues across all repositories or per-repo
  • Filter by open/closed state and search
  • Create, edit, and close/reopen issues
  • Manage labels, milestones, and assignees
  • Comment with Markdown support

Pull Requests

  • View PRs across all repositories or per-repo
  • Create PRs with branch selection, labels, milestones, assignees, and reviewers
  • Review diffs with inline comments
  • Submit reviews (comment, approve, request changes)
  • Merge with merge commit, rebase, or squash
  • Close, reopen, and edit PRs

Notifications

  • View unread, read, and all notifications
  • Swipe to mark as read or dismiss
  • Unread badge on the tab bar

Other

  • Connect to any Forgejo instance (including self-hosted)
  • Self-signed certificate support
  • Multiple instance management
  • Light, dark, and system theme
  • Mermaid diagram rendering

Development

Requires Xcode 26. The project uses ForgejoKit as a remote Swift package dependency.

Dev Environment

A Nix flake provides all CLI tooling (just, xcbeautify, swiftlint, swiftformat):

nix develop        # Enter dev shell with all tools available

Building & Testing

A justfile is provided for common tasks:

just build          # Build the app
just test           # Run app unit tests
just run            # Build, install, and launch in the simulator
just lint           # Lint Swift code with SwiftLint
just format         # Format Swift code with SwiftFormat
just test-ui        # Run UI integration tests (requires Docker)
just test-one Class # Run a single integration test
just test-list      # List all available integration tests

Integration tests spin up Forgejo instances in Docker, seed test data, and run UI tests against them. See integration/ for details.

Architecture

Layer Location Purpose
ForgejoKit Remote SPM package Platform-agnostic Swift package with all Forgejo API logic, models, and services
Forji Forji/ SwiftUI iOS app with views, authentication, and persistence

ForgejoKit has no SwiftUI or platform dependencies, making it reusable for other clients (macOS, CLI, etc.). It is published as a separate package at codeberg.org/secana/ForgejoKit.

Acknowledgments

The Forji logo is based on the Forgejo logo by Caesar Schinas and is licensed under CC BY-SA 4.0.

Libraries

Contributing

Contributions are welcome! By submitting a pull request, you agree that your contributions are licensed under the GNU General Public License v3.0 and may be distributed through Apple's App Store under the App Store Exception included in the license.

You need to inlude this sentence in your PR or a comment to agree to the distribution in the App Store:

"I grant Stefan Hausotte an irrevocable, worldwide, royalty-free license to use, sublicense, and distribute my contribution, including through Apple's App Store under the project's App Store exception."

License

Forji is licensed under the GNU General Public License v3.0 with an App Store Exception that permits distribution of the compiled application through Apple's App Store.

ForgejoKit is licensed under the MIT License.