294 lines
14 KiB
HTML
294 lines
14 KiB
HTML
<h1 id="awesome-vapor-awesome">Awesome Vapor <a
|
||
href="https://awesome.re"><img src="https://awesome.re/badge.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p><a
|
||
href="https://vapor.codes"><img src="img/vapor-logo.png" align="right" width="150"></a></p>
|
||
<p><a href="https://vapor.codes">Vapor</a> is currently one of the most
|
||
popular server-side Swift frameworks. It allows you to take the language
|
||
you already know if you ever developed an iOS application and use it in
|
||
a whole new way, to develop fast, scalable and reliable back-end systems
|
||
that integrate easily with a wide range of third party services. This is
|
||
a curated list of:</p>
|
||
<ul>
|
||
<li>modern libraries that easily integrate with Vapor and follow Vapor’s
|
||
philosophy of providing simple, clean yet powerful APIs;</li>
|
||
<li>well-written tutorials, books, videos and education materials;</li>
|
||
<li>tools to make your development process simpler and more
|
||
enjoyable;</li>
|
||
<li>and more!</li>
|
||
</ul>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#how-to-use">How to use</a></li>
|
||
<li><a href="#libraries">Libraries</a></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#services">Services</a></li>
|
||
<li><a href="#education">Education</a>
|
||
<ul>
|
||
<li><a href="#articles">Articles</a></li>
|
||
<li><a href="#books">Books</a></li>
|
||
<li><a href="#newsletters">Newsletters</a></li>
|
||
<li><a href="#videos">Videos</a></li>
|
||
</ul></li>
|
||
<li><a href="#open-source-projects">Open-source Projects</a></li>
|
||
<li><a href="#license">License</a></li>
|
||
</ul>
|
||
<h2 id="how-to-use">How to use</h2>
|
||
<p>Simply press <kbd>Command</kbd> + <kbd>F</kbd> to search for a
|
||
keyword. If you’re only interested in entries related to <a
|
||
href="https://github.com/Cellane/awesome-vapor/blob/filtered/vapor-3.md">Vapor
|
||
3</a> or only to <a
|
||
href="https://github.com/Cellane/awesome-vapor/blob/filtered/vapor-4.md">Vapor
|
||
4</a>, you may use the automatically generated filtered lists available
|
||
on the <code>filtered</code> branch by visiting the links in this
|
||
sentence. You may also find the legacy archived content in the
|
||
<code>legacy</code> folder.</p>
|
||
<h2 id="libraries">Libraries</h2>
|
||
<ul>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/skelpo/APIErrorMiddleware">API Error
|
||
Middleware</a> – Vapor middleware for converting thrown errors to JSON
|
||
responses.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/apns">APNS</a> – Vapor APNS for
|
||
iOS.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/bugsnag">Bugsnag</a> – Report
|
||
errors with Bugsnag.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/makoni/couchdb-vapor">CouchDB Client</a> –
|
||
Simple CouchDB client for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/twof/VaporCRUDRouter">CrudRouter</a> –
|
||
Automatic RESTful CRUD router generation for any Fluent Model.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/CSRF">CSRF</a> – A package to
|
||
add protection to Vapor against CSRF attacks.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/skelpo/CSV">CSV Framework</a> – A simple
|
||
framework to read and write CSV files.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/ferno">Ferno</a> – Vapor
|
||
Firebase Realtime database provider.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/flash">Flash</a> – Flash messages
|
||
between views.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/MihaelIsaev/FluentQuery">FluentQuery</a> –
|
||
Build complex raw SQL queries while still using Swift keypaths.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/gatekeeper">Gatekeeper</a> – Rate
|
||
limiting middleware for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/google-cloud-provider">Google
|
||
Cloud Provider</a> – Interact with Google Cloud Platform APIs from your
|
||
Vapor project.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/Jinxiansen/Guardian">Guardian</a> – Modern
|
||
rate-limiting middleware.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/Imperial">Imperial</a> –
|
||
Federated Authentication with OAuth providers.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/jwt-keychain">JWT Keychain</a> –
|
||
Easily scaffold a keychain using JWT for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/skelpo/JWTMiddleware">JWT Middleware</a> –
|
||
Middleware to Authenticate and Authorize Requests in Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/brokenhandsio/leaf-error-middleware">Leaf Error
|
||
Middleware</a> – Serve up custom 404 and server error pages for your
|
||
Vapor App.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/leaf-markdown">Leaf
|
||
Markdown</a> – Markdown renderer for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/Lingo-Vapor">Lingo Vapor</a> –
|
||
Vapor provider for Lingo – the Swift localization library.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/gperdomor/local-storage">Local Storage</a> –
|
||
Storage driver using local filesystem.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/LiveUI/MailCore">MailCore</a> – Sending e-mails
|
||
via SMTP, MailGun and SendGrid.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/OpenKitten/Meow">Meow</a> – An alternative
|
||
codable ORM for MongoDB.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/OpenKitten/MongoKitten">MongoKitten</a> –
|
||
MongoDB driver in Swift.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/pagination">Pagination</a> –
|
||
Simple Vapor 3 Pagination.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/paginator">Paginator</a> – Query
|
||
pagination for Vapor and Fluent.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/LiveUI/S3">S3</a> – Library for accessing the
|
||
Amazon S3 service (and compatible) with support for most commonly used
|
||
operations.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/anthonycastelli/s3-storage">S3 Storage</a> –
|
||
Library for simple access to the Amazon S3 service.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/gperdomor/sanitize">Sanitize</a> – Powerful
|
||
model extraction from Vapor JSON requests.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/sendgrid-provider">SendGrid
|
||
Provider</a> – SendGrid-powered mail backend for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/hallee/vapor-simple-file-logger">SimpleFileLogger</a>
|
||
– A simple file logging provider for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/slugify">Slugify</a> – Convenience
|
||
for sluggifying your strings.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/storage">Storage</a> – Eases the
|
||
use of multiple storage and CDN services.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/stripe-provider">Stripe
|
||
Provider</a> – Stripe Provider for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/submissions">Submissions</a> –
|
||
Conveniences for creating forms and validating (form) submissions.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/nodes-vapor/sugar">Sugar</a> – A package of
|
||
sugar for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/MihaelIsaev/SwifQL">SwifQL</a> – Easily build
|
||
flexible and type-safe SQL with pure Swift.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/swiftybeaver-provider">SwiftyBeaver
|
||
Provider</a> – SwiftyBeaver Logging Provider for Vapor, the server-side
|
||
Swift web framework.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/telesign-provider">Telesign
|
||
Provider</a> – A Telesign provider for Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/VaporMailgunService">Vapor
|
||
Mailgun Service</a> – A service to be used with Vapor to send
|
||
emails.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/gotranseo/vapor-recaptcha">Vapor reCAPTCHA</a>
|
||
– Validate Google reCAPTCHAs using Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/skelpo/vapor-request-storage">Vapor Request
|
||
Storage</a> – A replacement for <code>request.storage</code> which was
|
||
available in Vapor 1 & 2.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/brokenhandsio/VaporSecurityHeaders">Vapor
|
||
Security Headers</a> – Harden Your Security Headers For Vapor.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/LiveUI/VaporTestTools">Vapor Test Tools</a> –
|
||
Helper designed to make testing your endpoints in Vapor 3
|
||
pain-free.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/vapor-community/vapor-ext">VaporExt</a> – A
|
||
collection of Swift extensions for wide range of Vapor data types and
|
||
classes.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/MihaelIsaev/wkhtmltopdf">WKHTMLTOPDF</a> –
|
||
Build PDF files from Leaf templates or web pages through the
|
||
<code>wkhtmltopdf</code> CLI tool.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/LiveUI/XMLCoding">XMLCoding</a> – XML encoder
|
||
and decoder.</li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Ether-CLI/Ether">Ether</a> – A
|
||
Command-Line Interface for the Swift Package Manager.</li>
|
||
<li><a href="https://github.com/vzsg/heroku-buildpack-curl-http2">Heroku
|
||
buildpack: curl with HTTP/2 support</a></li>
|
||
<li><a href="https://github.com/jakeheis/Ice">Ice</a> – A developer
|
||
friendly package manager for Swift; 100% compatible with Swift Package
|
||
Manager.</li>
|
||
<li><a href="https://github.com/krzysztofzablocki/Sourcery">Sourcery</a>
|
||
– Meta-programming for Swift, stop writing boilerplate code.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/gabrielepalma/sublimate">Sublimate</a> – Fast
|
||
prototyping with synchronization and authentication based on
|
||
Sourcery.</li>
|
||
<li><a href="https://github.com/LiveUI/Swifter">Swifter</a> – A macOS
|
||
tool to help you manage your Xcode projects and give you a quick access
|
||
to DerivedData folder cleaning and management.</li>
|
||
</ul>
|
||
<h2 id="services">Services</h2>
|
||
<ul>
|
||
<li><a href="https://vapor.cloud">Vapor Cloud</a></li>
|
||
<li><a href="https://vapor.red">Vapor Red</a></li>
|
||
</ul>
|
||
<h2 id="education">Education</h2>
|
||
<h3 id="articles">Articles</h3>
|
||
<ul>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://learningswift.brightdigit.com/vapor-heroku-ubuntu-setup-deploy/">Deep
|
||
Dive into Setup and Deployment for Heroku and Ubuntu</a></li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://mikemikina.com/blog/how-to-test-controllers-by-mocking-dependencies-in-vapor-3-and-swift/">How
|
||
to test controllers by mocking dependencies in Vapor 3 and
|
||
Swift</a></li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://mihaelamj.github.io/Vapor%20%203%20Tutorial/">Vapor 3
|
||
Tutorials</a> – Big collection of small tutorials.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://www.skelpo.com/blog/vapor2-to-vapor3/">Transforming from
|
||
Vapor 2 to Vapor 3</a> – Transitioning from Vapor 2 to Vapor 3 with a
|
||
real world project.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://medium.com/@martinlasek">Tutorials for Beginner to
|
||
Advanced</a> – Written tutorials for Beginner to Advanced.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://mikemikina.com/blog/using-the-dependency-injection-framework-for-testing-in-vapor-3-and-swift/">Using
|
||
the dependency injection framework for testing in Vapor 3 and Swift</a>
|
||
– How to use dependency injection framework which will help you manage
|
||
dependencies and mock them inside your tests.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://mikemikina.com/blog/watermarking-photos-with-imagemagick-vapor-3-and-swift-on-macos-and-linux/">Watermarking
|
||
photos with ImageMagick, Vapor 3 and Swift on macOS and Linux</a> –
|
||
Tutorial on how to use the ImageMagick library in Swift.</li>
|
||
<li><img src="img/vapor-4.png" alt="v4" /> <a
|
||
href="https://theswiftdev.com/2019/08/26/whats-new-in-vapor-4/">What’s
|
||
new in Vapor 4?</a></li>
|
||
</ul>
|
||
<h3 id="books">Books</h3>
|
||
<ul>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://store.raywenderlich.com/products/server-side-swift-with-vapor">Server
|
||
Side Swift with Vapor</a></li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://www.hackingwithswift.com/store/server-side-swift">Server-Side
|
||
Swift (Vapor Edition)</a></li>
|
||
</ul>
|
||
<h3 id="newsletters">Newsletters</h3>
|
||
<ul>
|
||
<li><a href="http://vapornation.news">VaporNation</a> – Weekly Vapor
|
||
newsletter with all things Vapor.</li>
|
||
</ul>
|
||
<h3 id="videos">Videos</h3>
|
||
<ul>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://www.raywenderlich.com/4493-server-side-swift-with-vapor/lessons/1">Server
|
||
Side Swift with Vapor</a></li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://www.youtube.com/channel/UCoLEXFUHIKXunm9QJjsAftw/videos">Vapor
|
||
- Beginner to Advanced</a></li>
|
||
</ul>
|
||
<h2 id="open-source-projects">Open-source Projects</h2>
|
||
<ul>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/brokenhandsio/SteamPress">SteamPress</a> – A
|
||
Blogging Engine and Platform written in Swift for use with the Vapor
|
||
Framework.</li>
|
||
<li><img src="img/vapor-3.png" alt="v3" /> <a
|
||
href="https://github.com/skelpo/UserManager">User Manager Service</a> –
|
||
A small, useful user manager made for production application
|
||
setups.</li>
|
||
</ul>
|
||
<h2 id="license">License</h2>
|
||
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
|
||
src="https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg"
|
||
alt="CC0" /></a></p>
|
||
<p>To the extent possible under law, <em>Milan Vit</em> has waived all
|
||
copyright and related or neighbouring rights to this work.</p>
|