✎ Edit on GitHub

# Vapor Documentation

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.

To view the framework's source code and code documentation, visit Vapor's GitHub.

Read this in Spanish

Read this in 正體中文

Read this in 简体中文

## How To Read

You can read this guide by clicking through the folders and markdown files on GitHub or through the rendered GitHub Pages.

## API

Auto-generated API documentation is located at api.vapor.codes.

## Packages

Here are a list of all the packages and modules included with Vapor (also useable 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.
- Fluent: Models, relationships, and querying for NoSQL and SQL databases.
- 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 `multipart/mixed`.
  - FormData: Parses and serializes `multipart/form-data`.
- Leaf: An extensible templating language.
- JSON: Maps Jay JSON to Vapor types.
- 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.
  - Polymorphic: Syntax for easily accessing values from common types like JSON.
  - Path Indexable: A protocol for powerful subscript access of common types like JSON.
- Core: Core extensions, type-aliases, and functions that facilitate common tasks.
- Socks: Swift C Socket API wrapper.

## Providers & Other

Here are a list of providers and third party packages that work great with Vapor.

- MySQL: Robust MySQL interface for Swift.
  - MySQL Driver: MySQL driver for Fluent.
  - MySQL Provider: MySQL provider for Vapor.
- SQLite: SQLite 3 wrapper for Swift
  - SQLite Driver: SQLite driver for Fluent.
  - SQLite Provider: SQLite provider for Vapor.
- PostgreSQL: Robust PostgreSQL interface for Swift.
  - PostgreSQL Driver: PostgreSQL driver for Fluent.
  - PostgreSQL Provider: PostgreSQL provider for Vapor.
- MongoKitten*: Native MongoDB driver for Swift, written in Swift
  - Mongo Driver: MongoKitten driver for Fluent.
  - Mongo Provider: MongoKitten provider for Vapor.
  - MainecoonVapor: MongoKitten ORM for Vapor.
- Redbird: Pure-Swift Redis client implemented from the original protocol spec..
  - Redis Provider: Redis cache provider for Vapor.
- 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.
- JWT: JWT implementation for Vapor.
- 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.

## Authors

Tanner Nelson, Logan Wright,and the hundreds of members of Vapor.