Skip to content

Kaktos is a Python Static Site Generator for Serverless Applications πŸš€

Notifications You must be signed in to change notification settings

paulocoutinhox/kaktos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kaktos Logo

Python Static Site Generator for Serverless Applications πŸš€


κάκτος - Kaktos

Kaktos

Kaktos is a powerful Python Static Site Generator designed to create highly efficient serverless applications. Why pay for hosting when you can deploy a completely static site for free?

Create beautiful static websites, e-commerce stores, blogs, landing pages, and sales pages with advanced pagination and dynamic features, all without the hassle of server-side dependencies! πŸ’»

✨ Features

  • Static Website Generator – Create responsive, fast, and secure static sites πŸ–ΌοΈ
  • Static E-commerce – Build fully functioning static shopping websites πŸ›’
  • Static Blog – Advanced blog with pagination and dynamic content πŸ“
  • Landing Pages & Sales Pages – Perfect for creating high-conversion pages for any purpose πŸ›οΈ
  • Easy to Use – Intuitive design that requires no server-side programming πŸ’‘
  • Serverless – Deploy to platforms like Netlify, Cloudflare, or Render with no need for server management ☁️
  • Many Free Hosting Options – Many companies offer free hosting for static sites, as no server-side processing is required 🌐
  • Fast & Secure – Static sites are inherently faster and more secure ⚑
  • No Hosting Fees – Fully serverless deployment means no hosting costs πŸ†“
  • SEO Optimized – Generate clean, SEO-friendly pages πŸ•΅οΈβ€β™‚οΈ
  • Customizable Templates – Based on the powerful Jinja2 templating engine 🎨

πŸ€” Why Kaktos?

With Kaktos, you can deploy your website without worrying about server management, database configuration, or paying for hosting. Focus on your content, and let Kaktos handle the rest. Enjoy the benefits of a serverless architecture, which has become a major trend in web development, reducing operational costs and simplifying the deployment process for companies of all sizes.

  • No need to manage infrastructure
  • No ongoing hosting fees
  • Scalable and fast deployment
  • Ideal for websites, blogs, e-commerce, and landing pages

πŸ”„ All-in-One Solution

Unlike most static site generators, which focus on specific tasks, Kaktos provides an all-in-one solution.

Whether you need to build a blog, an e-commerce store, a landing page, or any other static website, Kaktos brings it all together in one platform, simplifying your workflow and allowing you to manage everything in a single place.

🎬 Demo

Cloudflare:

https://kaktos.pages.dev

Netlify:

https://kaktos.netlify.app

Amplify:

https://main.d27ze19drzixy0.amplifyapp.com

Render:

https://kaktos.onrender.com

Requirements

  • Python 3.8+

πŸš€ How to Get Started

Install python dependencies:

python3 -m pip install -r requirements.txt

πŸ’» Development

To work in development mode, you only need execute one command:

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:

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:

KAKTOS_DEBUG=True python3 kaktos.py build

If you want start a web server to test files inside build folder use:

python3 kaktos.py serve

πŸ“¦ Deploying with One Click

Netlify:

Deploy to Netlify

Render:

Deploy to Render

πŸ—οΈ Project 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:

β€’ 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

Buy Me a Coffee at ko-fi.com

πŸ–ΌοΈ Images

All images for demo i got from:

https://unsplash.com/

πŸ“œ License

MIT

Copyright (c) 2021-2024, Paulo Coutinho