1.0.0-beta.4 • Published 6 months ago

abell v1.0.0-beta.4

Weekly downloads
24
License
MIT
Repository
github
Last release
6 months ago

📖 Documentation

This documentation is only for the people who want to contribute or just want to try it out for fun. Abell should not be used for production applications yet.

Table of Content

1. Create your site

Deploy to netlify button below will create copy of Abell Starter Project in your GitHub and will deploy it to Netlify and boom! that's it 🎉

Deploy to Netlify Button

REMEMBER! ABELL IS NOT READY! SO DON'T GET TOO EXCITED TO CREATE AN ACTUAL PRODUCTION BLOG WITH THIS.

Write/Edit Content

You can edit markdown files from ./content directory in your repo to edit content.

To test your blog, you can either run your site locally or open your site's github repository in CodeSandbox

Run your site locally

  • You can git clone <project-github-url>
  • cd <project-name>
  • npm install
  • npm run dev to run a dev server and npm run build to create final build.

2. Abell Guide

Abell Configs

Sample abell.config.js:

module.exports = {
  sourcePath: 'src', // path of source where index.abell and template/content.abell are located
  destinationPath: 'dist', // Build destination
  contentPath: 'content', // Content Path which has .md 
  globalMeta: { // All the global variables
    siteName: 'Abell Demo', 
    author: 'Saurabh Daware',
    foo: 'bar'
  }
}

Variables in Abell

Abell lets you use variables inside your .abell files.

Content specific variables

Your content may sometimes have meta data like title, og:image, etc. which is dynamic (different for different content). You can set this meta info from ./content/<content-slug>/meta.json.

Example ./content/<content-slug>/meta.json

{
  "title": "Another blog",
  "description": "Amazing blog right",
  "foo": "bar"
}

These variables can be accessed from ./src/template/content.abell with {{ meta.title }}, {{ meta.description }}, {{ meta.foo }}

Global variables

You can add your variables in globalMeta property inside abell.config.js file and access those variables from .abell files with {{ globalMeta.<key> }} (e.g {{ globalMeta.siteTitle }})

Predefined variables

In addition to Content Specific Variables and Global Variables, Abell has some predefined variables to provide required meta data about the content.

Predefined variables start with $ and are accessible from .abell files.

List of predefined variables

VariablesdescriptionExample Value
meta.$slugFolder name of content, used as slugmy-cool-blog
meta.$createdAtDate & Time of creation of content.Sun Apr 30 2020
meta.$modifiedAtDate & Time of last modification of content.Thu May 20 2020
$contentListArray of all 'meta' values from content[{title: 'Cool Blog', $slug: 'my-cool-blog'}, {title: 'Nice blog', $slug: 'nice-blog-69'}]

Importing Markdown as HTML

You can import markdown files as HTML in .abell files using $importContent(path) function.

In this function, paths are relative to 'content' directory.

Example:

  <section id="blog-container">
    {{ $importContent(meta.$slug + '/index.md') }}
  </section>

This will import the markdown as HTML from ./content/my-blog/index.md. (where my-blog is dynamic)

Loops in Abell

Starting from v0.1.12, Abell uses abell-renderer for rendering.

You can use JavaScript methods within {{ and }} so to loop through an object and generate HTML, you can use .map() method from JavaScript.

Note: The JavaScript you write inside {{ and }} compiles on build time and runs in NodeJS context so you cannot use frontend JavaScript methods from DOM

Example 1

Let's say we have this object in variable $contentList

// $contentList
[
  {
    title: 'Cool Blog', 
    $slug: 'my-cool-blog',
    $createdAt: 'Sun Apr 30 2020',
    $modifiedAt: 'Wed May 10 2020'
  }, 
  {
    title: 'Nice blog', 
    $slug: 'nice-blog-69',
    $createdAt: 'Sun Apr 06 2069',
    $modifiedAt: 'Wed May 09 2069'
  }
]

We can loop $contentList with,

<div class="article-container">
{{ 
  $contentList
    .map(meta => `
      <article>
        <a href="${meta.$slug}"><h2>${meta.title.toUpperCase()}</h2></a>
        <p>Created at: ${meta.$createdAt}</p>
      </article>
    `).join('')
}}
</div>

outputs:

<div class="article-container">
  <article>
    <a href="my-cool-blog"><h2>Cool Blog</h2></a>
    <p>Created at: Sun Apr 30 2020</p>
  </article>
  <article>
    <a href="nice-blog-69"><h2>Nice Blog</h2></a>
    <p>Created at: Sun Apr 06 2069</p>
  </article>
</div>
Example 2

Let's say we have globalMeta.foo as,

['Hi I am 1', 'John Doe', 'Lorem Ipsum']
<div>
  {{ 
    globalMeta.foo
      .map(content => `<b>${content}<b>`)
      .join('')
  }}
</div>

outputs:

<div>
  <b>Hi I am 1</b>
  <b>John Doe</b>
  <b>Lorem Ipsum</b>
</div>

You can also use other JavaScript methods within {{ }}

