Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)

Subscribe to updates I use Perfect

Statistics on Perfect

Number of watchers on Github 13768
Number of open issues 60
Main language Swift
Average time to merge a PR 5 days
Open pull requests 31+
Closed pull requests 12+
Last commit 4 months ago
Repo Created almost 5 years ago
Repo Last Updated 2 months ago
Size 5.33 MB
Homepage https://www.perfe...
Organization / Authorperfectlysoft
Latest Releasev1.0.0
Page Updated
Do you use Perfect? Leave a review!
View open issues (60)
View Perfect activity
View on github
Book a Mock Interview With Me (Silicon Valley Engineering Leader, 100s of interviews conducted)
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating Perfect for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Perfect: Server-Side Swift

Get Involed with Perfect!

Swift 5.2 Platforms macOS | Linux License Apache

Perfect: Server-Side Swift

Perfect is a complete and powerful toolbox, framework, and application server for Linux, iOS, and macOS (OS X). It provides everything a Swift engineer needs for developing lightweight, maintainable, and scalable apps and other REST services entirely in the Swift programming language for both client-facing and server-side applications.

Perfect includes a suite of tools that will enhance your productivity as you use only one programming language to build your apps: Swift. The global development communitys most dynamic and popular server-side toolbox and framework available today, Perfect is the backbone for many live web applications and apps available on iTunes.

This guide is designed for developers at all levels of experience to get Perfect up and running quickly.

Working with Perfect

Compatibility with Swift

The master branch of this project currently compiles with Xcode 11 or the Swift 5 toolchain on Ubuntu.

Getting Started

Access a tutorial to help you get started using Perfect quickly. It includes straightforward examples of how Perfect can be used.


Get started working with Perfect, deploy your apps, and find more detailed help by consulting our reference library.

We welcome contributions to Perfects documentation. If you spot a typo, bug, or other errata, or have additions or suggestions to recommend, please create a pull request or issue in Github.


We all need a little help now and then. If you do too, dont be shy, ask us or the friendly and supportive Perfect community:

Slack | Twitter


Your Perfect project can be deployed to any Swift compatible Linux server. We provide a macOS desktop application, Perfect Assistant, to help with AWS and Google Cloud deployments. Additional deployment options are in the works.

Samples, Examples, and Tutorials

Our library continues to grow as members of the Swift-Perfect development community have shared many samples and examples of their projects in Perfect. Examples include:

There are many more examples you can explore. Please share yours!

Core Perfect Modules

Perfect project is divided into several repositories to make it easy for you to find, download, and install the components you need:

  • Perfect This repository contains the core PerfectLib and will continue to be the main landing point for the project
  • Perfect Docs Contains all API reference-related material


  • Perfect Template- A simple starter project which compiles with the Swift Package Manager into a standalone executable HTTP server. This repository is ideal for starting a Perfect-based project
  • Perfect Examples- All the Perfect example projects



More about Perfect

Perfect operates using either a standalone HTTP server, HTTPS server, or through FastCGI server. It provides a system for loading your Swift-based modules at startup, for interfacing those modules with its request/response objects, or to the built-in Mustache template processing system.

Perfect is built on a completely asynchronous, high-performance networking engine to provide a scalable option for internet services. It supports Secure Sockets Layer (SSL) encryption, and it features a suite of tools commonly required by internet servers such as WebSockets and iOS push notifications, but you are not limited to those options.

Feel free to use your favourite JSON or templating systems, etc.

Join and Contribute to the Community

The Swift-Perfect developer community is vital to improving Perfect and supporting one another.

You can help other developers by sharing your expertise and tips, as well as learn from others, by joining the Perfect Slack channel. Contributions of all kinds are welcome: reporting issues, updating documentation, fixing bugs, building examples, sharing projects, and any other tips that may help the Swift-Perfect community.

If you would like to share your example project, tutorial, or video, please share the URL of your work on GitHub and Twitter, and the Perfect team will highlight it to the community.

Code of Conduct

The Perfect team welcomes people of all ethnicities, nationalities, ages, gender, disability, levels of experience, and religious beliefs to use and contribute to the Perfect project. We pledge to foster and enforce a harassment-free environment of openness, respect, and cooperation for everyone in all project and public spaces online or offline.

