DesignTuist is a Tuist template for modular architecture. It provides CLI tools to design projects according to your current situation.
- Modular Architecture: Feature, Domain, Core, Shared layer structure
- CLI Tools: 5 commands for project generation, module management, and dependency management
- Interactive UI: User-friendly terminal-based interface
- Multi-Environment Support: Environment-specific configurations for Default, CI, CD
- macOS 13.0+
- Swift 6.1+
- Tuist
- Clone the repository:
git clone https://github.com/jihoonme/designtuist.git
cd designtuist- Build with Swift Package Manager:
swift build -c release- Run commands:
# Direct execution with swift run (recommended)
swift run generate
# Or run built executables directly
.build/release/generate
# Add to PATH for global use (optional)
cp .build/release/* /usr/local/bin/Note: All commands should be executed in the format
swift run [command-name].
Generates an Xcode workspace.
swift run generate [type] [options]Parameters:
type:default,CI,CD(default: default)--path, -p: Project directory path
Usage Examples:
swift run generate # Generate default workspace
swift run generate CI # Generate workspace for CI environment
swift run generate --path ./MyProject # Generate workspace at specific pathCreates a new module through an interactive UI.
swift run moduleFeatures:
- Enter module name
- Select layer (Feature, Domain, Core, Shared)
- Select components (Sources, Interface, Example, Tests, UITests)
- Automatic generation via Tuist scaffold
Usage Flow:
- Enter module name
- Select layer (Feature/Domain/Core/Shared)
- Select components to generate
- Execute automatic generation
Installs Swift Package Manager dependencies.
swift run install <package-name> --version <version> [options]Parameters:
package-name: GitHub package name (owner/repo format)--version, -v: Version to install--path, -p: Project directory path
Usage Examples:
swift run install alamofire/alamofire --version 5.8.1
swift run install --path ./MyProject rxswift/rxswift --version 6.7.1Removes Swift Package Manager dependencies.
swift run uninstall <package-name> [options]Parameters:
package-name: Package name to remove--path, -p: Project directory path
Usage Examples:
swift run uninstall alamofire
swift run uninstall --path ./MyProject rxswiftCleans Tuist project.
swift run clean [options]Parameters:
--path, -p: Project directory path
Usage Examples:
swift run clean # Clean current directory
swift run clean --path ./MyProject # Clean specific pathdesigntuist/
├── Commands/ # CLI command implementations
│ ├── Clean/ # clean command
│ ├── Generate/ # generate command
│ ├── Install/ # install command
│ ├── Module/ # module command
│ ├── Uninstall/ # uninstall command
│ └── CommandKit/ # Common services and utilities
├── Configuration/ # Environment-specific configuration files
├── Projects/ # Project templates
│ ├── App/ # App project
│ ├── Core/ # Core layer
│ ├── Domain/ # Domain layer
│ ├── Feature/ # Feature layer
│ └── Shared/ # Shared layer
└── Tuist/ # Tuist configuration and templates
├── Templates/ # Module templates
└── ProjectDescriptionHelpers/
This project uses the following Swift packages:
- swift-argument-parser: CLI argument parsing
- swift-log: Logging
- swift-command: Command execution
- swift-file: File system operations
- swift-cli: CLI UI components
# Debug build
swift build
# Release build
swift build -c release
# Run tests
swift test- Fork this repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Create a Pull Request
DesignTuist is distributed under the MIT license. See the LICENSE file for more info.