Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/paulocoutinhox/kaktos
Kaktos is a Python Static Site Generator
https://github.com/paulocoutinhox/kaktos
generator html jamstack python serverless site website
Last synced: about 2 months ago
JSON representation
Kaktos is a Python Static Site Generator
- Host: GitHub
- URL: https://github.com/paulocoutinhox/kaktos
- Owner: paulocoutinhox
- Created: 2021-10-30T08:06:10.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-29T21:53:34.000Z (2 months ago)
- Last Synced: 2024-08-29T23:54:07.828Z (2 months ago)
- Topics: generator, html, jamstack, python, serverless, site, website
- Language: HTML
- Homepage: https://kaktos.pages.dev
- Size: 3.49 MB
- Stars: 8
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# κάκτος
[![Kaktos](https://github.com/paulocoutinhox/kaktos/actions/workflows/build.yml/badge.svg)](https://github.com/paulocoutinhox/kaktos/actions/workflows/build.yml)
Kaktos is a Python Static Site Generator.
The idea is create a simple static site generator for people that don't need server-side languages.
Designers can use it too, since it don't need people that know a programming language.
## Demo
**Cloudflare:**
[https://kaktos.pages.dev](https://kaktos.pages.dev)
**Netlify:**
[https://kaktos.netlify.app](https://kaktos.netlify.app)
**Amplify:**
[https://main.d27ze19drzixy0.amplifyapp.com](https://main.d27ze19drzixy0.amplifyapp.com)
**Render:**
[https://kaktos.onrender.com](https://kaktos.onrender.com)
## Requirements
- Python 3.8+
## Setup
Install python dependencies:
```bash
python3 -m pip install -r requirements.txt
```## Development
To work in development mode, you only need execute one command:
```bash
python3 kaktos.py
```When you change any file locally, the server will `process` it again and `auto-refresh` on browser.
This command *always force* use development mode, with or without environment variable.
## Production
To generate production files, you only need execute one command:
```bash
python3 kaktos.py build
```All files will be generated in `build` folder.
If you set environment variable `KAKTOS_DEBUG=True`, kaktos will build all files for development mode, example:
```bash
KAKTOS_DEBUG=True python3 kaktos.py build
```If you want start a web server to test files inside `build` folder use:
```bash
python3 kaktos.py serve
```## Deploy
**Netlify:**
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/paulocoutinhox/kaktos)
**Render:**
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/paulocoutinhox/kaktos/tree/render-support)
## Structure
- `kaktos.py` = main file that process your command
- `requirements.txt` = python dependency list
- `templates/layouts` = folder for all layouts that pages can inherit
- `templates/pages` = folder for pages that will be generated
- `templates/shared` = folder for parts of layouts that can be shared with other layouts
- `modules` = kaktos modules
- `modules/config.py` = configuration file
- `files` = folder that contains all assets and custom files
- `extras/config` = folder that contains some configurations for dynamic sample data## Commands
Each command supported by **Kaktos** is a Python file located in the `modules/commands/` folder.
To add new commands, simply create a new Python file in the `modules/commands/` folder and implement the `def run(params={})` method within it.
## Templates
All templates (html files) are based on Jinja2 library. You can see it here:
https://jinja.palletsprojects.com/en/3.0.x/
## Troubleshooting
#### **• Python version**
Each service that build the static content automatically use a specific python version.
If you need change the python version used to build all files and pages, edit file `runtime.txt` and change to `3.8`, `3.9` or other.
These services that im using have this python version:
- Netlify: Python 3.8 (https://docs.netlify.com/configure-builds/available-software-at-build-time/)
- Cloudflare Pages: Python 3.11.5 (https://developers.cloudflare.com/pages/configuration/language-support-and-tools)#### **• Template changed, but not reloaded**
Invalid Jinja2 syntax can prevent your HTML template from being built.
Check your terminal to see the error message, the HTML file and the line number where invalid syntax was detected.
## Buy me a coffee
## Images
All images for demo i got from:
https://unsplash.com/
## License
[MIT](http://opensource.org/licenses/MIT)
Copyright (c) 2021-2024, Paulo Coutinho