Skip to content

ISLEcode/hawky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
revision title
2020-08-25 (Tue) 16:42:48
Hawky README

We recently came accross Datenstrom Yellow. And I liked it. We have been stumbling on the static site generation topic for some time now. We have tried many, and none are satisfying... Jekyll, Hugo and their likes have satisfied many, not us!

Our (not so special) requirements are:

  • use (fully) Pandoc and CommonMark as the Markdown conversion engines
  • enable online editing by end users of possibly complex HTML5 pages
  • support GitHub pages for the versioning and backend storage of editorial content
  • provide wiki-like page handling for easy update and management by end users

One could debate on how this could be done in Jekyll and Hugo — and indeed we have working POCs for both tools. Jekyll is written in Ruby, which is no longer on our technology roadmap; further such customisations would not be supported by GitHub's automated Jekyll conversions. While the Go language is definitively on our technology roadmap, Hugo has grown into a complex beast and the maintenance of our customisations for Hugo would incur a lot of overhead costs.

This is where Datenstrom's Yellow comes in. They say it is for small web sites. We wouldn't say that. From our first peeks this looks like an interesting Open Source project which provides a ready-made and tested framework which could be carved to our needs. Further the design is modular with many extensions of interest.

Why not simply fork the project? Hopefully our developments will be contributed back to Yellow. Old programmers have bad habits! For now and for our programming convenience, we prefer pulling Yellow into our worflow rather than the over way round. There are also some possibly diverging thoughts we want to investigate:

  • the generated static site should be mobile-first and PWA-ready
  • i18n is not a server side thing and should be handled on the client side
  • client side editing should allow editing of content portions
  • a more sophisticated administration panel à la Grav CMS
  • use our NodeJS-based toolchain for the build process
  • integrate CommonMark with custom extensions
  • Grav-like debugging and logging

Why Hawky? Historically ISLE's knowledge vault was an Apple HyperCard database named Hawky (circa 1991). The database lived several lives before being converted to a Dokuwiki site (circa 2007). This could be its next housing 😄

Backend component stack

Language component, patterns, and extensions
PHP The popular general purpose scripting language for web development
ext-curl → Curl library support
ext-dom → DOM API
PHP-FIG Moving PHP forward through collaboration and standards
PSR 1 → Basic coding standard
PSR 3 → Logger interface
PSR 4 → Autoloading standard
PSR 6 → Caching interface
PSR 7 → HTTP message interface
PSR 11 → Container interface
PSR 12 → Extended coding style guide
PSR 13 → Hypermedia links
PSR 14 → Event dispatcher
PSR 15 → HTTP handlers
PSR 16 → Simple cache
PSR 17 → HTTP factories
PSR 18 → HTTP client
 
Core framework
Symfony Set of reusable PHP components and a PHP framework for web projects
Console → Console component
Event dispatch → Event dispatcher component
Filesystem → Filesystem component
Finder → Finder component
Img. Optim. → Easily optimize images using PHP
PF PHP 7.3+ → Polyfill backporting some PHP 7.3+ features to lower PHP versions
PF Iconv → Polyfill for the Iconv extension
Process → Process component
Property → PropertyAccess component
Serializer → Serializer Component
Var-dumper → Mechanism for exploring and dumping PHP variables
YAML → YAML component
 
Essential runtime packages
CA-bundle Find path to system CA bundle (with fallback to the Mozilla CA bundle)
Climate Terminal output colored text, special formatting, and more
Crontab Cron syntax handling in PHP
DebugBar Display profiling data from any part of your application
Doctrine Popular cache implementation
Doctrine collections → Library that contains classes for working with arrays of data.
DOM string DOMDocument iterators allowing traversal of a DOMNode
Dot notation Access deep data structures via a dot notation
Gregwar Image manipulation library.
Guzzle PSR-7 HTTP message library.
Humbug accessing HTTPS resources for PHP 5.3+ (archived)
Intervention Image handling and manipulation library (supports GD an Imagick)
Miljar Object-oriented EXIF parsing
Monolog Log to files, sockets, inboxes, databases and various web services
MP3 info The fastest php library to extract mp3 tags & meta information.
MyClabs enum PHP enum support.
Negotiation Content Negotiation tools for PHP provided as a standalone library
Pimple Simple PHP dependency injection container
Nylhom PSR7 Super lightweight PSR-7 implementation
PSR7 Server Use any PSR7 implementation as your main request and response
RocketTheme RocketTheme toolbox library
Slugify Converts a string to a slug. Integrates with Symfony and Twig.
Twig The flexible, fast, and secure template engine for PHP
Twig defer → An extension that allows to defer block rendering
Twig extension → Common additional features for Twig that do not directly belong in core
User agent Lightning fast, minimalist PHP user agent string parser.
Watcher Resource watcher using Symfony Finder
Whoops Deal with errors and exceptions in a less painful way
 
Optional runtime packages
Parsedown Self-described as better Markdown parser in PHP
Parsedown-extra → Extension that adds Markdown Extra support
 
PHP-implemented build tools
HTML minifier HTML compressor and minifier
Minify CSS & JavaScript minifier, in PHP
SCSSPHP Compiler for SCSS written in PHP
    "ext-json": "*",
    "ext-mbstring": "*",
    "ext-openssl": "*",
    "ext-zip": "*",

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages