└── readme.md /readme.md: -------------------------------------------------------------------------------- 1 | # Awesome Server Side Swift 2 | [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 3 | 4 | > A community curated list of resources about Server Side Swift. 5 | 6 | ## Contents 7 | 8 | - [Frameworks](#frameworks) 9 | - [Resources](#resources) 10 | - [Articles](#articles) 11 | - [Blogs](#blogs) 12 | - [Books](#books) 13 | - [Communities](#communities) 14 | - [Conferences](#conferences) 15 | - [Courses](#courses) 16 | - [Documentation](#documentation) 17 | - [Forums](#forums) 18 | - [Jobs](#jobs) 19 | - [Meetups](#meetups) 20 | - [Podcasts](#podcasts) 21 | - [Services](#services) 22 | - [Tools](#tools) 23 | - [Videos](#videos) 24 | - [Packages](#packages) 25 | - [Authentication](#authentication) 26 | - [Cloud](#cloud) 27 | - [Database](#database) 28 | - [Logging](#logging) 29 | - [Miscellaneous](#miscellaneous) 30 | - [Monitoring](#monitoring) 31 | - [Security](#security) 32 | - [Templating](#templating) 33 | - [WebSockets](#websockets) 34 | - [Powered by Server Side Swift](#powered-by-server-side-swift) 35 | - [Related Lists](#related-lists) 36 | 37 | ## Frameworks 38 | * [Kitura](https://www.kitura.io/) ([IBM-Swift/Kitura](https://github.com/IBM-Swift/Kitura)) 39 | * [MicroExpress](https://github.com/NozeIO/MicroExpress) 40 | * [Perfect](https://www.perfect.org/) ([PerfectlySoft/Perfect](https://github.com/PerfectlySoft/Perfect)) 41 | * [Smoke](https://github.com/amzn/smoke-framework) 42 | * [SwiftNIO](https://github.com/apple/swift-nio) 43 | * [Vapor](https://vapor.codes/) ([vapor/vapor](https://github.com/vapor/vapor)) 44 | 45 | ## Resources 46 | 47 | ### Articles 48 | * [A µTutorial on Swift NIO](http://www.alwaysrightinstitute.com/microexpress-nio/) 49 | * [Getting Started with SwiftNIO](https://medium.com/@fattywaffles/getting-started-with-swiftnio-40d35de15c0b) 50 | * [How to test controllers by mocking dependencies in Vapor 3 and Swift](https://mikemikina.com/blog/how-to-test-controllers-by-mocking-dependencies-in-vapor-3-and-swift/) 51 | * [Live Demo of Swift NIO In An Xcode Playground](https://david.okun.io/2018/08/02/live-demo-swift-nio/) 52 | * [Server-side Swift: Making Canopy](https://medium.com/@mxcl/server-side-swift-making-canopy-2ed586b7f5a9) 53 | * [SwiftNIO: A simple guide to async on the server](https://www.raywenderlich.com/1124580-swiftnio-a-simple-guide-to-async-on-the-server) 54 | * [TCP Server With the SwiftNIO Networking Framework](https://www.raywenderlich.com/76-tcp-server-with-the-swiftnio-networking-framework) 55 | * [Using the dependency injection framework for testing in Vapor 3 and Swift](https://mikemikina.com/blog/using-the-dependency-injection-framework-for-testing-in-vapor-3-and-swift/) 56 | * [Vapor Review – Swift Choice For the Back End](https://learningswift.brightdigit.com/vapor-swift-backend-review/) 57 | * [Vapor – Deep Dive into Setup and Deployment for Heroku and Ubuntu](https://learningswift.brightdigit.com/vapor-heroku-ubuntu-setup-deploy/) 58 | * [Watermarking photos with ImageMagick, Vapor 3 and Swift on macOS and Linux](https://mikemikina.com/blog/watermarking-photos-with-imagemagick-vapor-3-and-swift-on-macos-and-linux/) 59 | 60 | ### Blogs 61 | * [IBM Swift Engineering Blog](https://developer.ibm.com/swift/blogs/) 62 | * [The Always Right Institute](http://www.alwaysrightinstitute.com) 63 | * [The Swift Web Developer](https://theswiftwebdeveloper.com/) - Web Development using Swift on the server 64 | * [Vaporforums](http://www.vaporforums.io) - Vapor articles and tutorials 65 | 66 | ### Books 67 | * [Kitura Until Dawn](https://learnkitura.com/) 68 | * [Server Side Swift with Kitura (raywenderlich.com)](https://store.raywenderlich.com/products/server-side-swift-with-kitura) 69 | * [Server Side Swift with Vapor (raywenderlich.com)](https://store.raywenderlich.com/products/server-side-swift-with-vapor) 70 | * [Server-Side Swift (Hacking with Swift)](https://www.hackingwithswift.com/store/server-side-swift) 71 | 72 | ### Communities 73 | * [Kitura Slack](http://slack.kitura.io/) 74 | * [Perfect Slack](http://www.perfect.ly/) 75 | * [Vapor Discord](http://vapor.team/) 76 | 77 | ### Conferences 78 | * [ServerSide.swift](https://www.serversideswift.info/) - Oct 30, 2019 - Nov 1, 2019 in Copenhagen, Denmark 79 | * [Swift Cloud Workshop](https://www.swiftcloudwork.shop) - May 9th, 2019 in McLean, VA 80 | 81 | ### Courses 82 | * [Lynda - Learning Server-Side Swift Using IBM Kitura](https://www.lynda.com/Swift-tutorials/Learning-Server-Side-Swift-Using-IBM-Kitura/636122-2.html) 83 | * [objc.io - Server Side Swift](https://talk.objc.io/collections/server-side-swift) 84 | * [raywenderlich.com - Server Side Swift with Kitura](https://www.raywenderlich.com/3770-server-side-swift-with-kitura) 85 | * [raywenderlich.com - Server Side Swift with Perfect](https://www.raywenderlich.com/3989-server-side-swift-with-perfect) 86 | * [raywenderlich.com - Server Side Swift with Vapor](https://www.raywenderlich.com/870225-server-side-swift-with-vapor) 87 | * [Treehouse - Quickstart for an API using Vapor 3](https://teamtreehouse.com/library/quickstart-for-an-api-using-vapor-3) 88 | * [Udemy - Introduction to Server-Side Swift](https://www.udemy.com/introduction-to-server-side-swift/) 89 | * [Udemy - Mastering Server Side Swift Using Vapor 3](https://www.udemy.com/mastering-server-side-swift-using-vapor-3/) 90 | 91 | ### Documentation 92 | * [Kitura](https://www.kitura.io/learn.html) 93 | * [Perfect](https://www.perfect.org/documentation.html) 94 | * [SwiftNIO](https://apple.github.io/swift-nio/) 95 | * [Vapor](https://docs.vapor.codes/) 96 | 97 | ### Forums 98 | * [Swift Forums - Server](https://forums.swift.org/c/server) - Official Swift public forums 99 | 100 | ### Jobs 101 | * [Server-Side Swift Work](https://www.serversideswift.work/) - Resource for finding jobs and Server Side Swift developers 102 | 103 | ### Meetups 104 | * [Bay Area Server Side Swift Meetup](https://www.meetup.com/Bay-Area-Server-Side-Swift-Meetup/) - San Francisco, CA 105 | * [Server Side Swift](https://www.meetup.com/Server-Side-Swift-Meetup/) - Newmarket, ON 106 | * [VaporBerlin](http://vapor.berlin/) - Berlin, Germany 107 | * [VaporLondon](https://www.meetup.com/VaporLondon/) - London, United Kingdom 108 | 109 | ### Podcasts 110 | * [Fatal Error: Episode 33](https://fatalerror.fm/episodes/2017/7/10/33-server-side-swift-in-practice) - Server-Side Swift in Practice 111 | * [Fireside Swift: EP 62](https://www.firesideswift.com/episodes/2018/12/13/ep-62-its-a-thing) - IT’S A THING (Server-Side Swift) with David Okun! 112 | * [iOS Dev Discussions: Origin Stories #8](https://anchor.fm/seanallen/episodes/Origin-Stories-8---David-Okun---Kitura-e3d7ns) - David Okun (Kitura) 113 | * [iPhreaks: Episode 209](https://devchat.tv/iphreaks/ips-209-vapor-bob-synder/) - Vapor with Bob Snyder 114 | * [raywenderlich.com Podcast: S08 E05](https://www.raywenderlich.com/8542-server-side-swift-with-vapor-podcast-s08-e05) - Server Side Swift with Vapor 115 | * [raywenderlich.com Podcast: S08 E12](https://www.raywenderlich.com/1502207-kitura-podcast-s08-e12) - Kitura 116 | * [Roundabout: Creative Chaos: Episode 127](https://roundaboutfm.com/episode-127-david-okun/) - David Okun (The Kitura Guy) 117 | * [Software Engineering Daily](https://softwareengineeringdaily.com/2017/04/19/swift-on-the-server-with-chris-bailey/) - Swift on the Server with Chris Bailey 118 | * [Swift by Sundell: Episode 18](https://www.swiftbysundell.com/podcast/18)- It’s like The Matrix, with Tanner Nelson 119 | * [SwiftCoders: Episode 31](https://swiftcoders.podbean.com/e/31-patrick-bohrer-technical-lead-for-swiftibm/) - Patrick Bohrer - Technical Lead of Swift@IBM 120 | * [SwiftCoders: Episode 42](https://swiftcoders.podbean.com/e/42-chris-bailey-server-side-swift-advocate/) - Chris Bailey, Server Side Swift Advocate 121 | * [SwiftCoders: Episode 68](https://swiftcoders.podbean.com/e/68-logan-wright-full-time-oss-developer-at-vapor/) - Logan Wright, Full Time OSS Developer at Vapor 122 | * [SwiftCraft](https://swiftcraft.io/kitura-with-david-okun/) - Kitura with David Okun 123 | * [SwiftCraft](https://emanleet.com/vapor-server-side-swift-with-tim-condon/) - Vapor & Server Side Swift with Tim Condon 124 | * [The Learn Swift Podcast: Episode 20](https://learnswift.show/2018/01/09/20-david-okun-developer-advocate-ibm/) - David Okun – Developer Advocate @ IBM 125 | 126 | ### Services 127 | * [IBM Cloud](https://www.ibm.com/cloud/swift) 128 | * [Vapor Cloud](https://vapor.cloud) 129 | * [Vapor Red](https://dashboard.vapor.red/) 130 | 131 | ### Tools 132 | * [Ether](https://github.com/Ether-CLI/Ether) - A Command-Line Interface for the Swift Package Manager 133 | * [Kitura CLI](https://github.com/IBM-Swift/kitura-cli) - Kitura command-line tool 134 | * [Kitura macOS app](https://www.kitura.io/learn.html) - Kitura companion application 135 | * [KituraStudio](https://www.kitura.io/guides/kiturastudio/) - An IDE for Server-side Swift from [SCADE](https://www.scade.io/) 136 | * [Perfect Assistant](https://www.perfect.org/en/perfect-assistant.html) - Perfect companion application 137 | * [SourceKit-LSP](https://github.com/apple/sourcekit-lsp) - Language Server Protocol implementation for Swift and C-based languages 138 | * [SwiftXcode](https://swiftxcode.github.io) - Swift Package Manager from within Xcode 139 | * [Vapor Toolbox](https://github.com/vapor/toolbox) - Vapor command-line tool 140 | 141 | ### Videos 142 | * [Devslopes - Server Side Swift With Kitura](https://www.youtube.com/watch?v=0yAOMvpylXw) 143 | * [Martin Lasek’s YouTube Channel](https://www.youtube.com/channel/UCoLEXFUHIKXunm9QJjsAftw) 144 | * [Paul Hudson: Building a Vapor API with a matching iOS app](https://www.youtube.com/watch?v=pSgWwyj1gX4) 145 | * [ServerSide.swift Conference's YouTube Channel](https://www.youtube.com/channel/UCljCg3yUJnEFUkeyjUIg6AQ/featured) | [ServerSide.swift Conference](https://www.serversideswift.info/videos) 146 | * [Swift Heroes: Tim Condon - Getting started with Server-Side Swift and Vapor](https://www.youtube.com/watch?v=ReuJImJffI8) 147 | * [try! Swift NYC: Swift NIO, Vapor, and Server Concurrency](https://www.youtube.com/watch?v=RW2vKWiGWr4) 148 | * [try! Swift Tokyo 2018 - Event driven networking for Swift - YouTube](https://www.youtube.com/watch?v=QJ3WG9kRLMo) 149 | 150 | ## Packages 151 | 152 | ### Authentication 153 | * [Imperial](https://github.com/vapor-community/Imperial) - Federated Authentication with OAuth providers 154 | * [Kitura-Credentials](https://github.com/IBM-Swift/Kitura-Credentials) - A pluggable framework for validating user credentials in a Swift server using Kitura 155 | 156 | ### Cloud 157 | * [AWS Lambda Swift](https://github.com/tonisuter/aws-lambda-swift) - A custom AWS Lambda Runtime 158 | * [S3](https://github.com/LiveUI/S3) - Basic S3 access library for Vapor 159 | 160 | ### Database 161 | 162 | #### ORM 163 | * [Fluent](https://github.com/vapor/fluent) - Swift ORM framework for building NoSQL and SQL database integrations 164 | * [StORM](https://github.com/SwiftORM) 165 | * [SwifQL](https://github.com/MihaelIsaev/SwifQL) - Easily build flexible and type-safe SQL with pure Swift 166 | * [Swift-Kuery-ORM](https://github.com/IBM-Swift/Swift-Kuery-ORM) - An ORM for Swift, built on Codable 167 | 168 | #### CouchDB 169 | * [Kitura-CouchDB](https://github.com/IBM-Swift/Kitura-CouchDB) 170 | 171 | #### MongoDB 172 | * [Meow](https://github.com/OpenKitten/Meow) - MongoDB object persistence 173 | * [MongoKitten](https://github.com/OpenKitten/MongoKitten) 174 | * [Perfect MongoDB](https://github.com/PerfectlySoft/Perfect-MongoDB) 175 | 176 | #### MySQL 177 | * [Perfect MySQL](https://github.com/PerfectlySoft/Perfect-MySQL) 178 | * [SwiftKueryMySQL](https://github.com/IBM-Swift/SwiftKueryMySQL) 179 | * [Vapor MySQL](https://github.com/vapor/mysql) 180 | 181 | #### PostgreSQL 182 | * [Perfect PostgreSQL](https://github.com/PerfectlySoft/Perfect-PostgreSQL) 183 | * [PostgresClientKit](https://github.com/codewinsdotcom/PostgresClientKit) - A PostgreSQL client library for Swift. Does not require libpq. 184 | * [Swift-Kuery-PostgreSQL](https://github.com/IBM-Swift/Swift-Kuery-PostgreSQL) 185 | * [Vapor PostgreSQL](https://github.com/vapor/postgresql) 186 | 187 | #### Redis 188 | * [Disque](https://github.com/johnbona/disque) - Non-blocking, event-driven Swift client for Disque, a distributed job queue. 189 | * [Kitura Redis](https://github.com/IBM-Swift/Kitura-redis) 190 | * [Perfect Redis](https://github.com/PerfectlySoft/Perfect-Redis) 191 | * [Vapor Redis](https://github.com/vapor/redis) 192 | 193 | #### SQLite 194 | * [Perfect SQLite](https://github.com/PerfectlySoft/Perfect-SQLite) 195 | * [Swift-Kuery-SQLite](https://github.com/IBM-Swift/Swift-Kuery-SQLite) 196 | * [Vapor SQLite](https://github.com/vapor/sqlite) 197 | 198 | ### Logging 199 | * [Boomerang](https://github.com/twof/Boomerang) - Vapor middleware for logging incoming requests 200 | * [HeliumLogger](https://github.com/IBM-Swift/HeliumLogger) - A lightweight logging framework 201 | * [LoggerAPI](https://github.com/IBM-Swift/LoggerAPI) - Logger protocol 202 | * [Perfect Logging](https://github.com/PerfectlySoft/Perfect-Logger) - File-based logging for Perfect 203 | * [swift-log](https://github.com/apple/swift-log) - A logging API package for Swift 5 204 | 205 | ### Networking 206 | * [SwiftGRPC](https://github.com/grpc/grpc-swift) - [gRPC](https://grpc.io) for Swift 207 | 208 | ### Miscellaneous 209 | * [AddressManager](https://github.com/SwiftCommerce/AddressManager) - A Vapor micro-service to store address information 210 | * [Curly](https://github.com/vzsg/Curly) - cURL support for Vapor 211 | * [IkigaJSON](https://github.com/Ikiga/IkigaJSON) - A high performance JSON library in Swift 212 | * [Jobs](https://github.com/vapor/jobs) - A queue system for Vapor 213 | * [Perfect-CURL](https://github.com/PerfectlySoft/Perfect-CURL) - cURL support for Perfect 214 | * [Vapor Stripe Provider](https://github.com/vapor-community/stripe-provider) - Stripe Provider for Vapor 215 | * [VaporCron](https://github.com/MihaelIsaev/VaporCron) - Vapor cron scheduler 216 | 217 | ## Monitoring 218 | * [SwiftPrometheus](https://github.com/MrLotU/SwiftPrometheus) - Clientside Prometheus library 219 | * [VaporMonitoring](https://github.com/vapor-community/VaporMonitoring) - Monitoring for Vapor 220 | 221 | ### Security 222 | * [CSRF](https://github.com/vapor-community/CSRF) - A package to add protection to Vapor against CSRF attacks 223 | * [VaporSecurityHeaders](https://github.com/brokenhandsio/VaporSecurityHeaders) - A Middleware library for adding security headers to your Vapor application 224 | 225 | ### Templating 226 | * [HTMLKit](https://github.com/vapor-community/HTMLKit) - A lightning fast, type-safe HTML templating library 227 | * [Kitura-TemplateEngine](https://github.com/IBM-Swift/Kitura-TemplateEngine) 228 | * [Perfect Mustache](https://github.com/PerfectlySoft/Perfect-Mustache) 229 | * [Vapor Leaf](https://github.com/vapor/leaf) 230 | 231 | ### WebSockets 232 | * [Kitura WebSocket](https://github.com/IBM-Swift/Kitura-WebSocket) 233 | * [Perfect WebSockets](https://github.com/PerfectlySoft/Perfect-WebSockets) 234 | * [Vapor WebSockets](https://github.com/vapor/websocket) 235 | 236 | 237 | ## Powered by Server Side Swift 238 | * [Canopy](https://medium.com/@mxcl/server-side-swift-making-canopy-2ed586b7f5a9) - Push notifications for GitHub activity. 239 | * [Point-Free](https://github.com/pointfreeco/pointfreeco) - A video series on Swift and functional programming 240 | * [ServerSideSwift.racing](http://www.serversideswift.racing/) 241 | * [Swift Talk (objc.io)](https://www.objc.io/blog/2019/02/12/open-sourcing-the-swift-talk-backend/) - Weekly Swift video series 242 | * [Timing Sync](https://timingapp.com/blog/introducing-timing-sync/) - Sync service for a time-tracking app, built with Vapor and SwiftGRPC 243 | 244 | ## Related Lists 245 | * [Awesome Vapor](https://github.com/Cellane/awesome-vapor) - A curated list of Vapor-related awesome projects 246 | * [The Awesome Server Side Swift List](https://github.com/Awesome-Server-Side-Swift/TheList) - A list of Awesome Server Side Swift 3 projects 247 | 248 | ## Contributing 249 | 250 | Send a pull request or create an issue with awesome Sever Side Swift packages, resources or apps. 251 | 252 | ## License 253 | 254 | [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/) 255 | 256 | To the extent possible under law, [@cak](https://github.com/cak) has waived all copyright and related or neighboring rights to this work. 257 | --------------------------------------------------------------------------------