Update readme.md
This commit is contained in:
parent
a7220a7e74
commit
50d245569c
1 changed files with 70 additions and 69 deletions
139
readme.md
139
readme.md
|
@ -1,69 +1,70 @@
|
||||||
# clover sitegen framework
|
# clover sitegen framework
|
||||||
|
|
||||||
this repository contains clover's "sitegen" framework, which is a set of tools
|
this repository contains clover's "sitegen" framework, which is a set of tools
|
||||||
that assist building websites. these tools power https://paperclover.net.
|
that assist building websites. these tools power https://paperclover.net.
|
||||||
|
|
||||||
- HTML "Server Side Rendering") engine written from scratch.
|
- HTML "Server Side Rendering") engine written from scratch.
|
||||||
- A more practical JSX runtime (`class` instead of `className`, etc).
|
- A more practical JSX runtime (`class` instead of `className`, etc).
|
||||||
- Transparent integration with [Marko][1] to mix component types.
|
- Transparent integration with [Marko][1] to mix component types.
|
||||||
- MDX support for text-heavy content pages.
|
- MDX support for text-heavy content pages.
|
||||||
- Incremental static site generator and build system
|
- Incremental static site generator and build system
|
||||||
- Build entire production site at start, incremental updates when pages
|
- Build entire production site at start, incremental updates when pages
|
||||||
change; Build system state survives coding sessions.
|
change; Build system state survives coding sessions.
|
||||||
- The only difference in development and production mode is hidden
|
- The only difference in development and production mode is hidden
|
||||||
source-maps and stripped assertions and `console.debug` calls. The site
|
source-maps and stripped assertions and `console.debug` calls. The site
|
||||||
you see locally is the site you see deployed.
|
you see locally is the site you see deployed.
|
||||||
- Tools for building complex, content heavy web sites.
|
- (TODO) Tests, Lints, and Type-checking is run alongside, and only re-runs
|
||||||
- Static asset serving with ETag and build-time compression.
|
checks when the files change. For example, changing a component re-tests
|
||||||
- Dynamic server side rendering from within backend code.
|
only pages that use that component and re-lints only the changed file.
|
||||||
- Databases with a typed SQLite wrapper.
|
- Integrated libraries for building complex, content heavy web sites.
|
||||||
- TODO: Integrated unit and end-to-end test runner. Along with other built-in
|
- Static asset serving with ETag and build-time compression.
|
||||||
codebase checks (tsc, lint), all tests run automatically in the background.
|
- Dynamicly rendered pages with static client. (`#import "#sitegen/view"`)
|
||||||
Test caching uses the same incremental system the build does, so changing a
|
- Databases with a typed SQLite wrapper. (`import "#sitegen/sqlite"`)
|
||||||
library file knows to re-test all of the pages that import it.
|
- TODO: Meta and Open Graph generation. (`export const meta`)
|
||||||
- Built on the battle-tested Node.js runtime. Partial support for Deno and Bun.
|
- 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
|
|
||||||
|
[1]: https://next.markojs.com
|
||||||
Included is `src`, which contains `paperclover.net`. Website highlights:
|
|
||||||
|
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].
|
- [Question/Answer board, custom markdown parser and components][q+a].
|
||||||
- [Personal, friends-only blog with password protection][friends].
|
- [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
|
[q+a]: https://paperclover.net/q+a
|
||||||
[friends]: https://paperclover.net/friends
|
[file]: https://paperclover.net/file
|
||||||
|
[friends]: https://paperclover.net/friends
|
||||||
## Development
|
|
||||||
|
## Development
|
||||||
minimum system requirements:
|
|
||||||
- a cpu with at least 1 core.
|
minimum system requirements:
|
||||||
- random access memory.
|
- a cpu with at least 1 core.
|
||||||
- windows 7 or later, macos, or other operating system.
|
- random access memory.
|
||||||
|
- windows 7 or later, macos, or other operating system.
|
||||||
my development machine, for example, is Dell Inspiron 7348 with Core i7
|
|
||||||
|
my development machine, for example, is Dell Inspiron 7348 with Core i7
|
||||||
```
|
|
||||||
npm install
|
```
|
||||||
|
npm install
|
||||||
# production generation
|
|
||||||
node run generate
|
# production generation
|
||||||
node .clover/out/server
|
node run generate
|
||||||
|
node .clover/out/server
|
||||||
# "development" watch mode
|
|
||||||
node run watch
|
# "development" watch mode
|
||||||
```
|
node run watch
|
||||||
|
```
|
||||||
<!-- `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 -->
|
<!-- `repl.js` will open a read-eval-print-loop where plugin state is cached (on my -->
|
||||||
<!-- `src` besides `hot.ts` can be edited and quickly re-run. for example, to run -->
|
<!-- 2014 dev laptop, startup time is 600-1000ms). every file in `framework` and -->
|
||||||
<!-- `framework/generate.ts`, you can type "generate" into the shell. since -->
|
<!-- `src` besides `hot.ts` can be edited and quickly re-run. for example, to run -->
|
||||||
<!-- top-level await is not supported (plugins are built on `require` as Node has -->
|
<!-- `framework/generate.ts`, you can type "generate" into the shell. since -->
|
||||||
<!-- poor module support), CLIs can include a `main` function, which is executed -->
|
<!-- top-level await is not supported (plugins are built on `require` as Node has -->
|
||||||
<!-- when the REPL runs it. -->
|
<!-- poor module support), CLIs can include a `main` function, which is executed -->
|
||||||
|
<!-- when the REPL runs it. -->
|
||||||
## Contributions
|
|
||||||
|
## Contributions
|
||||||
No contributions to `src` accepted, only `framework`.
|
|
||||||
|
No contributions to `src` accepted, only `framework`.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue