Git + Markdown = blog
Project description
Gitblog2
Git + Markdown = Blog
Check the live demo
What is this?
A blog generator that keeps things simple:
- 🏄 Easy to use - Just make folders and write Markdown.
- ⚡ Minimal footprint - No JavaScript, no divs, no class attributes, just semantic html.
- 🛠 Familiar tech - Git, Markdown, HTML, CSS, Jinja2 and Bash.
With many features:
- Atom and RSS feeds
Getting Started
From zero to a live blog.
You can see the full setup of a working blog here.
For this tutorial we assume you'll use Github to host your repo and Cloudflare Pages to host your blog. You need to have account on those platforms as a prerequisite.
-
Create a repo, add a folder of your first section, add a Markdown file in it for your first blog post.
Use adraft/
folder to save posts that are not ready for publication.
Non Markdown files and common irrelevant content is ignored by default, e.g..github/
,README.md
,LICENSE.md
. -
Add a
.github/workflows/publish.yaml
file to your repo with the following content:name: Publish Blog on: push: branches: [ main ] jobs: build-and-publish: runs-on: ubuntu-latest steps: - uses: docker://henritel/gitblog2 with: args: post-css cloudflare-pages env: SOURCE_REPO: https://github.com/${{ github.repository }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
This will automatically publish your blog on Cloudflare Pages when you push changes to your repo.
It assumes your cloudflare project is namedblog
but if that's not the case you can add anCLOUDFLARE_PROJECT
env to the workflow with the correponding name. -
In your repo's settings, go under
secrets/actions
to set theCLOUDFLARE_ACCOUNT_ID
andCLOUDFLARE_API_TOKEN
secrets based on your Cloudflare API keys.
Installation
pip install gitblog2
Usage
From the command line:
OUTPUT_DIR=./www gitblog2 https://codeberg.org/HenriTEL/gitblog2.git --repo-subdir=example
From the library:
from gitblog2 import GitBlog
source_repo = "https://codeberg.org/HenriTEL/git-blog.git"
output_dir = "./www"
with GitBlog(source_repo, repo_subdir="example") as gb:
gb.write_blog(output_dir)
From the container:
docker run --rm -v $PWD/www:/www \
-e SOURCE_REPO=https://codeberg.org/HenriTEL/gitblog2.git \
-e REPO_SUBDIR=example \
henritel/gitblog2
Customisation
Gitblog2 just produces static file so it should easily integrate with the stack you're familiar with (cron jobs, commit hooks, nginx, Apache, you name it.).
Dev quickstart
Make sure to have poetry installed, then
Setup your local web server:
wget "https://redbean.dev/redbean-tiny-2.2.com" -O redbean.zip
zip redbean.zip -j providers/assets/.init.lua
chmod +x redbean.zip
In one terminal, update the blog as needed:
poetry run gitblog2 --repo-subdir example -l debug
In another terminal, serve the blog:
./redbean.zip -D ./www
Roadmap
High priority:
- Add bio and picture from github
- Add image in README like https://github.com/nextcloud/server
- Add doc for customisation
- Check draft support (set publish_date to first
mv
) - E2E tests
Low priority:
- Unit tests
- Add contributing section
- Add bio and picture from codeberg
- Remove div and classes from TOC and footnotes
- Fix root index.html not served by redbean
- Make it work on non-unix systems (mainly dealing with windows file system separator)
Internals
Stylesheet is based on water.css
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gitblog2-1.2.0-cp311-cp311-manylinux_2_35_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3772ee7d75efeb63507131a9030195ee888bec1ad9568f3b6695a6cc0aac3c62 |
|
MD5 | 59bf00b604c39e21ed2498a2268ffe5a |
|
BLAKE2b-256 | 3cbe694b3baf7de754eb7e610ec697507939f7479d2f187b7ca326a1a421dad2 |