Convert Figma logo to code with AI

tuist logotuist

A virtual platform team for mobile devs who ship

5,121
632
5,121
260

Top Related Projects

A Swift command line tool for generating your Xcode project

9,582

Strong typed, autocompleted resources like images, fonts and segues in Swift projects

19,047

A tool to enforce Swift style and conventions.

15,100

A simple, decentralized dependency manager for Cocoa

14,697

The Cocoa Dependency Manager.

Quick Overview

Tuist is an open-source tool designed to simplify and streamline the development of Xcode projects. It provides a declarative API for defining project structures, automating tasks, and managing dependencies, making it easier for iOS, macOS, and tvOS developers to maintain large and complex projects.

Pros

  • Simplifies project configuration and maintenance
  • Improves collaboration by standardizing project structure
  • Automates repetitive tasks, saving time and reducing errors
  • Provides a modular approach to project architecture

Cons

  • Requires learning a new tool and syntax
  • May have a learning curve for developers used to traditional Xcode project management
  • Limited adoption compared to native Xcode project management
  • Some advanced Xcode features may not be fully supported

Getting Started

To get started with Tuist, follow these steps:

  1. Install Tuist using Homebrew:

    brew install tuist
    
  2. Initialize a new project:

    tuist init --platform ios --name MyProject
    
  3. Generate the Xcode project:

    tuist generate
    
  4. Open the generated Xcode project:

    tuist edit
    

For more detailed information and advanced usage, refer to the official Tuist documentation.

Competitor Comparisons

A Swift command line tool for generating your Xcode project

Pros of XcodeGen

  • Simpler setup and configuration process
  • Faster generation of Xcode projects
  • More lightweight and focused solely on project generation

Cons of XcodeGen

  • Less comprehensive project management features
  • Limited support for custom build phases and scripts
  • Requires manual maintenance of project structure

Code Comparison

XcodeGen project specification:

name: MyApp
targets:
  MyApp:
    type: application
    platform: iOS
    sources: [MyApp]
    dependencies:
      - target: MyFramework

Tuist project definition:

let project = Project(
    name: "MyApp",
    targets: [
        Target(
            name: "MyApp",
            platform: .iOS,
            product: .app,
            bundleId: "com.example.MyApp",
            infoPlist: "Info.plist",
            sources: ["Sources/**"],
            dependencies: [
                .target(name: "MyFramework")
            ]
        )
    ]
)

XcodeGen uses a YAML-based configuration file, while Tuist employs Swift for project definition. XcodeGen's syntax is more concise, but Tuist offers greater flexibility and type safety. Both tools aim to simplify Xcode project management, but Tuist provides a more comprehensive solution with additional features beyond project generation.

9,582

Strong typed, autocompleted resources like images, fonts and segues in Swift projects

Pros of R.swift

  • Focuses specifically on generating type-safe resources for Swift projects
  • Lightweight and easy to integrate into existing Xcode projects
  • Provides autocomplete for resources like images, fonts, and localized strings

Cons of R.swift

  • Limited to resource management, doesn't offer project generation or configuration
  • Requires manual setup and integration into build phases
  • May not scale as well for very large projects with complex resource structures

Code Comparison

R.swift usage:

let icon = R.image.settingsIcon()
let title = R.string.localizable.settingsTitle()

Tuist usage:

import ProjectResources

let icon = Asset.settingsIcon.image
let title = L10n.Settings.title

Summary

R.swift is a focused tool for generating type-safe resource accessors in Swift projects, offering easy integration and improved code completion for resources. However, it has a narrower scope compared to Tuist, which provides a more comprehensive project management solution. R.swift requires manual setup, while Tuist offers automated project generation and configuration. The choice between the two depends on whether you need a lightweight resource management tool or a full-featured project generation and management system.

19,047

A tool to enforce Swift style and conventions.

Pros of SwiftLint

  • Focused specifically on Swift code style and conventions
  • Large set of pre-defined rules with customizable configurations
  • Integrates well with Xcode and CI/CD pipelines

Cons of SwiftLint

  • Limited to linting and doesn't handle project generation or management
  • Can be resource-intensive for large projects
  • Requires manual setup and configuration for each project

Code Comparison

SwiftLint example:

swiftlint autocorrect
swiftlint lint --reporter json > swiftlint-report.json

Tuist example:

tuist generate
tuist build

Key Differences

  • SwiftLint focuses on code quality and style enforcement for Swift projects
  • Tuist is a project generation and management tool for Xcode projects
  • SwiftLint is more specialized, while Tuist offers broader project management features

Use Cases

  • Use SwiftLint when you need to enforce coding standards and improve code quality in Swift projects
  • Choose Tuist when you want to simplify Xcode project setup, management, and build processes

Community and Support

  • Both projects have active communities and regular updates
  • SwiftLint has a larger user base due to its specific focus on Swift linting
  • Tuist offers comprehensive documentation and tutorials for project management

