|
1 | 1 | 
|
2 | 2 |
|
3 |
| -* [Why](#why) |
4 |
| -* [Leo](#leo) |
5 |
| - - [Data](#data) |
6 |
| - - [Templates](#templates) |
7 |
| - - [Routing](#routing) |
8 |
| - - [Quick Start](#quick-start) |
| 3 | +# LEO |
| 4 | + |
| 5 | +LEO is a library for creating Content Based Site Generators with a |
| 6 | +common GraphQL data layer. Typically, one would use a LEO generator to |
| 7 | +build static sites from Single Page Applications. This is a different |
| 8 | +approach to generators such as Jekyll and Hugo which use template |
| 9 | +languages. See the |
| 10 | +[Comparison to Other Generators](docs/comparison-to-other-generators.md). |
| 11 | + |
| 12 | +You may want to choose a pre-built generator such as React/Apollo from the |
| 13 | +[Quick Start](#quick-start) section. |
| 14 | + |
| 15 | +* [Why](#why-leo) |
| 16 | + - [GraphQL Data Layer](docs/graphql-data-layer) |
| 17 | + - Use any UI tech (React, Glamor, Inferno, etc) |
| 18 | + - Highly Extensible |
| 19 | + - Structured Content Types (Markdown, Blogpost, Contentful) |
| 20 | + - Reuse Component Libraries Across Client Projects |
9 | 21 | * [More Docs](docs)
|
10 | 22 | - [Technical Overview](docs/technical-overview.md)
|
11 | 23 | - [Plugins](docs/plugins.md)
|
12 | 24 | - [Developing](docs/developing.md)
|
13 | 25 |
|
14 |
| -# Why LEO? |
15 |
| - |
16 |
| -LEO is a library for creating Static Site Generators with a common |
17 |
| -GraphQL data layer. Typically, one would use a LEO generator to build |
18 |
| -static sites from Single Page Applications. This is a different |
19 |
| -approach to generators such as Jekyll and Hugo which use template |
20 |
| -languages. See the [Comparison to Other Generators](). |
21 |
| - |
22 |
| -You may want to choose a pre-built generator such as React from the |
23 |
| -[Quick Start]() section. |
24 |
| - |
25 |
| -<h4 align="center">Data</h4> |
26 |
| - |
27 |
| -Data in LEO is exposed through a composable, extensible GraphQL |
28 |
| -Schema defining Content Types. It can be queried with any valid |
29 |
| -GraphQL client (such as |
30 |
| -[Apollo](https://github.com/apollostack/apollo-client) or |
31 |
| -[GraphiQL]() for development). |
32 |
| - |
33 |
| -```javascript |
34 |
| -query BlogPostPage { |
35 |
| - post(slug: $slug) { |
36 |
| - attributes { title, date, timeToRead } |
37 |
| - body |
38 |
| - } |
39 |
| -} |
40 |
| -``` |
41 |
| - |
42 | 26 | # Why Leo?
|
43 | 27 |
|
44 |
| -* [GraphQL Data Layer](docs/graphql-data-layer) |
45 |
| -* Use any UI tech (React, Glamor, Inferno, etc) |
46 |
| -* Webpack based extensibility |
47 |
| -* Structured Content Types (Markdown, Blogpost, Contentful) |
48 |
| -* Reuse Component Libraries Across Client Projects |
| 28 | +LEO can turn a Universal application into a Progressive Web App. This |
| 29 | +means you can reuse your Single Page Application skills to build |
| 30 | +advanced static sites. LEO's data processing is coordinated by webpack |
| 31 | +and exposed via GraphQL, which offers rich introspection |
| 32 | +capability. An example of this is using Apollo Dev Tools or GraphiQL |
| 33 | +to explore the data used to build a static site, then copying queries |
| 34 | +out into application code when satisfied. Finally, LEO doesn't |
| 35 | +restrict your ability to use the latest and greatest UI tooling. From |
| 36 | +Babel to TypeScript, React to Inferno, PostCSS to Glamor, and Apollo |
| 37 | +to Relay, LEO lets you use the tooling that makes you most productive |
| 38 | +through reusable plugins. |
49 | 39 |
|
50 | 40 | ## Optional Modern Client-Side JS
|
51 | 41 |
|
@@ -78,35 +68,9 @@ cd leo-blog-starter && npm i
|
78 | 68 |
|
79 | 69 | ## Deployment
|
80 | 70 |
|
81 |
| -Leo can deploy to [surge.sh](http://surge.sh/), [GitHub |
82 |
| -Pages](https://pages.github.com/) and anywhere else using [deployment |
83 |
| -plugins](#deployment). |
84 |
| - |
85 |
| -# Themes |
86 |
| - |
87 |
| -Themes are bundles of React Components and Content Types. For example, |
88 |
| -a Theme can provide the Components required to render various forms of |
89 |
| -BlogPosts (individual view, generic list view, archive view, etc). |
90 |
| - |
91 |
| -Themes can depend on multiple Content Types. This makes it possible to |
92 |
| -scale a theme from a single Blog Post to an entire site (including |
93 |
| -aggregate pages, such as a landing page). |
94 |
| - |
95 |
| -# Developing Leo |
96 |
| - |
97 |
| -Leo is [lerna-based](https://github.com/lerna/lerna). |
98 |
| - |
99 |
| -## Deploying |
100 |
| - |
101 |
| -Ideally, this would run off of |
102 |
| -[lerna-semantic-release](https://github.com/atlassian/lerna-semantic-release). Until |
103 |
| -then, here are the commands to run to deploy new lerna versions. |
104 |
| - |
105 |
| -``` |
106 |
| -./node_modules/.bin/lerna bootstrap |
107 |
| -./node_modules/.bin/lerna run dist |
108 |
| -./node_modules/.bin/lerna deploy |
109 |
| -``` |
| 71 | +LEO renders to a static folder of files and can be deployed to GitHub |
| 72 | +Pages, [Netlify](https://www.netlify.com/), or any other hosting |
| 73 | +service. |
110 | 74 |
|
111 | 75 | [react]: https://facebook.github.io/react/
|
112 |
| -[react-router]: https://github.com/reactjs/react-router |
| 76 | +[react-router]: https://github.com/ReactTraining/react-router |
0 commit comments