Port
I've had a lot of trouble finding a blogging platform which I enjoyed using - they were either too heavy or required using a web editor or were tricky to customize and theme. So last week I put together a super lightweight blogging platform called port
.
port
is the centralized complement to nomadic
, which is a lightweight note management system. Like nomadic
, port
uses directory structure to define its routing structure and works primarily off markdown documents.
Here's what port
offers:
- Posts are GitHub-flavored markdown files, with MathJax support
- A blog is represented as a directory, with subdirectories of markdown posts
- Post categories are defined by the folders they are in
- RSS feeds for individual categories and for all posts
- Very easy theming (Jinja2 templates)
- Managed via a CLI (the
port
command) - No database necessary!
- No admin UI necessary!
There are a couple additional convenience features as well:
port sync
makes it easy to sync your local site files to a remote machine (e.g. your server)port host
generates the config files necessary to host your blog withuwsgi
,supervisor
, andnginx
port serve
serves the site locally, which is useful for previewing your work
Tutorial
Here's how to get going with port
. For this example I'll specify my site's directory as ~/spaceandtimes
.
Install
pip install port
Create a site (I'll use my site as an example) and go through the config
port create spaceandtimes
Setup a category (just renaming the default category port
creates)
mv ~/spaceandtimes/default_category ~/spaceandtimes/coding
Add an image to the assets
folder
mv ~/some_image.png ~/spaceandtimes/assets/
Create a post (using vi
here but use whatever editor you'd like)
vi ~/spaceandtimes/coding/my_first_post.md
---
published_at: 06.30.2015 10:53
---
Hello!
Here's an image:
![some alt text](/assets/some_image.png)
Build the site
port build spaceandtimes
Serve the site locally
port serve spaceandtimes
Check it out at localhost:5005
!
To host the site on a server, follow these steps (this assumes an Ubuntu server):
Install the right stuff
sudo apt-get update
sudo apt-get install uwsgi supervisor uwsgi-plugin-python uwsgi-plugin-python3 nginx
Install port
on the server
pip install port
Create the site on the server (again, say we put the site at ~/spaceandtimes
):
port create spaceandtimes
Then run the host
command to automatically generate the necessary configs and restart the nginx
and supervisor
processes (the last argument is the user that the site was generated under):
port host spaceandtimes blog.spaceandtimes.com ftseng
From your local machine, sync your site (but first, build your site locally):
port sync spaceandtimes user@my_server.com:~/spaceandtimes
Workflow
My workflow with port
is to write posts locally, build locally, and then sync to my server. It's super fast and easy :)
So basically:
vi ~/spaceandtimes/etc/my_new_post.md
port build spaceandtimes
port sync spaceandtimes ftseng@myserver.com:~/spaceandtimes
And that's it!
See the GitHub repo for more info on theming and other details.