Hi there! We are Adam Leonard (@adamjleonard) and Clay Mcilrath (@thinkclay) and we have been building Swift applications since the day the language was released. In that time, we have seen it become one of the most popular languages in the world and watched the Apple dev ecosystem shift almost entirely over to Swift. We have been supporting the community by creating many products, tutorials and libraries such as unicorn.tv and swifttoolbox.io. We have also organized the largest social community with “swifters” on slack. As thought leaders in this space, we have become all too familiar with common pain points: debugging vague errors, time lost reinventing common components, poor application architecture, and more. We are building this tool to solve many of these problems and we need your help!
Our goal is to build a CLI tool for Swift much like rails scaffolding and rake tasks have done for the ruby and web community. Scaffolding and command line tasks are a crucial part of Rapid Application Development (RAD). As a principle, RAD is instrumental for prototyping, iterating and testing quickly. Rails revolutionized web development not just because of the framework but also with these CLI tools, and we believe that should also be true for iOS. We are creating this application in Swift and hope that it will help developers of all skill levels create projects faster, debug errors more easily, and add functionality to existing projects.
- Application creation with standardized organization and setup
- Establish intelligent defaults
- Project linting, warnings and suggestions
- Wizard for selecting common components
- Configuration and inclusion of services
We want to standardize application organization, naming conventions, and architecture. By creating a single, "most popular" tool, we know that the Swift community will start to adopt a more normalized approach to tidying applications.
Should brackets go on a new line? Two spaces, or four? These are just a few annoying issues that developers have to deal with when sharing projects and code. We will be leveraging configuration files so that you can define your preferences and remind contributors and peers to follow your coding style.
Warnings and Suggestions
It can be very difficult to figure out that something as simple as a misconfigured plist entry or missing font resource is crashing your application or preventing a successful build. We will parse project configs and settings to look for common mistakes and elaborate on error codes to provide more human-friendly responses and suggestions for why the application may be failing.
Wizards do magic
It's such an enjoyable experience when a command line tool walks you through a series of questions and builds your project behind the scene for you. We will provide a common list of components from onboarding controllers to web service back-ends so that you can simply toggle options along the lines of "I would like to use parse for my back-end, and support json as a file format." This portion of the tool will be crucial for true RAD.
We do not have any particular numbers for these goals, but nonetheless will work as many of them into the roadmap as possible once we have released the initial MVP:
- Certificate and Provisioning profile management and setup
- Web API toolkit (for REST services and the like)
- An equivalent to the "better_errors" gem in Ruby
- Single Sign On and other authentication components
Risks and challenges
We are aiming to build this tool entirely in Swift and need to perform some tasks through system file I/O as well as Xcode's API. There is a great deal of potential scope creep, so we have tried to pick a core set of features that we feel is fairly easy to create and release within a month or two of starting. We will have stretch goals for achieving anything above and beyond the core features.Learn about accountability on Kickstarter
- (30 days)