Please report any behaviour that violates our Code of Conduct to info@perfect.org. The Perfect team is committed to enforcing this Code of Conduct to ensure everyone who wishes to use, contribute to, and comment on the Perfect project may do so freely and openly and without fear of reprisal.

We will investigate all complaints of unacceptable or abusive behaviour or comments expediently, and we will maintain the confidentiality of the person who reports any perceived infraction or wrongdoing to us. We will not tolerate any form of direct or indirect harassment or discrimination within the Swift-Perfect community, and will take appropriate, fair, and corrective action to any instance of inappropriate behaviour.

The Perfect team maintains the right to remove, edit, or reject any comments, code, edits, or issues that do not align with our Code of Conduct.

Perfect open pull requests (View All Pulls)
  • Fixed a possible memory leak
  • Use old references to options names
  • Added "Embedded Content Contains Swift Code = YES" to the template
  • Added func debugStringOfTuples() -> String to PGResult.
  • [WIP] remove self
  • Swift and Perfect Installer
  • typo
  • typo
  • typo
  • mustache spelling fix
  • Change the 'Upload Enumerator Server' example to use Swift functors
  • Improved websockets html file to be a more compelling example
  • codebeat badge
  • Refactoring: responder chain
  • cURL fixes
  • Update README.md
  • Updated converter for complex data
  • Update CODE_OF_CONDUCT.md
  • minor refactoring
  • Float type support for JSONConvertible
  • Fixed README.md headers
  • Update README.md
  • README add 3 spaces
  • Replaced [String] dependency url with [Package.Dependency]
  • 170311
  • Extend 'Set' to conform to protocol 'JSONConvertible'
  • Update the Package format to the SPM 4 format, made the library .dynamic
  • Make "No such file or directory" errors more descriptive
  • Update Dir.swift
  • Implementing Environmental Utility
  • 180626
Perfect questions on Stackoverflow (View All Questions)
  • Write a program in Visual Foxpro to check a number for perfect square
  • What's perfect counterpart in Python for "while not eof"
  • Pixel-perfect shader in Unity
  • Min-cost perfect matching
  • How Java Convert latin to UTF-8 perfect?
  • Responsive CSS not perfect square triangle
  • the perfect way of implementing javascript 'outerHTML' as exactly native way
  • how to crop a screenshot for perfect margin of the drawing based on the pixel value
  • Maintain perfect circle with img-circle in Boostrap
  • select box work as toggle button in internet explorere while in other browser its working perfect
  • How to get perfect X , Y position of rotating UIView in ios
  • How To Get A Perfect Position Of Rotating View?
  • pixel perfect image cause flicker smooth move fail rounding css transform or css transition
  • What is the perfect way to detect a tablet?
  • how to disable tap in perfect scrollbar.js
  • Create the perfect JPA entity
  • Engine initialization returns an error while on IIS but perfect on localHost
  • How to interpret almost perfect accuracy and AUC-ROC but zero f1-score, precision and recall
  • Creating the perfect resume - Anyway to put some sort of markdown in a resume that hides clipboard copy?
  • Unable to run logistic regression due to "perfect separation error"
  • O(log log n) algorithm for determining if n is perfect square
  • Using MySQL connector in Perfect framework
  • Choosing a cross-platform graphics library for perfect text rendering
  • Program to find and print the first perfect square (i*i) whose last two digits are both odd
  • json file Parse error on line . Expecting 'EOF' but it looks perfect
  • finding the number of perfect squares in the given range
  • Why does chrome play the HTML5 video in bad quality when Firefox plays it in perfect quality
  • Perfect square buttons in Unity3d
  • Codility Flags, almost perfect, can't understand which edge case is the cause of failure
  • calculating not perfect circles
Perfect list of languages used
Perfect latest release notes
v1.0.0 Perfect Version 1.0

PerfectLib and Server version 1.0.

More projects by PerfectlySoft View all
Other projects in Swift
Powered by Autocode - Instant Webhooks, Scripts and APIs
Autocode logo wordmark