Sappy is a simple, single-page application (SPA) web server for end-to-end testing.

The Python standard library includes a web server that works great for serving up files:

$ python3 -m http.server 8080
Serving HTTP on port 8080 ...

$ curl http://localhost:1234/index.html
<!DOCTYPE html>
    <title>Example Index</title>

But when used to serve up single-page applications, a 404 is returned whenever any page other than the index is accessed directly:

$ curl http://localhost:8080/login
<!DOCTYPE html>
<html lang=en>
  <title>Error 404 (Not Found)</title

This project builds on the existing web server code to forward all requests to the index. The single-page application’s client-side routing can then display the page that corresponds to that request’s URL.



  • Python 3.5+


Install sappy with pip:

$ pip install sappy

or directly from the source code:

$ git clone https://github.com/jacebrowning/sappy.git
$ cd sappy
$ python setup.py install


Build your static website (e.g. an Ember application) for production:

$ ember build --environment=production
Built project successfully. Stored in "dist/".

Then serve up the application:

$ sappy
Serving /home/browning/project/dist/ on 8080

Check out the documentation or command-line help for additional options:

$ sappy --help