Perfect README

The project's README from github.com/PerfectlySoft/Perfect. As one markdown file: README.md.

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 community’s 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.

Documentation

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

We welcome contributions to Perfect’s 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.

Community

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

Slack | Twitter

Deployment

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:

Examples

DataSources

Utilities

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 [email protected]. 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 (PerfectlySoft/Perfect)

Searching Database…

13.7K ·GitHub
What is this?Perfect is a complete toolbox, framework, and application server for server-side Swift: Swift developers use it to build websites, REST services, and mobile back ends entirely in Swift.
So is it a framework, a library, or a whole server?All three at once. This repo holds the core PerfectLib, and separate modules add an HTTP 1.1 server, database connectors, WebSockets, Mustache templating, and more — you assemble the pieces your service needs.
How do I start my first project with it?Clone the Perfect Template starter project and compile it with the Swift Package Manager — it builds into a standalone executable HTTP server. A beginner tutorial and a full API reference are published alongside.
What do I need installed before I can build anything?Only Swift itself: the master branch compiles with Xcode 11 or the Swift 5 toolchain on Ubuntu, so a Mac with Xcode or an Ubuntu box with Swift 5 is enough.
Is this still actively maintained?No. The repo is now labeled Legacy Perfect, so treat it as a mature but frozen project: fine for learning or existing services, but verify compatibility before starting something new on it.
Do I have to be a Swift developer to use it?Yes — Perfect is written for Swift engineers who want one language on both the client and server side, though the guide targets all experience levels.
Where can I deploy the finished service?To any Swift-compatible Linux server. There is also Perfect Assistant, a macOS desktop app that helps with AWS and Google Cloud deployments.
Which databases can it connect to out of the box?Official connectors ship for Redis, SQLite, PostgreSQL, MySQL, MongoDB, and FileMaker Server, plus a FastCGI module for Apache 2.4 if you host through Apache instead of the built-in server.
Why write a web server in Swift?The pitch is one language everywhere: iOS and macOS developers can build their apps and their server-side REST services with the same toolset, which the README says boosts productivity.
Is the networking stack asynchronous?Yes. Perfect runs on a completely asynchronous, high-performance networking engine aimed at scalable internet services, and you can swap in your favourite JSON or templating systems instead of the built-ins.
What sample projects can I learn from?Community examples include a WebSockets server, URL routing, and an upload enumerator, with more in the Perfect Examples repository and a starter tutorial for the first steps.
What are similar projects?drogon, aiohttp, chat, vapor, sails, martini, carno.js, gin-vue-admin
Size
5.3 MB
Stars
13.7K
Age
11y
Commits · 90 Days