summaryrefslogtreecommitdiff
path: root/README.md
blob: b5345b6184abd780dd2aa5c1f48f1933334ed6a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# flexo

*alpha quality software*

The Common Lisp, interactive system for static site generation.

For an example of a site made with flexo, see [my site's source](https://github.com/cbeo/hyperthings.garden)

The idea is this:

1. You make a recipe that builds your site. It typically has two parts:
  - The recipe first adds "resources", which are usually files on disk
  - The recipie then uses those resources to build "artifacts", which are mostly pages.
2. You then pass the recipie to a function that builds and publishes the site.

## Interactive development

The real benefit of flexo is interactive development.

If you run the function 

    (hack-on 'my-site-recipe #P/tmp/flexo-hack-space/" :port 4242)
    
The you can do things like add new resources and recompile the functions that build artifact and the site will automatically redisplay.

## Future development

- Separate `spinneret`, `LASS`, and `parenscript` template macros into their own packages
- Document the CLOS Protocol that Flexo uses, including how to extend it to:
  - Make your own artifacts
  - Make your own resources
  - Make your own deployment styles
- Add resources as:
  - Entire separate document trees for importing "subsites"
  - Database Queries as resources, not just files
  - API calls as resources, not just files