3. Contributing to Abell

This repository contains the code that builds the Abell Website. If you want you can also contribute to other repositories in this organization that deal with starter-templates, vscode extension for .abell files, etc.

Local Setup of Abell Builder

  • Fork this repository
  • git clone {url of your fork}
  • cd abell
  • npm install to install dependencies
  • npm run dev:build to build static site!

and you will have your website in ./demo/dist

To run a DEV server, you can run npm run dev:serve which will serve the website on localhost

Creating Pull Request

  • Create a branch with name of feature you are working on. (e.g. feat-abell-config, fix-serve-fails, etc)
  • Make changes in your locally cloned fork
  • Send Pull Request from your branch to master of main repository.

npm run dev:build is equivalent to abell build and npm run dev:serve is equivalent to abell serve

Changelog

Changelogs are maintained in CHANGELOG.md


 

If you want to know the status and get updates you can follow me on Twitter @saurabhcodes

1.0.0-alpha.109

7 months ago

1.0.0-alpha.108

7 months ago

1.0.0-alpha.107

7 months ago

1.0.0-alpha.102

8 months ago

1.0.0-alpha.101

8 months ago

1.0.0-alpha.100

9 months ago

1.0.0-alpha.106

8 months ago

1.0.0-alpha.105

8 months ago

1.0.0-alpha.104

8 months ago

1.0.0-alpha.103

8 months ago

1.0.0-alpha.111

7 months ago

1.0.0-alpha.110

7 months ago

0.10.4

9 months ago

1.0.0-alpha.96

9 months ago

1.0.0-alpha.95

9 months ago

1.0.0-alpha.98

9 months ago

1.0.0-alpha.97

9 months ago

1.0.0-alpha.92

9 months ago

1.0.0-alpha.91

9 months ago

1.0.0-alpha.94

9 months ago

1.0.0-alpha.93

9 months ago

1.0.0-alpha.99

9 months ago

1.0.0-beta.2

7 months ago

1.0.0-beta.3

7 months ago

1.0.0-beta.4

6 months ago

1.0.0-alpha.90

9 months ago

1.0.0-beta.1

7 months ago

1.0.0-alpha.85

9 months ago

1.0.0-alpha.84

9 months ago

1.0.0-alpha.52

2 years ago

1.0.0-alpha.51

2 years ago

1.0.0-alpha.54

2 years ago

1.0.0-alpha.50

2 years ago

1.0.0-alpha.59

2 years ago

1.0.0-alpha.56

2 years ago

1.0.0-alpha.58

2 years ago

1.0.0-alpha.63

2 years ago

1.0.0-alpha.62

2 years ago

1.0.0-alpha.65

2 years ago

1.0.0-alpha.64

2 years ago

1.0.0-alpha.61

2 years ago

1.0.0-alpha.60

2 years ago

1.0.0-alpha.67

2 years ago

1.0.0-alpha.66

2 years ago

1.0.0-alpha.69

2 years ago

1.0.0-alpha.68

2 years ago

1.0.0-alpha.43

2 years ago

1.0.0-alpha.42

2 years ago

1.0.0-alpha.45

2 years ago

1.0.0-alpha.44

2 years ago

1.0.0-alpha.47

2 years ago

1.0.0-alpha.46

2 years ago

1.0.0-alpha.74

1 year ago

1.0.0-alpha.73

2 years ago

1.0.0-alpha.76

1 year ago

1.0.0-alpha.75

1 year ago

1.0.0-alpha.70

2 years ago

1.0.0-alpha.72

2 years ago

1.0.0-alpha.71

2 years ago

1.0.0-alpha.78

1 year ago

1.0.0-alpha.77

1 year ago

1.0.0-alpha.79

1 year ago

1.0.0-alpha.81

1 year ago

1.0.0-alpha.80

1 year ago

1.0.0-alpha.83

1 year ago

1.0.0-alpha.82

1 year ago

1.0.0-alpha.2

2 years ago

1.0.0-alpha.1

2 years ago

1.0.0-alpha.32

2 years ago

1.0.0-alpha.31

2 years ago

1.0.0-alpha.38

2 years ago

1.0.0-alpha.37

2 years ago

1.0.0-alpha.39

2 years ago

1.0.0-alpha.34

2 years ago

1.0.0-alpha.33

2 years ago

1.0.0-alpha.36

2 years ago

1.0.0-alpha.35

2 years ago

1.0.0-alpha.41

2 years ago

1.0.0-alpha.40

2 years ago

1.0.0-alpha.10

2 years ago

1.0.0-alpha.16

2 years ago

1.0.0-alpha.15

2 years ago

1.0.0-alpha.18

2 years ago

1.0.0-alpha.12

2 years ago

1.0.0-alpha.11

2 years ago

1.0.0-alpha.13

2 years ago

1.0.0-alpha.21

2 years ago

1.0.0-alpha.20

2 years ago

1.0.0-alpha.27

2 years ago

1.0.0-alpha.28

2 years ago

1.0.0-alpha.23

2 years ago

1.0.0-alpha.22

