Skip to content

Infomaniak/ios-SwissTransfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,467 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📦 Infomaniak SwissTransfer for iOS

Welcome to the official repository for Infomaniak SwissTransfer, a secure and easy file transfer app for iOS, iPadOS, and macOS (via Catalyst). 👋

📖 About Infomaniak SwissTransfer

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.

🏗️ Architecture

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.

🛠️ Technology Stack

  • 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+

🚀 Getting Started

Prerequisites

  1. Install Mise for tool version management:

    curl https://mise.run | sh
  2. 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
  3. Install dependencies and generate the Xcode project:

    tuist install
    tuist generate

Building and Running

Open the generated SwissTransfer.xcworkspace in Xcode and build the project, or use:

xcodebuild -scheme "SwissTransfer"

🧪 Testing

You can run the tests using Xcode or Tuist. The project includes unit tests to ensure code quality and reliability.

🤝 Contributing

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.

📄 License

This project is under GPLv3 license. See the LICENSE file for more details.

About

SwissTransfer application for iOS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 11