Zewo is a set of libraries for server side development. With Zewo you can write your web app, REST API, command line tool, database driver, etc. Our goal is to create an ecosystem around the modules and tools we provide so you can focus on developing your application or library, instead of doing everything from scratch.
Currently, we have around 50+ packages. This list grows very fast so it might be outdated. To be sure just check our GitHub organization.
- Base64
- BasicAuthMiddleware
- ChannelStream
- CHTTPParser
- CLibpq
- CLibpq-OSX
- CLibvenice
- CMySQL
- CMySQL-OSX
- ContentNegotiationMiddleware
- COpenSSL
- COpenSSL-OSX
- CURIParser
- CZeroMQ
- Data
- Event
- File
- HTTP
- http_parser
- HTTPClient
- HTTPServer
- HTTPFile
- HTTPSClient
- HTTPSServer
- InterchangeData
- IP
- JSON
- JSONMediaType
- libvenice
- Log
- LogMiddleware
- MediaType
- Mustache
- MySQL
- OpenSSL
- POSIXRegex
- PostgreSQL
- RegexRouteMatcher
- Router
- Sideburns
- SQL
- Stream
- String
- System
- TCP
- TCPSSL
- TrieRouteMatcher
- UDP
- URI
- uri_parser
- URLEncodedForm
- Venice
- WebSocket
- Zewo
Before we start we need to install some tools and dependencies. If you already installed just skip them.
Xcode is apple's software development IDE.
Homebrew is a package manager for OS X.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Swiftenv is a version manager for Swift.
brew install kylef/formulae/swiftenv
After installing you need to configure your shell.
Bash
echo 'if which swiftenv > /dev/null; then eval "$(swiftenv init -)"; fi' >> ~/.bash_profile
On some platforms, you may need to modify ~/.bashrc instead of ~/.bash_profile.
ZSH
echo 'if which swiftenv > /dev/null; then eval "$(swiftenv init -)"; fi' >> ~/.zshrc
Fish
echo 'status --is-interactive; and . (swiftenv init -|psub)' >> ~/.config/fish/config.fish
Swiftenv is a version manager for Swift.
git clone https://github.com/kylef/swiftenv.git ~/.swiftenv
After installing you need to configure your shell.
Bash
echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.bashrc
echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(swiftenv init -)"' >> ~/.bashrc
On some platforms, you may need to modify ~/.bash_profile instead of ~/.bashrc.
ZSH
echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.zshenv
echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.zshenv
echo 'eval "$(swiftenv init -)"' >> ~/.zshenv
Fish
echo 'setenv SWIFTENV_ROOT "$HOME/.swiftenv"' >> ~/.config/fish/config.fish
echo 'setenv PATH "$SWIFTENV_ROOT/bin" $PATH' >> ~/.config/fish/config.fish
echo 'status --is-interactive; and . (swiftenv init -|psub)' >> ~/.config/fish/config.fish
Restart your shell so the changes take effect.
To showcase what Zewo can do we'll create a hello world web app.
First we need to create a directory for our app.
mkdir hello && cd hello
Then we install Swift Development Snapshot from April 12, 2016.
swiftenv install DEVELOPMENT-SNAPSHOT-2016-04-12-a
swiftenv local DEVELOPMENT-SNAPSHOT-2016-04-12-a
Now we initialize the project with Swift Package Manager (SPM).
swift build --init
This command will create the basic structure for our app.
.
├── Package.swift
├── Sources
│ └── main.swift
└── Tests
Open Package.swift
with your favorite editor and add HTTPServer
and Router
as dependencies.
import PackageDescription
let package = Package(
name: "hello",
dependencies: [
.Package(url: "https://github.com/Zewo/HTTPServer.git", majorVersion: 0, minor: 5),
.Package(url: "https://github.com/Zewo/Router.git", majorVersion: 0, minor: 5)
]
)
Open main.swift
and make it look like this:
import HTTPServer
import Router
let router = Router { route in
route.get("/hello") { _ in
return Response(body: "hello world")
}
}
try Server(responder: router).start()
This code:
- Creates an HTTP server that listens on port
8080
by default. - Configures a router which will route
/hello
to a responder that responds with"hello world"
.
Now let's build the app.
swift build
After it compiles, run it.
.build/debug/hello
Now open your favorite browser and go to localhost:8080/hello
. You should see hello world
in your browser's window. 😊
Developing in Xcode can be a massive productivity boost. To generate the Xcode projects for your app, simply run:
swift build -X
Now that you now how to do your stuff manually you can make your life easier.