Integration

  • SwiftLint can be easily integrated into existing Swift projects
  • Tuist requires a more significant change in project structure and workflow
15,100

A simple, decentralized dependency manager for Cocoa

Pros of Carthage

  • Decentralized dependency management, allowing direct use of GitHub repositories
  • Builds frameworks binary, resulting in faster compilation times
  • Supports multiple platforms (iOS, macOS, tvOS, watchOS)

Cons of Carthage

  • Requires manual framework integration into Xcode projects
  • Slower initial setup and dependency resolution compared to Tuist
  • Limited to Swift and Objective-C projects

Code Comparison

Carthage (Cartfile):

github "Alamofire/Alamofire" ~> 5.0
github "SwiftyJSON/SwiftyJSON" ~> 4.0

Tuist (Project.swift):

let project = Project(
    name: "MyApp",
    targets: [
        Target(
            name: "MyApp",
            platform: .iOS,
            product: .app,
            bundleId: "com.example.MyApp",
            infoPlist: "Info.plist",
            sources: ["Sources/**"],
            dependencies: [
                .external(name: "Alamofire"),
                .external(name: "SwiftyJSON")
            ]
        )
    ]
)

Tuist offers a more integrated approach to project management, including dependency handling, while Carthage focuses solely on dependency management. Tuist provides a more streamlined setup process and automates project generation, but Carthage offers more flexibility in terms of dependency sources and binary framework builds.

14,697

The Cocoa Dependency Manager.

Pros of CocoaPods

  • Widely adopted and mature dependency management system for iOS projects
  • Large ecosystem with a vast number of available libraries and frameworks
  • Supports both Swift and Objective-C projects

Cons of CocoaPods

  • Can slow down project build times, especially for larger projects
  • Requires maintenance of a separate Podfile and occasional pod updates
  • May introduce complexities in version management and conflicts

Code Comparison

CocoaPods (Podfile):

platform :ios, '13.0'
use_frameworks!

target 'MyApp' do
  pod 'Alamofire', '~> 5.0'
end

Tuist (Project.swift):

import ProjectDescription

let project = Project(
    name: "MyApp",
    targets: [
        Target(
            name: "MyApp",
            platform: .iOS,
            product: .app,
            bundleId: "com.example.MyApp",
            infoPlist: "Info.plist",
            sources: ["Sources/**"],
            dependencies: [
                .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.0.0"))
            ]
        )
    ]
)

Tuist offers a more integrated approach to project management, potentially simplifying the development process and improving build times. However, CocoaPods remains a popular choice due to its extensive library support and familiarity within the iOS development community.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

header
Commit Activity Mastodon badge Bluesky badge Slack Workspace Slack Workspace
Book us with Cal.com

Tuist

Tuist is a virtual platform team for Swift app devs who ship. Through an integrated platform that integrates with your toolchain and projects, we help you stay focused and productive while building apps.

The following solutions are part of Tuist:

Openness and community are cornerstones in shaping Tuist, as we believe they are the key to building the best solution. We recommend checking out the following resources:

[!NOTE] Even though our current focus is on the development phase of Apple native apps, we'll gradually expand our focus to include other ecosystems (e.g., Android, RN, and Flutter), and expand beyond just development.

Get started

You can run the following command to get started with [Mise] (check out this page for other methods):

mise x tuist@latest -- tuist init

[!IMPORTANT] The init workflow is designed to integrate with an existing Xcode project or create a generated project. If you are migrating an existing Xcode project to a generated project, we recommend checking out these docs.

Documentation

Do you want to know more about what Tuist can offer you? Or perhaps want to contribute to the project and you need a starting point?

You can check out the project documentation.

Sample projects

You can find some sample projects in the fixtures folder or the awesome Tuist repo! 🎉

Development

This repository represents a monorepo with the following projects:

ProjectDescription
cliThe command line interface for Tuist
appThe Swift-powered iOS and macOS app
docsThe documentation for Tuist
handbookThe company's handbook

Sponsors

Some companies support our community and open source efforts with contributions through GitHub Sponsors and Open Collective Backers. We'd like to give a special mention to the following sponsors:

mondaycom_logo Monday.com is a cloud-based work operating system (Work OS) that empowers teams to run projects and workflows with confidence. It's a versatile platform that combines features of project management, workflow automation, and team collaboration to streamline the way teams work together.
lapse_logo Lapse is an app designed to reclaim how we take and share memories. A camera for living in the moment and a private photo journal for friends, not followers.

Companies using Tuist

tv2_logo depop_logo bendingspoons_logo globekeeper_logo getyourguide_logo
emplate_logo trendyol_logo angrynerds_logo compass_logo wefox_logo
hedvig_logo takeoutcentral_logo olx_logo justeattakeaway_logo qnips_logo
telepass_logo crunchyroll_logo altel_logo altel_logo izi_logo
wise_logo wise_logo rbkbusiness_logo rbkbusiness_logo sajda_logo

Want to contribute?

