A python-based static site generator for setting up a CV/Resume site

Overview

ezcv logo

ezcv

A python-based static site generator for setting up a CV/Resume site

Table of Contents

What does ezcv do?

ezcv is a purpose built static site generator for creating personal resume/portfolio/cv sites

Features & Roadmap

  • A large collection of built in themes
  • Flexible templating with Jinja2
  • Fully customizable configuration files and sections
  • Simple markdown syntax for content building

Why should I use ezcv?

ezcv is a great choice if:

  • You are fond of one of the built in themes
  • You want a free and open source static site generator
  • If you want a simple to use static site generator based on Jinja
  • If you are familiar with markdown and yaml, and want a system that can be extended
  • You are not familiar with static site generators and want a simple one to try out
  • You want a static site generator with a built in github pages deploy pipeline

ezcv is not a great choice if:

  • You want a widely used industry solution (something like hugo or jekyl would be better for this)
  • You need low level access to the API for complicated extensions that are not possible within jinja
  • You are not familiar with markdown, yaml and jinja and want a frontend to edit your site with ( netlify, squarespace or wix would be better for this)

Who is ezcv for?

  • People who are not necessarily familiar with coding, let alone web development
  • People who are familiar with web development and want a very simple to use static site generator
  • People who are familiar with web development but don't want to bother writing pure html for their site

Quick-start

Here's everything you need to know to get started with ezcv.

No-code/remote setup

Note that there is an option to develop a site completely on your browser without needing to install anything or know how to use git. For details on setting this up, please visit https://ezcv.readthedocs.io/en/latest/quick-start/#remote-editing.

Installation

To use ezcv you will need python 3.6+ (earlier versions wont work) and pip for python 3.

From PyPi

  1. Run pip install ezcv

From source

  1. Clone this repo: https://github.com/Descent098/ezcv
  2. Run pip install . or sudo pip3 install .in the root directory

Getting started

The easiest way to get started is by running:

ezcv init

Replacing the argument with your name (use "" if you want to use your full name i.e. ezcv init "Kieran Wood").

File structure

When you run the command a new folder will be created with your name, and some starter files like this:

Legend

Icon Meaning
๐Ÿ“ File Folder
๐Ÿ“ท Image file
๐Ÿ“ File you should edit/delete
๐Ÿ“„ File you don't need to edit/shouldn't delete
๐Ÿ“
   
    /
โ”œโ”€โ”€ ๐Ÿ“.github/
โ”‚   โ””โ”€โ”€ ๐Ÿ“workflows/
โ”‚       โ””โ”€โ”€ ๐Ÿ“„ezcv-publish.yml
โ”œโ”€โ”€ ๐Ÿ“content/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“education/
โ”‚   |   โ”œโ”€โ”€ ๐Ÿ“example-current.md
โ”‚   |   โ””โ”€โ”€ ๐Ÿ“example-old.md
โ”‚   โ”œโ”€โ”€ ๐Ÿ“projects/
โ”‚   |   โ””โ”€โ”€ ๐Ÿ“example.md
โ”‚   โ”œโ”€โ”€ ๐Ÿ“volunteering_experience/
โ”‚   |   โ”œโ”€โ”€ ๐Ÿ“example-current.md
โ”‚   |   โ””โ”€โ”€ ๐Ÿ“example-old.md
โ”‚   โ””โ”€โ”€ ๐Ÿ“volunteering_experience/
โ”‚       โ”œโ”€โ”€ ๐Ÿ“example-current.md
โ”‚       โ””โ”€โ”€ ๐Ÿ“example-old.md
โ”œโ”€โ”€ ๐Ÿ“images/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ท abstract-landscape.jpg
โ”‚   โ””โ”€โ”€ ๐Ÿ“ท ice-caps.jpg
โ”œโ”€โ”€ ๐Ÿ“„.gitignore
โ””โ”€โ”€ ๐Ÿ“config.yml

   

From here you can go into your config.yml file and pick a theme, then start filling out your content according to what's available for the theme.

To preview your content use:

ezcv -p

If you're on github then pushing the contents to master/main will activate the publish workflow and automatically publish the site to .github.io .

CLI

