Protyper was a small demo I created to quickly prototype UI designs on... the command line. Yes, you heard that right. It mimicked the behavior of UIKit elements with similar logic, such as a first responder chain, table view delegates/data sources, and subview management. For example, if I wanted to show a tab bar that contained a table view, it would look something like this: ``` Home –––––––––––––––––––––––––––––––––––––––– Tasks: - Do laundry ✓ - Get groceries + Task Notes: + Note –––––––––––––––––––––––––––––––––––––––– Home Settings –––––––––––––––––––––––––––––––––––––––– ``` Things like the padding of the tabs, navigation, and buttons, were all handled via the first responder chain (navigable by keyboard), and the window would redraw. The equivalent code was: ``` let home = ViewController(title: \"Home\") let tableView = TableView() tableView.dataSource = dataSource // I created this separately home.view = tableView let homeNav = NavigationController(root: home) let settings = ViewController(title: \"Settings\") let tabController = TabBarController(tabs: [homeNav, settings]) let mainWindow = Window() mainWindow.rootViewController = tabController mainWindow.draw() ``` I originally designed it with testability in mind (comparing text is easy!), as well as making the UI layer not so strongly tied to UIKit. After all, if I could write the code first in Protyper, then it would be more modular. It was a fun project, but ultimately became superseded by SwiftUI. Goodbye Protyper, may you rest in peace.