You can use our contribution docs to get started. You can find good issues for first-time contributors here.

Core Team


Pedro Piñera


Marek Fořt


Kas


Daniele Formichelli


Mike Simons

Core Alumni

The following people were once core contributors helping steer the project in the right direction and ensuring we have a reliable foundation we can build new features upon:


Natan Rolnik


Andrea Cipriani


Oliver Atkinson


Romain Boulay


Kamil Harasimowicz


Luis Padron

Alfredo Delli Bovi

Contributors

Thanks goes to these wonderful people:


kalkwarf

Marek Fořt

Kas

Natan Rolnik

svastven

Bernhard Huemer

Daniel Jankowski

Facundo Menzella

Eric Ito

Kamil Harasimowicz

Jakub Olejník

ldindu

George Tsifrikas

Privezentsev Yura

Fero

Heberti Almeida

Ben Scheirman

Jared Sorge

Joe Blau

David Chavez

Roman Podymov

Marcin Religa

Alfredo Delli Bovi

Jake Prickett

Daniele Formichelli

Sergey Petrachkov

Jinwoo, Kim

David Harris

Dmytro Mishchenko

Sam Pettersson

Josh Holtz

Jierong Li

Shai Mishali

Franz Busch

Tíarnán McGrath

Vitaly Chupryk

Roman Blum

Giovanni Filaferro

Andrés Pizá Bückmann

Gabriel Coutinho

Riccardo

Mauro Bolis

Peter Weishapl

Cruz

Sven Münnich

Santiago A. Delgado

Wojciech Kulik

Iain Smith

Max Kraev

Mustafa Yusuf

Daniel Barden

Zofia Kulus

David Peterson

Ikko Ashimine

Seto Elkahfi / 塞托·埃尔卡菲

apps4everyone

Lorenzo

Darko Damjanovic

Marvin Nazari

Robin Malhotra

Astromonkee

ezraberch

Christopher Constable

Yi Wang

Mustafa Dur

Luca Bartoletti

Sujata Chakraborty

Pavel Trafimuk

Alejandro Silva Fernández

Jake Adams

Sam Watts

Erk Ekin

Denis Morozov

orbitekk

Park Jae Hyun

Sean Berry

Isaac Halvorson

Mohit Saxena

Mikołaj Chmielewski

Tope Akinwande

TheInkedEngineer

Alexander Weiß

kyungpyoda

Ville Witt

paul.s

aniltaskiran

Javier Vieira

Aris Sarris

kimxwan0319

Florian Fittschen

Jesus (iOS)

Nicholas Kim

Alexandros Smponias

Go

Alberto Garcia

Andrea Scuderi

Diogo Autilio

Shahzad Majeed

Dan

Nikita Ivanchikov

Anastasia Kazantseva

Michael McGuire

Michael Collins

YoHan Cho

euriasb

MontakOleg

oozoofrog

Martin Strambach

sh-a-n

Batuhan Saka

SooHwanCho

Gary Riches

mustiikhalil

Serhii Butenko

Petrukha Ivan

Mathias Schreck

Yen-Chia Lin

Mary

Hyunjin

Kevin Aguilar

Andrew Roan

ibrahim oktay

Dmitriy Kulakov

Jaewon-Yun

tatagrigory

Denil Chungath

Victor Sarda

tzxdtc10

Thieme

Clemens Beck

Paul Taykalo

Vitaly Kravtsov

dc

baegteun

Vinícius Couto Tasso

안지훈

Dimash

danibachar

한석호(MilKyo)

Hai Feng Kao

Antti Laitala

PushedCrayon

Stefano Mondino

Łukasz Lech

costapombo

Ihor Savynskyi

Eduard Miniakhmetov

Alexander Filimonov

Gorbenko Roman

Lucas Mrowskovsky Paim

Taylor Lineman

Miguel Ferrando

BarredEwe

Chris Sessions

Andy Kolean

Binlogo

Dmitry Serov

Dariusz Rybicki

Dan Sinclair

Kai Oelfke

Inder

kyounh12

Alvar Hansen

Barak Weiss

Hilton Campbell

Gabriel Liévano

Vijay Tholpadi

Minhoi Goo

Sam Hanley

ahmdyasser

minhaaan

Tamar Milchtaich Lavi

Andrey K

Alex Vera

Annalise Mariottini

HyunSu Park

Vladimir

Rhys Morgan

pierrerodgers

eunpyo hong

Yunseo Kang

Ilya Kharlamov

brianvar

Hossam Youssof

Minseok Kang

Alexander

Loyle

Ydna

Evan

Felix Lisczyk

Lukas Würzburger

Ethan Wong

Shun Tedokon

Connor Ricks

Francisco Diaz

Ethan Parker

Luke Van In

Mustafa Taibah

Vladislav Kondrashkov

Christopher Rex

baaddin

Matt Jung

Md. Mahmudul Hasan Shohag

Matty Cross

YIshihara11201

Philippe Weidmann