# Awesome Vapor

Vapor 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:

- modern libraries that easily integrate with Vapor and follow Vapor’s philosophy of providing simple, clean yet powerful APIs;
- well-written tutorials, books, videos and education materials;
- tools to make your development process simpler and more enjoyable;
- and more!

## Contents

- How to use
- Libraries
- Tools
- Services
- Education
  - Articles
  - Books
  - Newsletters
  - Videos
- Open-source Projects
- License

## How to use

Simply press `Command` + `F` to search for a keyword. If you’re only interested in entries related to Vapor 3 or only to Vapor 4, you may use the automatically generated filtered lists available on the `filtered` branch by visiting the links in this sentence. You may also find the legacy archived content in the `legacy` folder.

## Libraries

- API Error Middleware – Vapor middleware for converting thrown errors to JSON responses.
- APNS – Vapor APNS for iOS.
- Bugsnag – Report errors with Bugsnag.
- CouchDB Client – Simple CouchDB client for Vapor.
- CrudRouter – Automatic RESTful CRUD router generation for any Fluent Model.
- CSRF – A package to add protection to Vapor against CSRF attacks.
- CSV Framework – A simple framework to read and write CSV files.
- Ferno – Vapor Firebase Realtime database provider.
- Flash – Flash messages between views.
- FluentQuery – Build complex raw SQL queries while still using Swift keypaths.
- Gatekeeper – Rate limiting middleware for Vapor.
- Google Cloud Provider – Interact with Google Cloud Platform APIs from your Vapor project.
- Guardian – Modern rate-limiting middleware.
- Imperial – Federated Authentication with OAuth providers.
- JWT Keychain – Easily scaffold a keychain using JWT for Vapor.
- JWT Middleware – Middleware to Authenticate and Authorize Requests in Vapor.
- Leaf Error Middleware – Serve up custom 404 and server error pages for your Vapor App.
- Leaf Markdown – Markdown renderer for Vapor.
- Lingo Vapor – Vapor provider for Lingo – the Swift localization library.
- Local Storage – Storage driver using local filesystem.
- MailCore – Sending e-mails via SMTP, MailGun and SendGrid.
- Meow – An alternative codable ORM for MongoDB.
- MongoKitten – MongoDB driver in Swift.
- Pagination – Simple Vapor 3 Pagination.
- Paginator – Query pagination for Vapor and Fluent.
- S3 – Library for accessing the Amazon S3 service (and compatible) with support for most commonly used operations.
- S3 Storage – Library for simple access to the Amazon S3 service.
- Sanitize – Powerful model extraction from Vapor JSON requests.
- SendGrid Provider – SendGrid-powered mail backend for Vapor.
- SimpleFileLogger – A simple file logging provider for Vapor.
- Slugify – Convenience for sluggifying your strings.
- Storage – Eases the use of multiple storage and CDN services.
- Stripe Provider – Stripe Provider for Vapor.
- Submissions – Conveniences for creating forms and validating (form) submissions.
- Sugar – A package of sugar for Vapor.
- SwifQL – Easily build flexible and type-safe SQL with pure Swift.
- SwiftyBeaver Provider – SwiftyBeaver Logging Provider for Vapor, the server-side Swift web framework.
- Telesign Provider – A Telesign provider for Vapor.
- Vapor Mailgun Service – A service to be used with Vapor to send emails.
- Vapor reCAPTCHA – Validate Google reCAPTCHAs using Vapor.
- Vapor Request Storage – A replacement for `request.storage` which was available in Vapor 1 & 2.
- Vapor Security Headers – Harden Your Security Headers For Vapor.
- Vapor Test Tools – Helper designed to make testing your endpoints in Vapor 3 pain-free.
- VaporExt – A collection of Swift extensions for wide range of Vapor data types and classes.
- WKHTMLTOPDF – Build PDF files from Leaf templates or web pages through the `wkhtmltopdf` CLI tool.
- XMLCoding – XML encoder and decoder.

## Tools

- Ether – A Command-Line Interface for the Swift Package Manager.
- Heroku buildpack: curl with HTTP/2 support
- Ice – A developer friendly package manager for Swift; 100% compatible with Swift Package Manager.
- Sourcery – Meta-programming for Swift, stop writing boilerplate code.
- Sublimate – Fast prototyping with synchronization and authentication based on Sourcery.
- Swifter – A macOS tool to help you manage your Xcode projects and give you a quick access to DerivedData folder cleaning and management.

## Services

- Vapor Cloud
- Vapor Red

## Education

### Articles

- Deep Dive into Setup and Deployment for Heroku and Ubuntu
- How to test controllers by mocking dependencies in Vapor 3 and Swift
- Vapor 3 Tutorials – Big collection of small tutorials.
- Transforming from Vapor 2 to Vapor 3 – Transitioning from Vapor 2 to Vapor 3 with a real world project.
- Tutorials for Beginner to Advanced – Written tutorials for Beginner to Advanced.
- Using the dependency injection framework for testing in Vapor 3 and Swift – How to use dependency injection framework which will help you manage dependencies and mock them inside your tests.
- Watermarking photos with ImageMagick, Vapor 3 and Swift on macOS and Linux – Tutorial on how to use the ImageMagick library in Swift.
- What’s new in Vapor 4?

### Books

- Server Side Swift with Vapor
- Server-Side Swift (Vapor Edition)

### Newsletters

- VaporNation – Weekly Vapor newsletter with all things Vapor.

### Videos

- Server Side Swift with Vapor
- Vapor - Beginner to Advanced

## Open-source Projects

- SteamPress – A Blogging Engine and Platform written in Swift for use with the Vapor Framework.
- User Manager Service – A small, useful user manager made for production application setups.

## License

To the extent possible under law, Milan Vit has waived all copyright and related or neighbouring rights to this work.

vapor.md Github