DeckUI is a Swift DSL (domain specific language) for writing slide decks in Xcode. It allows for quick creation of slides and content in a language and environment you are familiar with.
But why?
Well, I made this because:
I was bored on an airplane
Wanted to use this as a demo for future conference talk on Swift DSLs
Need something more customizable than markdown for writing slide decks and more codey than Keynote
Probably bad and never production ready 😈 Please only use DeckUI for a single presentation and never at any scale.
👨💻 Contributing
Yes please! I’m happy to discuss issues and review/merge pull requests 🙂 I will do my best to get to the but I am a dad, work at RevenueCat, and the lead maintainer of fastlane so I might not respond right away.
📚 Examples
Slide
Slide can be used without any parameters but can be given a custom alignment, padding, and theme.
Slide {
Title("Introduction", subtitle: "What is it?")
// Content
}
Words
Words are similar to what a textbox would be in Keynote, PowerPoint, or Google Slides. There will eventually be more style configurations for words.
Slide(alignment: .center) {
Title("Center alignment")
Words("Slides can be center aligned")
Words("And more words")
}
Bullets
Bullets turns Words into a list. It takes an optional style parameter where you can choose between .bullets and .dash. Bullets cannot be nested yet but soon™️.
Slide {
Title("Introduction", subtitle: "What is it?")
Bullets {
Words("A custom Swift DSL to make slide decks")
Words("Distributed as a Swift Package")
Words("Develop your slide deck in Xcode with Swift")
}
}
Slide {
Title("Introduction", subtitle: "What is it?")
Bullets(style: .dash) {
Words("A custom Swift DSL to make slide decks")
Words("Distributed as a Swift Package")
Words("Develop your slide deck in Xcode with Swift")
}
}
Media
Media provides a few ways to display images from various source types. This will eventually support videos.
✨ DeckUI
DeckUI is a Swift DSL (domain specific language) for writing slide decks in Xcode. It allows for quick creation of slides and content in a language and environment you are familiar with.
But why?
Well, I made this because:
👉 Watch Introducing DeckUI - Write slide decks in Swift on my YouTube channel for more explaination and full demo
✨ Features
PresenterDeck,Slide,Title,Words,Bullets,Media,ColumnsRawViewto drop any SwiftUI viewCodeMedia🐌 Future Features
Mediaremote image loading and slide transitionsWordsBulletsCodeSimple Demo
https://user-images.githubusercontent.com/401294/189043329-fe75161c-17c1-4471-8632-07fb79d26d1a.mov
💻 Installing
Swift Package Manager
https://github.com/joshdholtz/DeckUI.git🚀 Getting Started
There are no official “Getting Started” docs yet 😅 But look at…
Deck,Slide, and all slide components are builtPresenteris built📖 Documentation
100% not documented yet but I’ll get there 🤷♂️
🏎 Performance
Probably bad and never production ready 😈 Please only use DeckUI for a single presentation and never at any scale.
👨💻 Contributing
Yes please! I’m happy to discuss issues and review/merge pull requests 🙂 I will do my best to get to the but I am a dad, work at RevenueCat, and the lead maintainer of fastlane so I might not respond right away.
📚 Examples
Slide
Slidecan be used without any parameters but can be given a customalignment,padding, andtheme.Title
Titlecan be used by itself or with an optionalsubtitle. It was real similar toWordsbut larger.Words
Wordsare similar to what a textbox would be in Keynote, PowerPoint, or Google Slides. There will eventually be more style configurations for words.Bullets
BulletsturnsWordsinto a list. It takes an optionalstyleparameter where you can choose between.bulletsand.dash.Bulletscannot be nested yet but soon™️.Media
Mediaprovides a few ways to display images from various source types. This will eventually support videos.Columns
Columnsallow you to use one to infinteColumns. Put other slide content inColumn.Code
Codeis a super specifi versionWords. It will:RawView
Drop any SwiftUI view inside of
RawView. Could be built-in SwiftUI views likeTextorButtonbut can also be any custom SwiftUI view.Themes
A
Themecan be set inPresenteror individually onSlide. There are three default themes (.dark,.black,.white) but feel free to use your own.DeckUI in the real world