2 years ago

0.10.4-alpha.1

3 years ago

0.10.3

3 years ago

0.10.1

3 years ago

0.10.2

3 years ago

0.10.0

3 years ago

0.10.0-alpha.1

3 years ago

0.9.0

3 years ago

0.9.0-alpha.5

3 years ago

0.9.0-alpha.4

3 years ago

0.9.0-alpha.3

3 years ago

0.9.0-alpha.2

3 years ago

0.9.0-alpha.1

3 years ago

0.8.0

3 years ago

0.8.0-alpha.3

3 years ago

0.8.0-alpha.2

3 years ago

0.8.0-alpha.1

3 years ago

0.7.5

4 years ago

0.7.4

4 years ago

0.7.3

4 years ago

0.7.2

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.6.6-beta.1

4 years ago

0.6.5

4 years ago

0.6.4

4 years ago

0.6.3

4 years ago

0.6.2

4 years ago

0.6.1

4 years ago

0.6.0-beta.1

4 years ago

0.6.0

4 years ago

0.6.0-alpha.3

4 years ago

0.6.0-alpha.2

4 years ago

0.6.0-alpha.1

4 years ago

0.5.1

4 years ago

0.5.0

4 years ago

0.5.0-alpha.1

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.4.0-rc.10

4 years ago

0.4.0-rc.9

4 years ago

0.4.0-rc.8

4 years ago

0.4.0-rc.7

4 years ago

0.4.0-rc.6

4 years ago

0.4.0-rc.5

4 years ago

0.4.0-rc.3

4 years ago

0.4.0-rc.4

4 years ago

0.4.0-rc.2

4 years ago

0.4.0-rc.1

4 years ago

0.4.0-beta.8

4 years ago

0.4.0-beta.7

4 years ago

0.4.0-beta.5

4 years ago

0.4.0-beta.6

4 years ago

0.4.0-beta.3

4 years ago

0.4.0-beta.4

4 years ago

0.4.0-beta.2

4 years ago

0.4.0-alpha.18

4 years ago

0.4.0-beta.1

4 years ago

0.4.0-alpha.17

4 years ago

0.4.0-alpha.16

4 years ago

0.4.0-alpha.15

4 years ago

0.4.0-alpha.14

4 years ago

0.4.0-alpha.13

4 years ago

0.4.0-alpha.12

4 years ago

0.4.0-alpha.11

4 years ago

0.4.0-alpha.10

4 years ago

0.4.0-alpha.8

4 years ago

0.4.0-alpha.7

4 years ago

0.4.0-alpha.6

4 years ago

0.4.0-alpha.5

4 years ago

0.4.0-alpha.4

4 years ago

0.4.0-alpha.3

4 years ago

0.4.0-alpha.2

4 years ago

0.4.0-alpha.1

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.3-rc.1

4 years ago

0.3.3-beta.1

4 years ago

0.3.3-alpha.2

4 years ago

0.3.3-alpha.1

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.1-alpha.1

4 years ago

0.3.0

4 years ago

0.3.0-rc.7

4 years ago

0.3.0-rc.8

4 years ago

0.3.0-rc.9

4 years ago

0.3.0-rc.5

4 years ago

0.3.0-rc.6

4 years ago

0.3.0-rc.4

4 years ago

0.3.0-rc.3

4 years ago

0.3.0-rc.2

4 years ago

0.3.0-beta.1

4 years ago

0.3.0-alpha.15

4 years ago

0.3.0-rc.1

4 years ago

0.3.0-alpha.14

4 years ago

0.3.0-alpha.13

4 years ago

0.3.0-alpha.11

4 years ago

0.3.0-alpha.12

4 years ago

0.3.0-alpha.10

4 years ago

0.3.0-alpha.9

4 years ago

0.3.0-alpha.8

4 years ago

0.3.0-alpha.7

4 years ago

0.3.0-alpha.6

4 years ago

0.3.0-alpha.5

4 years ago

0.3.0-alpha.2

4 years ago

0.3.0-alpha.3

4 years ago

0.3.0-alpha.4

4 years ago

0.3.0-alpha.1

4 years ago

0.2.20-alpha.1

4 years ago

0.2.20

4 years ago

0.2.18

4 years ago

0.2.17

4 years ago

0.2.16

4 years ago

0.2.15

4 years ago

0.2.13

4 years ago

0.2.12

4 years ago

0.2.11

4 years ago

0.2.10

4 years ago

0.2.9

4 years ago

0.2.8

4 years ago

0.2.7

4 years ago

0.2.6

4 years ago

0.2.6-alpha.3

4 years ago

0.2.6-alpha.1

4 years ago

0.2.6-alpha.2

4 years ago

0.2.5

4 years ago

0.2.3

4 years ago

0.2.4

4 years ago

0.2.2

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.15

4 years ago

0.1.14

4 years ago

0.1.12

4 years ago

0.1.13

4 years ago

0.1.11

4 years ago

0.1.10

4 years ago

0.1.9

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.1

4 years ago

0.0.0-alpha.1

4 years ago