π Hey there!
Please note: This project is still in Alpha Version and weβre actively working on forking over a lot of nifty features from SwiftEngine to make it compatible with SwiftNIO. We appreciate any contributors or testers joining our project!
- Swift on Back-End - Improve productivity by using the modern Swift language for all your app's development needs (learn more)
- Auto compilation - Increase the speed of your endpoints as each file is individually compiled. If a file has not been modified since it was last used, it won't need to be recompiled (learn more)
- Automated Routing Logic - Avoid writing custom routers; SwiftEngine will automagically route each request to the desired file (learn more)
- Uptime Resiliency - Reduce risk by leveraging a fail-safe and high-availability operating environment where each client requests functions independently (learn more)
- Easy web based run-time error analysis - Save time by not having to dig through shell dumps; SwiftEngine displays the full error trace on your browser for easy debugging (learn more)
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
What are the dependencies we need to get this to work?
OS | Version |
---|---|
macOS | 10.13+ |
Ubuntu | 14.04, 16.04, 16.10 |
- Clone this repo:
git clone https://github.com/swiftengine/SwiftEngine.git
cd
toSwiftEngine
directory and runsudo ./install.sh
- Run
./run.sh
This should start the server running and listening on port8887
Programming your site:
- Create a new
mypage.swift
file within the/var/swiftengine/www/
directory (see example below) - From the browser, enter the following url
http://<machine_ip>:8887/mypage
(by default this islocalhost:8887
)
That's it! No compilation or dealing with shell dumps required! Your requested endpoints will be automagically compiled during the first request, and results will be shown.
Any swift file you place in /var/swiftengine/www
will be accessible through the browser without the .swift
extension.
Read more about SwiftEngine's autonomous system and routing logic (here)
// Import SwiftEngine essentials
import SwiftEngine
// specify other required files for this file
//se: require /common.swift
// Entry Point function; where all code begins
func entryPoint(ctx: RequestContext) {
// add GET handlers to the request context
ctx.addHandler(forMethod:"GET", withRoute:"*"){
req, res in
res.write("Hello from SwiftEngine! ")
}
// add POST handlers to the request context
ctx.addHandler(forMethod:"POST", withRoute:"*"){
req, res in
res.write("Handle for POST request method")
}
// add catch-all handlers to the request context
ctx.addHandler(forMethod:"*", withRoute:"*"){
req, res in
res.write("Handle for catch-all")
}
}
- SwiftNIO
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us. Contributing to SwiftEngine Project:
- Fork the repo by clicking the button at the top left of the screen
- After it has finished forking, click the green "Clone or download" button, copy the URL displayed, and enter the command
git clone [URL]
- Make the changes you wish and push them back to your repo
- Submit a pull request
- Spartak Buniatyan - Founder - SpartakB
- Brandon Holden - Developer - brandon-holden
This project is licensed under the Mozilla Public License Version 2.0 - see the LICENSE.md file for details