67 lines
2.6 KiB
Markdown
67 lines
2.6 KiB
Markdown
# 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.
|
|
- Tools for building complex, content heavy web sites.
|
|
- Static asset serving with ETag and build-time compression.
|
|
- Dynamic server side rendering from within backend code.
|
|
- Databases with a typed SQLite wrapper.
|
|
- 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
|
|
|
|
# live development environment
|
|
node repl
|
|
```
|
|
|
|
`repl.js` will open a read-eval-print-loop where plugin state is cached (on my
|
|
2014 dev laptop, startup time is 600-1000ms). every file in `framework` and
|
|
`src` besides `hot.ts` can be edited and quickly re-run. for example, to run
|
|
`framework/generate.ts`, you can type "generate" into the shell. since
|
|
top-level await is not supported (plugins are built on `require` as Node has
|
|
poor module support), CLIs can include a `main` function, which is executed
|
|
when the REPL runs it.
|
|
|
|
TODO: in the future, the repl will have a "dev" command which will do the incremental
|
|
site build + host, possibly immediatly on opening the repl.
|
|
|
|
## Contributions
|
|
|
|
No contributions to `src` accepted, only `framework`.
|
|
|