Welcome to the official repository for Infomaniak SwissTransfer, a secure and easy file transfer app for iOS, iPadOS, and macOS (via Catalyst). 👋
Infomaniak SwissTransfer is part of the Infomaniak ecosystem, providing a privacy-focused 🔒, Swiss-based 🇨🇭 file transfer solution with a beautiful native iOS experience. Built with Swift and SwiftUI, this app offers a fast, secure, and user-friendly way to send files up to 50 GB - free and without registration - and keep your transfers for up to 30 days.
The project follows a modular architecture with clear separation of concerns:
- SwissTransfer: Main app target containing SwiftUI views, scenes, and app lifecycle
- SwissTransferCore: Business logic framework with API layer, state managers, and data models
- SwissTransferCoreUI: Shared UI components and view modifiers
- SwissTransferResources: Assets, localized strings, and resources
- SwissTransferFeatures: Feature modules including
- Extensions: Share extension and App Clip
A KMP library is used to share code between the iOS and Android versions of the app.
- Language: Swift 5.10
- UI Framework: SwiftUI (primary) with UIKit integration
- Shared Logic: Kotlin Multiplatform (KMP) via multiplatform-SwissTransfer
- Build System: Tuist for project generation and SPM dependency management
- Tool Management: Mise for managing tool versions
- Key Dependencies:
- Lottie for animations
- Sentry for error tracking
- Infomaniak Core libraries for common functionality
- QRCode for QR code generation
- Minimum iOS: 16.6+
-
Install Mise for tool version management:
curl https://mise.run | sh -
Bootstrap the development environment:
mise install # Activate mise for your shell: # For bash/zsh: eval "$(mise activate bash)" # For fish: mise activate fish | source # Or follow: https://mise.jdx.dev/getting-started.html#shells
-
Install dependencies and generate the Xcode project:
tuist install tuist generate
Open the generated SwissTransfer.xcworkspace in Xcode and build the project, or use:
xcodebuild -scheme "SwissTransfer"You can run the tests using Xcode or Tuist. The project includes unit tests to ensure code quality and reliability.
If you see a bug or an enhancement point, feel free to create an issue, so that we can discuss it. Once approved, we or you (depending on the priority of the bug/improvement) will take care of the issue and apply a merge request. Please, don't do a merge request before creating an issue.
This project is under GPLv3 license. See the LICENSE file for more details.