Pysyte Meta
2022-11-01
I built a minimum viable product for a static site generator in python called PySyte. In fact it is a single script or module that will convert Markdown files in a source directory to html in a build directory using a template in a templates. Yay! I thought building a static site for myself from scratch would be fine. Managing consistence with meta data, styles, navigation, and layout became a challenge just with a few pages. Since Server Side Includes appears not to work on Digital Ocean's App service, I decided to build my own static site generator as a project instead of using an existing solution.
The existing solutions do some great things, but they offer more than I need. I intend to hand code most of the content in Markdown or plain html and styles in CSS and don't need all the hand holding from an off-the-shelf solution. This project and my own site give me an opportunity to learn more about HTML5, CSS3, and modern Javascript. I also want to experiment with SVG and other client-side technologies that don't require a backend.
I got derailed for a couple of days worring about the layout of the package, such as using a src directory or putting the package directly in the root project folder.I want to point the script at a config file to describe where the source, template, and build folders are at. There are many options. Wrapping my head around how to include it in the package or not has me stuck in a rut. After mulling over all these questions, I have more clarity about the app design.
The app should have a very small footprint in the site being generated. The app should have a CLI command for the conversion of source to build files and perhaps one for scaffolding a new "site" altogether. Alternatively, cookiecutter might be the best option for scaffolding. A "site" configuration file should site in the project "site" directory with constants for the source, template, and build directories.
At this point I don't know what else pysyte might do. I will have more clarity about it after using it on my personal website.