This is the documentation for Vapor, a Web Framework for Swift that works on iOS, macOS, and Ubuntu; and all of the packages that Vapor offers.
Vapor is the most used web framework for Swift. It provides a beautifully expressive and easy to use foundation for your next website or API.
Where To Start¶
If this is your first time using Vapor, head to the Getting Started section to install Swift and create your first app.
Here are some other great places to find information about Vapor.
Auto-generated API documentation is located at api.vapor.codes.
View or ask questions related to Vapor on Stack Overflow using the
To view the framework's source code and code documentation, visit Vapor's GitHub.
Vapor is a modular framework built for a modular language. Code is split up into modules which are grouped to form packages. Packages can be added to your project by adding the package's Git url to your
Package.swift file. Once a package is included, all of its modules will be available to
import. You can read more about packages and modules in the Swift Package Manager conceptual overview.
Below is a list of packages and modules that come with or can be used by Vapor projects. Packages will have a link to their respective GitHub page.
Here is a list of all the packages and modules included with Vapor.
While these packages are included in Vapor by default, they can also be used individually.
- Vapor: Swift's most used web framework.
- Auth: User authentication and persistance.
- Sessions: Secure, ephemeral cookie based data storage.
- Cookies: HTTP cookies.
- Routing: Advanced router with type-safe parameterization.
- Engine: Core transport layers.
- HTTP: Pure Swift HTTP client and server.
- URI: Pure Swift URI parsing and serializing.
- WebSockets: Full-duplex communication channels over a single TCP connection.
- SMTP: Send email using Sendgrid and Gmail.
- Multipart: Fast, streaming, non-blocking multipart parser and serializer.
- Multipart: Parses and serializes
- FormData: Parses and serializes
- Multipart: Parses and serializes
- JSON: Conveniences for working with JSON in Swift.
- Console: Swift wrapper for console IO and commands.
- TLS: Swift wrapper for CLibreSSL's new TLS.
- Crypto: Cryptography from LibreSSL and Swift.
- Digests: Hashing with and without authentication.
- Ciphers: Encryption and decryption
- Random: Pseudo and cryptographically secure randomness.
- BCrypt: Pure Swift implementation.
- Node: Data structure for easy type conversions.
- Core: Core extensions, type-aliases, and functions that facilitate common tasks.
- Socks: Swift C Socket API wrapper.
These are officially supported packages for Vapor that are not included by default.
- Fluent: Models, relationships, and querying for NoSQL and SQL databases.
- Fluent Provider: Fluent provider for Vapor.
- MySQL: Robust MySQL interface for Swift.
- Leaf: An extensible templating language.
- Leaf Provider: Leaf provider for Vapor.
- Redbird: Pure-Swift Redis client implemented from the original protocol spec..
- Redis Provider: Redis cache provider for Vapor.
- JWT: JSON Web Tokens in Swift.
- JWT Provider: JWT conveniences for Vapor.
These are packages created by community members that work great with Vapor.
- PostgreSQL: Robust PostgreSQL interface for Swift.
- MongoKitten*: Native MongoDB driver for Swift, written in Swift
- Kitura Provider: Use IBM's Kitura HTTP server in Vapor.
- SwiftyBeaver: Adds the powerful logging of SwiftyBeaver to Vapor.
- APNS: Simple APNS Library for Vapor (Swift).
- VaporFCM: Simple FCM (iOS + Android Push Notifications) library built for Vapor in Swift.
- VaporS3Signer: Generate V4 Auth Header/Pre-Signed URL for AWS S3 REST API
- Flock: Automated deployment of Swift projects to servers
- VaporFlock: Use Flock to deploy Vapor applications
- VaporForms: Brings simple, dynamic and re-usable web form handling to Vapor.
- Jobs: A minimalistic job/background-task system for Swift.
- Heimdall: An easy to use HTTP request logger.
Vapor providers are a convenient way to add functionality to your Vapor projects. For a full list of providers, check out the
vapor-provider tag on GitHub.