# clover sitegen framework this repository contains clover's "sitegen" framework, which is a set of tools that assist building websites. these tools power https://paperclover.net. - HTML "Server Side Rendering") engine written from scratch. - A more practical JSX runtime (`class` instead of `className`, etc). - Transparent integration with [Marko][1] to mix component types. - MDX support for text-heavy content pages. - Incremental static site generator and build system - Build entire production site at start, incremental updates when pages change; Build system state survives coding sessions. - The only difference in development and production mode is hidden source-maps and stripped assertions and `console.debug` calls. The site you see locally is the site you see deployed. - (TODO) Tests, Lints, and Type-checking is run alongside, and only re-runs checks when the files change. For example, changing a component re-tests only pages that use that component and re-lints only the changed file. - Integrated libraries for building complex, content heavy web sites. - Static asset serving with ETag and build-time compression. - Dynamicly rendered pages with static client. (`#import "#sitegen/view"`) - Databases with a typed SQLite wrapper. (`import "#sitegen/sqlite"`) - TODO: Meta and Open Graph generation. (`export const meta`) - TODO: Font subsetting tools to reduce - Built on the battle-tested Node.js runtime. Partial support for Deno and Bun. [1]: https://next.markojs.com Included is `src`, which contains `paperclover.net`. Website highlights: - [Question/Answer board, custom markdown parser and components][q+a]. - [File viewer with prefetching + client-side navigation][file]. - [Personal, friends-only blog with password protection][friends]. [q+a]: https://paperclover.net/q+a [file]: https://paperclover.net/file [friends]: https://paperclover.net/friends ## Development minimum system requirements: - a cpu with at least 1 core. - random access memory. - windows 7 or later, macos, or other operating system. my development machine, for example, is Dell Inspiron 7348 with Core i7 ``` npm install # production generation node run generate node .clover/out/server # "development" watch mode node run watch ``` ## Contributions No contributions to `src` accepted, only `framework`.