Python Static Web Framework for Modern web 📜
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Pypi Python Versions Build Status

Python Static website generator for Modern web

What's different

Like the common static website generator, Jekyll, it transforms plain text, like mardown, to HTML.

Jekyll is a blog-friendly generator, but Jikji is the general-purpose static website generator that communicates with DBMS or RESTFul API Server.


$ pip install jikji


$ jikji <my_site> generate

Open server for testing

You don't have to generate all the time after modifying template.
Jikji has useful functions to develop in realtime.

Run jikji as listening mode

$ jikji <my_site> listen
$ jikji <my_site> listen --port PORT --host HOST

Then you can see rendered website in your browser (default: http://localhost:7000)

When you reload the website running with Flask, jikji will do re-rendering the template.

What's good

  • Fast. Jikji use multiprocessing on generation
  • Expandability. You can build from micro web to enterprise-class website.
  • Efficiency. You can write code fastly with familiar libraries/design pattern.

Template engine

Jikji uses Jinja2 template engine which is used in Flask as well.
You can see Jinja template documentation here.

View-Page Concept

Jikji has a concept View, which is similar to Controller on common backend frameworks. One View has one 'URL rule', one 'View Function', but multiple 'Pages'.

Usually, the controller has the role of taking the data from the model with the PARAMETERS in URL and returning the HTML with the View.

In static web, PARAMETERS are provided in advance. There is many tuple set of parameters in ONE VIEW.

Jikji calls the tuple Page

For example, if 'Article View' has url rule /posts/$1/$2 the sample PAGEs for 'Article View' would be the following.