tomohisa / Docs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Getting started

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.

Zewo Packages

External Packages

Installation

Before we start we need to install some tools and dependencies. If you already installed just skip them.

OS X

Install Xcode 7.3+

Xcode is apple's software development IDE.

Install Homebrew

Homebrew is a package manager for OS X.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install Swiftenv

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

Linux

Install Swiftenv

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.

Hello World Web App

To showcase what Zewo can do we'll create a hello world web app.

Configure your project

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)
    ]
)

Do your magic

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".

Build and run

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. 😊

Xcode

Developing in Xcode can be a massive productivity boost. To generate the Xcode projects for your app, simply run:

swift build -X

Next steps

Now that you now how to do your stuff manually you can make your life easier.

About


Languages

Language:JavaScript 92.9%Language:CSS 7.1%