Usage:
    ezcv [-h] [-v] [-p]
    ezcv init [<name>] [<theme>]
    ezcv build [-d OUTPUT_DIR] [-p]
    ezcv theme [-l] [-c] [-s SECTION_NAME] [<theme>]


Options:
-h, --help            show this help message and exit
-v, --version         show program's version number and exit
-l, --list            list the possible themes
-c, --copy            copy the provided theme, or defined site theme
-p, --preview         preview the current state of the site
-d OUTPUT_DIR, --dir OUTPUT_DIR The folder name to export the site to
-s SECTION_NAME, --section SECTION_NAME The section name to initialize

See the CLI Documentation for additional details

Additional Documentation

User Docs

API Docs

Examples and resources

Template repository for bootstrapping projects

See documentation for included themes for examples of each of the included themes

Comments
  • implement mermaid

    implement mermaid

    • [ ] https://pypi.org/project/md-mermaid/
    • [ ] Add in rendering on the frontend

    Docs

    Documentation about formatting

    • https://mermaid-js.github.io/mermaid

    Example(s)

    sequenceDiagram
        participant content folder
        participant template
        participant output html
        content folder->>template: Content is taken and parsed by template
        template->>output html: template rendered by jinja into output html
    
    pie title Wordpress market share
        "wordpress" : 62
        "Drupal" : 3
        "squarespace" : 3
        "shopify": 3
        "everything else": 28
    
    opened by Descent098 1
  • Add webserver initialization option

    Add webserver initialization option

    Include an example repo that has a flask webserver setup that generates a site and then uses flask as a webserver that points to the ezcv output.

    Needed files

    • [x] A standard ezcv project with the output folder being /site
    • [x] Routes.py with all the config for proxying /site
      • [x] Option to run with continuous regeneration with a watchdog on contents folder
    • [x] A requirements.txt folder with everything you need to run the project
    • [x] Readme explaning how to run the project and it's options

    Cli

    Add a flag to the init command to allow for a site to be generated with this config

    Extra steps

    • [x] Create a repo with the flask + ezcv setup so that people can use github templates to create a new repo instead of just the Cli

    Documentation

    • [x] Document the CLI init option
    • [x] Document the new repo with the added flask option
    • [x] Document a way for people to integrate this feature into "standard" ezcv projects
    opened by Descent098 1
  • File processing caching

    File processing caching

    Goal

    Speed up build time by keeping a cache of files and only updating ones that have been changed since last build.

    Requirements

    • [ ] Find a way to store the information about the last_updated time for files
    • [ ] Hook into the initial file list system so that it is widdled down to only files that have been updated since last build
    • [ ] Add build --clean flag to ignore the cache and rebuild all files

    Suggested time-based implementation

    import os
    import time
    import datetime
    
    last_updated_time = os.path.getmtime("example-current.md")
    ctime_last_updated = time.ctime(last_updated_time )
    datetime_last_updated = datetime.datetime.strptime(ctime_last_updated , "%a %b %d %H:%M:%S %Y")
    

    More robust implementation

    Cache file

    • A hash of every template file (since if someone changes a template any content that uses that template automatically needs to be re-rendered)
    • A hash and the content of every user created content file ( To check if individual pieces of content users created has been changed)
    • A hash of all the hashes of each piece of content in the folder (allows you to check an entire content folder for any changes in 1 step)

    i.e.

    {
        "templates":{
            "index.jinja":"<hash here>"
        },
    
        "content":{
    
            "folders":{
    
                "education":{
                    "hash":"<hash here>",
                    "files":{
                        "example.md":"<hash here>"
                    }
                }
    
            }
        }
    
    }
    

    Processing cache file

    1. If there is no cache file do all the rendering and then generate a new cache file
    2. If a cache file exists:
      1. Check if any template files have been changed, and if they have re-render all the content that uses the template file, then update any of the stored hashes for that content in the cache file
      2. All the content for the site is categorized by folders (see the content folder layout here), so loop through each folder hash and:
        1. compare the hash of the entire folder contents with the stored hash and then if they differ go to step 3, if they are the same then go to next folder since nothing has been changed
      3. If the folder caches differ step into the folder and iterate file hashes to determine which files need to be re-rendered and re-render them, then update the cache file with the new content
    3. Read the new/updated cache file and spit out all the output files
    opened by Descent098 1
  • V0.3.3

    V0.3.3

    The focus for this release was adding features that were not finalized in time for the 0.3.0-0.3.2 releases, and cleaning up some bugs.

    Features

    • Added required_config section to theme metadata that's used:
      • on initialization to generate the config.yml file
      • on build to cancel the build if a required value is missing from config.yml
    • Added section command (note ezcv theme -s <section name> will no longer work)
      • use ezcv section <section name> to get information
      • use ezcv section <section name> [<type>] to create a new section (note type is only required for any non-markdown sections i.e. blogs [can be "blog" or "b"] or galleries [can be "gallery" or "g"]). See cli documentation for full usage details
    • Added deepsource integration
    • Added issue template for creating new themes

    Themes

    • Added massively
    • Added blog
    • Added evie
    • Added parallax

    Bug Fixes

    • Fixed bug with downloading aerial theme from remote
    • Fixed bug where ezcv_version was generated incorrectly in the metadata
    • Fixed a bug where a theme without a metadata.yml file would not load properly
    opened by Descent098 0
  • Theme Evie

    Theme Evie

    name: evie URL: https://onepagelove.com/evie

    TODO

    • [x] Create theme
      • [x] Create index.jijna
      • [x] Add in CSS/JS
      • [x] Create sections
      • [x] Create metadata
        • [x] Add in required: true to fields that need it
        • [x] Add in required_config
    • [x] Add documentation to docs/included-themes.md
    • [x] Add to remotes.yml
    opened by Descent098 0
  • Create specification for required config variables

    Create specification for required config variables

    Reasoning

    Example

    required_config:
      avatar:
        type: str
        default: "https://example.com"
        description: "This is a link to an avatar image"
    

    This would mean when using the theme to init a project there will be the following parameters added to config.yml

    ... # Other code
    avatar: "https://example.com" # This is a link to an avatar image
    ...
    

    Requirements

    • [x] Ability to specify required variable, if no type is specified str is assumed
    • [x] implement functionality for other attributes
      • [x] Default
      • [x] Description
    • [x] Implement sensible defaults for attributes (default and description)
    • [x] Allow for description to not be required
    • [x] allow for default to not be required
    • [x] Check in ezcv.core.generate_site() before generating
    • [x] Use in ezcv.cli.init() when generating config.yml
    • [x] ignore name and theme
    • [x] Add to existing themes
      • [x] Dimension
      • [x] Qu-UP ezcv themes

    Docs

    • [x] Guide for creating your own theme with this included
    • [x] Adding a notice that this won't generate when using ezcv theme -m
    • [x] Document behaviour when default or description is not provided
    • [x] Document behaviour for default and description
      • [x] Default is used in site generation as the default value in config.yml
      • [x] Description is added as a comment after default
      • [x] ignores name and theme
    opened by Descent098 0
  • Add section command

    Add section command

    Add new CLI command

    ezcv section -n <SECTION_NAME> [-t=<type>]

    Steps

    1. Check if theme is in project folder, if not copy to the folder
    2. Generate current metadata if file is not available
    3. Copy current metadata info
    4. Create new files
    5. ~Insert new section information and resave metadata (including fields where available)~ (not possible)

    Type specification

    Options:

    • m or markdown: generate standard markdown section
    • b or blog: Generate a blog
      • Append an o (overview), s (single), f (feed) for which you want to generate or don't include any to generate all
      • check if type starts with a b, then strip literal "blog" and "b", then check for "o", "s", "f" for indications on blog sections
      • Set default "fields" to ["title", "created", "updated"]
    • g or gallery: generate a gallery

    TODO

    • [x] Implement command for creating new sections
    • [x] Update docstrings
    • [x] Update command so section info prints if section already exists
      • [x] Update readme and CLI docs once completed

    Docs

    • [x] Readme
    • [x] CLI docs
    opened by Descent098 0
  • Added 0.3.1 code

    Added 0.3.1 code

    May 16th 2022

    Minor fixes related to release

    Bug Fixes

    • Fixed broken previews on documentation site
    • Included missing livereload dependency

    Documentation improvements

    • Added additional theme provider suggestions
    opened by Descent098 0
  • V0.3.0

    V0.3.0

    May 16th 2022

    The focus for this release is on adding blog support, QoL features and making ezcv a more well rounded static site builder. There will be a few items released in 0.3.1 that were meant for 0.3.0, but due to the need for python -m ezcv in order for github pipelines to work this release is going out now.

    Features

    • Blog posts
    • Theme Metadata
    • Adding an optimized mode for builds to increase site performance
    • Added ability to create and use custom ad-hoc filters; pass a list of function objects (called extra_filters) to ezcv.generate_site()
    • Added ability to directly invoke ezcv through python binary after installation python -m ezcv
    • Added ability to specify a remote URl for config.yml theme variable
    • Added continuous previewing to ezcv -p
    • Added option to initialize with flask ezcv init -f
    • Added python -m ezcv invocation
    • Added logging to files so attached loggers can get details for troubleshooting (logging.info and logging.debug are recommended settings)

    Themes

    • Added ability to embed theme metadata
    • Added blog section to existing themes
      • dimension
      • grayscale
      • solid_state
      • read_only

    Bug Fixes

    • Added missing highlightjs to all themes for code blocks
    • Fixed bugs with preview loading in included themes docs

    Documentation improvements

    • Added sections documenting new features
    • Rearranged included themes section to be alphabetical
    • Added section outlining sequence diagram for site generation
    • Added additional resources to help generating content
    • Added notice thanking theme providers
    opened by Descent098 0
  • Add logging to existing files

    Add logging to existing files

    Files

    • [x] cli

      • [x] init()
      • [x] preview()
      • [x] theme()
      • [x] new_section()
      • [x] optimize()
      • [x] main()
    • [x] content

      • [x] Image
      • [x] Metadata
      • [x] get_content_directories()
      • [x] get_section_content()
    • [x] core

      • [x] get_site_config()
      • [x] _render_section()
      • [x] _render_page()
      • [x] _export()
      • [x] generate_site()
    • [x] filters

      • [x] inject_filters()
      • [x] split_to_sublists()
      • [x] get_image_path()
      • [x] get_filename_without_extension()
      • [x] pretty_datetime()
      • [x] pretty_defaultdict()
    • [x] themes

      • [x] get_theme_section_directories()
      • [x] setup_remote_theme()
      • [x] locate_theme_directory()
      • [x] get_remote_themes()
      • [x] get_theme_metadata()
      • [x] _generate_fields()
      • [x] generate_theme_metadata()
      • [x] get_repo_last_updated()
    opened by Descent098 0
  • Add optimize flag to build

    Add optimize flag to build

    Be able to specify

    ezcv buiild -o or ezcv build --optimize

    Purpose

    This feature allows an optimized build of the site to be done, which will be faster for people who come to your site, but will take longer to build initially.

    requirements

    • [x] Minify images

    • [x] Minify CSS and JS

    • [x] Minify HTML?

    • [ ] Add blog support

    • Add docs about feature generally and what it does

    • Add docs mentioning this only works with themes following https://ezcv.readthedocs.io/en/latest/theme-development/#folder-layout

    • Add note to https://ezcv.readthedocs.io/en/latest/theme-development/#folder-layout that this layout is required to use the optimized flag on builds

    opened by Descent098 0
  • Test suite

    Test suite

    Test list

    • [ ] CLI tests
      • [ ] init()
        • [ ] With name provided and not
        • [ ] With theme provided and not
        • [ ] without name and theme
        • [ ] with name and theme
        • [ ] with theme that doesn't exists
        • [ ] with theme that is remote
        • [ ] with theme that is local
        • [ ] with theme included
      • [ ] section()
      • [ ] theme()
    • [ ] core tests
      • [ ] generate site with all defaults
      • [ ] Generate site with each specific keyword variable defined
      • [ ] check the content.get_content_directories() function explicitly
      • [ ] Make sure to test 1 of each section
      • [ ] Test with no sections
      • [ ] test with a section that has content but no template file
      • [ ] test with a section that has template file but no content
      • [ ] also test gallery sections with each extension (".jpg", ".png", ".jpeg", ".gif", ".svg", ".webp", ".apng", ".jfif", ".pjpeg", ".pjp") and nonexistant extensions
      • [ ] Also check exif data parsing
      • [ ] test resume generation
    • [ ] Themes tests
      • [ ] That the projects exits when a required_config is not provided

    Notes

    • Core tests will also cover the Content types and adding filters
    • Autoreload, and the main cli entrypoint cannot be tested
    • testing just covers that the expected files/sections are produced not for their accuracy
    opened by Descent098 0
  • Add video to readme

    Add video to readme

    Create a new getting started video and add it to readme as well as update it on the main docs

    Trailer

    • What is ezcv (might need to be seperate video)
      • ezcv is a static site generator with all the batteries included to get you up and running quickly for a personal site
      • Not meant to be used to build buisness sites
      • Comes with helpful features like resume generation, ability to create custom sections, included themes
      • demo build with a pre-built site (explain mkdown files/yml as basis for generation)
        • Think of a word file that becomes a webpage
      • Built in pipelines for deployment

    Getting started

    • demo build with a pre-built site (explain mkdown files/yml as basis for generation)
      • Think of a word file that becomes a webpage
    • Built in pipelines for deployment
    • What you need to use ezcv
      • YAML
      • Markdown
      • Recommended to have a github account
      • If running locally need python 3.8+ and pip
    • Tell people to go to the videos for whichever one they want (this video only covers remote editing)
    • Explanation of options to build
      • Remote editing
      • local editing (separate video but also in readme under <details>)
      • ezcv frontend (separate video but also in readme under <details>)
    opened by Descent098 0
  • Metadata & Export refactor

    Metadata & Export refactor

    Purpose

    Refactor the code base to use metadata in generation and simplify process for generating content.

    Notes

    • [ ] Publicly the only API's that are accessible are
      • [ ] ezcv.core.generate_site() & ezcv.core.get_site_config
      • [ ] ezcv.filters All functions in here, but importantly will need to support injecting custom filters (and document it)
      • [ ] ezcv.content

    Major changes

    • When collecting the information about files and their locations, make it easier to access that data one time instead of in 12 different formats. For example, with templates the environment should be passed around since it knows where all the templates' files are, instead of passing the theme name and implicitly finding it every time
    • Should locate top-level files earlier, and make sure to include blog-type sections in those top-level files
    • rewrite image management (filter and export)
    • Move site state into an object that holds all file locations
    • Tag rendering so that multiple blog-type sections can be used
    • Have pages export to folders by section, and make the names url safe (i.e. "My & Post" in the blog section should be at /blog/my-post.html)

    Goals

    • [ ] Specify section templates that are available using metadata so export can be simplified (specific function to find pages based on metadata)
    • [ ] When rendering the pages check if content is available and skip if it's not for a given section (make sure <section_name>_html is set to "" so templates can know if the html is available.
    • [ ] Unify blog rendering to be less guess-n-check and also do the rendering of all pages all in one place
    • [ ] Write specific way of handling images for galleries
    • [ ] Handle standard image exporting
    opened by Descent098 0
  • Blog Improvements

    Blog Improvements

    Fields

    • [ ] Tags

    Features

    • [ ] Way to get summary data/taglines to use in feeds (filter with blog post passed in that returns a summary?)

    • [ ] Tagline/subtitle option

    • [ ] Image option

    • [ ] Way to specify featured posts

    • [ ] Structured data

    • [ ] RSA feed

    • [ ] Add tagging/tag-management system

    • [ ] Add Auto-pagination? (Maybe a js library with page-data stored) or global variable

    • [ ] Auto Search (Lunr.js)

    • [ ] Look into tagging/tag-management, and figure out a way to integrate that into the "overview" section

    opened by Descent098 0
  • Enable updating of themes from CLI

    Enable updating of themes from CLI

    Features

    • [ ] Create function to call to check for updates
    • [ ] Let people know when they use the ezcv build that they should upgrade if a new version is available
      • [ ] Can use endpoint https://api.github.com/repos/QU-UP/ezcv-themes/branches/main
      • [ ] See below for implementation
      • [ ] Can be checked against the metadata of the theme
    • [ ] Put a little (upgrade available) tag when someone uses ezcv -l and upgrades are available for local themes

    Get ezcv theme details

    import requests
    import datetime
    response = requests.get('https://api.github.com/repos/QU-UP/ezcv-themes/branches/main')
    
    # print response
    print(response)
    
    # print json content
    print(response.json()["commit"]["commit"]["author"]["date"])
    
    print(datetime.datetime.strptime(response.json()["commit"]["commit"]["author"]["date"], "%Y-%m- 
    %dT%H:%M:%SZ").strftime("%Y-%m-%d")) # returns string of "Year-Month-Day"
    
    opened by Descent098 0
Releases(v0.3.4)
  • v0.3.4(Jul 30, 2022)

  • v0.3.3(May 26, 2022)

    V0.3.3; May 25th 2022

    The focus for this release was adding features that were not finalized in time for the 0.3.0-0.3.2 releases, and cleaning up some bugs.

    Features

    • Added required_config section to theme metadata that's used:
      • on initialization to generate the config.yml file
      • on build to cancel the build if a required value is missing from config.yml
    • Added section command (note ezcv theme -s <section name> will no longer work)
      • use ezcv section <section name> to get information
      • use ezcv section <section name> [<type>] to create a new section (note type is only required for any non-markdown sections i.e. blogs [can be "blog" or "b"] or galleries [can be "gallery" or "g"]). See cli documentation for full usage details
    • Added deepsource integration
    • Added issue template for creating new themes

    Themes

    • Added massively
    • Added blog
    • Added evie
    • Added parallax

    Bug Fixes

    • Fixed bug with downloading aerial theme from remote
    • Fixed bug where ezcv_version was generated incorrectly in the metadata
    • Fixed a bug where a theme without a metadata.yml file would not load properly
    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(May 16, 2022)

  • v0.3.1(May 16, 2022)

    May 16th 2022

    Minor fixes related to release

    Bug Fixes

    • Fixed broken previews on documentation site
    • Included missing livereload dependency

    Documentation improvements

    • Added additional theme provider suggestions
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(May 16, 2022)

    The focus for this release is on adding blog support, QoL features and making ezcv a more well rounded static site builder. There will be a few items released in 0.3.1 that were meant for 0.3.0, but due to the need for python -m ezcv in order for github pipelines to work this release is going out now.

    Features

    • Blog posts
    • Theme Metadata
    • Adding an optimized mode for builds to increase site performance
    • Added ability to create and use custom ad-hoc filters; pass a list of function objects (called extra_filters) to ezcv.generate_site()
    • Added ability to directly invoke ezcv through python binary after installation python -m ezcv
    • Added ability to specify a remote URl for config.yml theme variable
    • Added continuous previewing to ezcv -p
    • Added option to initialize with flask ezcv init -f
    • Added python -m ezcv invocation
    • Added logging to files so attached loggers can get details for troubleshooting (logging.info and logging.debug are recommended settings)

    Themes

    • Added ability to embed theme metadata
    • Added blog section to existing themes
      • dimension
      • grayscale
      • solid_state
      • read_only

    Bug Fixes

    • Added missing highlightjs to all themes for code blocks
    • Fixed bugs with preview loading in included themes docs

    Documentation improvements

    • Added sections documenting new features
    • Rearranged included themes section to be alphabetical
    • Added section outlining sequence diagram for site generation
    • Added additional resources to help generating content
    • Added notice thanking theme providers
    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Aug 2, 2021)

  • v0.2.0(Aug 2, 2021)

    The focus for this release is to add new features and themes

    Features

    Themes

    Bug fixes

    • Fixed markdown files with different standard extensions not being recognized
    • Fixed markdown files with capitalized extensions not being recognized

    Documentation Improvements

    • Added documentation for new features
    • Added additional onboarding videos/tutorials
    • Added section for finding help/support
    Source code(tar.gz)
    Source code(zip)
  • V0.2.2(Aug 2, 2021)

  • v0.1.0(Jan 10, 2021)

  • V0.1.1(Jan 10, 2021)

    Fixes following initial launch

    Bug fixes

    • Added additional warnings for if necessary config value is not provided

    Documentation improvements

    • Updated necessary docstrings
    Source code(tar.gz)
    Source code(zip)
Owner
Kieran Wood
Undergraduate Computer Science Student. I do a lot of random projects (Mostly WebDev, and system scripts)
Kieran Wood
Static site generator that supports Markdown and reST syntax. Powered by Python.

Pelican Pelican is a static site generator, written in Python. Write content in reStructuredText or Markdown using your editor of choice Includes a si

Pelican dev team 11.3k Jan 4, 2023
Static site generator for designers. Uses Python and Django templates.

News Cactus 3 is out! We're happy to announce Cactus 3. It brings a set of great new features like asset fingerprinting, an asset pipeline, pretty url

null 3.4k Jan 1, 2023
AutoLoader is a plugin for Pelican, a static site generator written in Python.

AutoLoader AutoLoader is a plugin for Pelican, a static site generator written in Python. AutoLoader is designed to autoload the other Pelican plugins

null 2 Nov 7, 2022
Kaktos is a python static site generator

Python static site generator ฮบฮฌฮบฯ„ฮฟฯ‚ Kaktos is a python static site generator. The idea is create a simple static site generator for people that don't

Paulo Coutinho 4 Sep 21, 2022
barely is a lightweight, but highly extensible static site generator written in pure python.

barely is a lightweight, but highly extensible static site generator. Explore the docs ยป Quickstart ยท See available Plugins ยท Report Bug ยท Request Fea

null 40 Dec 1, 2022
A simple static site generator with deployment to S3/Cloudfront.

Stasis A simple static site generator with deployment to S3/Cloudfront. Features Stasis is a static website generator written in Python, using Pandoc

Scott Czepiel 56 Sep 29, 2022
dirmaker is a simple, opinionated static site generator for quickly publishing directory websites.

dirmaker is a simple, opinionated static site generator for publishing directory websites (eg: Indic.page, env.wiki It takes entries from a YAML file and generates a categorised, paginated directory website.

Kailash Nadh 40 Nov 20, 2022
Simple Static Site Inductor Made in Python

sssimp ?? Simple Static Site Inductor Made in Python How to use Create a folder called input, inside create a folder called content and an empty file

Tina 11 Oct 9, 2022
A Python Static Website Generator

Version 0.8.9 Overview Hyde starter kit by merlinrebrovic is a really nice way to get started with hyde. Hyde layout for bootstrap by auzigog is also

Hyde - Static Website Generator 1.6k Jan 1, 2023
A static website and blog generator

Nikola, a Static Site and Blog Generator In goes content, out comes a website, ready to deploy. Why Static Websites? Static websites are safer, use fe

Nikola, a static site generator 2.4k Jan 5, 2023
a static website generator to make beautiful customizable pictures galleries that tell a story

Prosopopee Prosopopee. Static site generator for your story. Make beautiful customizable pictures galleries that tell a story using a static website g

Bram 259 Dec 19, 2022
A static website generator for people who enjoy the simpler things in life.

A static website generator for people who enjoy the simpler things in life.

Darren Mulholland 93 Dec 22, 2022
Hobby Project. A Python Library to create and generate static web pages using just python.

PyWeb ??๏ธ ?? Current Release: 0.1 A Hobby Project ?? PyWeb is a small Library to generate customized static web pages using python. Aimed for new deve

Abhinav Sinha 2 Nov 18, 2021
The lektor static file content management system

Lektor Lektor is a static website generator. It builds out an entire project from static files into many individual HTML pages and has a built-in admi

Lektor CMS 3.6k Dec 29, 2022
Makes dynamic linked shit "static". Amazing

static.py What does it do? You give it a dynamically linked binary and it will make a directory that has all the dependencies (recursively). It also f

Stephen Tong 24 Dec 16, 2022
A declarative website generator designed for high-quality websites, with a focus on easy maintenance and localization.

Grow Grow is a declarative tool for rapidly building, launching, and maintaining high-quality static HTML. Easy installation Jinja template engine Con

Grow 385 Dec 3, 2022
A Python media index

pyvideo https://pyvideo.org is simply an index of Python-related media records. The raw data being used here comes out of the pyvideo/data repo. Befor

pyvideo 235 Dec 24, 2022
Dynamic Resume Generator

Dynamic Resume Generator

Quinten Lisowe 15 May 19, 2022
Django-static-site - A simple content site framework that harnesses the power of Django without the hassle

coltrane A simple content site framework that harnesses the power of Django with

Adam Hill 57 Dec 6, 2022
Simple, lightweight, and magic-free static site/blog generator for Python coders

makesite.py Take full control of your static website/blog generation by writing your own simple, lightweight, and magic-free static site generator in

Sunaina Pai 1.7k Jan 1, 2023