You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<palign="center"> <imgsrc="images/logo.png"alt="Zeno Logo"width="600"/> </p> <palign="center"> <b>Turn your Markdown files into a full-featured blog with zero hassle 🚀</b> </p> <palign="center"> <ahref="LICENSE"><imgsrc="https://img.shields.io/badge/License-MIT-blue.svg"></a> <imgsrc="https://img.shields.io/badge/Node-%3E=18-green"> <imgsrc="https://img.shields.io/badge/PRs-Welcome-brightgreen"> <imgsrc="https://img.shields.io/github/stars/mine3krish/zeno?style=social"> </p>
2
3
3
-
Zeno is a lightweight, plugin-first Markdown → Blog framework built with JavaScript. It's designed to be simple, hackable, and extendable.
***Plugins** — Extend with hooks: `onMarkdownParse`, `onRenderHTML`, `onPostBuild`.
28
-
***CLI** — `init`, `build`, `serve` commands.
29
-
***Config file** — `zeno.config.json` for theme + plugins.
30
-
***Tags support** — Add tags in post frontmatter to show on homepage and post pages.
30
+
### 🎯 MVP Goal
31
+
Deliver a fast, hackable blogging framework where developers can:
32
+
- 📝 Write in Markdown
33
+
- 🎨 Apply themes
34
+
- ⚡ Extend with plugins
35
+
- 🏷️ Add tags to posts
36
+
- 🚀 Publish with one command
31
37
32
-
---
38
+
<hr>
33
39
34
-
## 🛠 Example Workflow
40
+
### 🚀 Quick start
41
+
🔧 Requirements
42
+
- Node.js v18+
43
+
- npm/yarn/pnpm
35
44
45
+
⚡ Install & Run
36
46
```bash
37
-
#create new blog
47
+
#Create a new blog
38
48
npx zeno-blog init mysite
39
49
cd mysite
40
50
41
-
#build blog
42
-
zeno build
51
+
#Build the blog
52
+
npx zeno-blog build
43
53
44
-
#start local dev server
45
-
zeno serve 3000
54
+
#Start the development server
55
+
npx zeno-blog serve 3000
46
56
```
57
+
Open 👉 http://localhost:3000
58
+
<hr>
47
59
48
-
---
60
+
### 📂 Project Structure
49
61
50
-
## 🔌 Example Plugin
51
-
52
-
```js
53
-
// plugins/popup.js
54
-
exportdefaultfunctionpopupPlugin(options) {
55
-
return {
56
-
name:'popup-plugin',
57
-
onRenderHTML(html) {
58
-
constscript=`
59
-
<script>
60
-
window.addEventListener('load', () => {
61
-
alert('${options.message||"Hello from plugin!"}');
62
-
});
63
-
</script>
64
-
`;
65
-
returnhtml.replace('</body>', script +'</body>');
66
-
}
67
-
};
68
-
}
69
62
```
70
-
71
-
Configure in `zeno.config.json`:
72
-
73
-
```json
74
-
{
75
-
"title": "My Blog",
76
-
"theme": "default",
77
-
"plugins": [
78
-
{ "name": "popup", "options": { "message": "Welcome to my blog!" } }
79
-
]
80
-
}
63
+
zeno/
64
+
├── bin/
65
+
│ └── zeno.js
66
+
├── src/
67
+
│ ├── builder.js
68
+
│ ├── cli.js
69
+
│ ├── config.js
70
+
│ └── server.js
71
+
├── plugins/
72
+
│ └── popup.js
73
+
├── themes/
74
+
│ └── default/
75
+
└── posts/
76
+
└── first-post.md
81
77
```
78
+
<hr>
82
79
83
-
---
84
-
85
-
## 📝 Markdown Post Example
80
+
### 🖼 Example
86
81
87
82
```md
88
83
---
@@ -94,10 +89,12 @@ tags: "first post, blog"
94
89
Zeno is a plugin-first Markdown blog framework built in JavaScript. It allows you to write in Markdown, apply themes, extend with plugins, and publish your blog with one command.
95
90
```
96
91
97
-
---
92
+
👉 Preview (Clazzy theme):
98
93
99
-
## 🏗 Theme Structure
94
+
<palign="center"> <imgsrc="images/blog.png"width="600"alt="Sample Blog Screenshot"/> </p>
95
+
<hr>
100
96
97
+
### ⚙️ Configuration
101
98
```
102
99
themes/default/
103
100
├── components/
@@ -109,55 +106,48 @@ themes/default/
109
106
```
110
107
111
108
*`components/` — Reusable components for your pages.
109
+
*`components/posts.html` - Individual post template.
112
110
*`index.html` — Home page template.
113
111
*`post.html` — Individual post template.
114
112
*`style.css` — Theme styles.
113
+
<hr>
115
114
116
-
---
115
+
### 🛣 Roadmap
116
+
-[ ] 🌗 Search Feature
117
+
-[ ] 🏷️ Tag archive pages
118
+
-[ ] 🔍 Filtering posts by tags
119
+
-[ ] 🎨✨ Advanced theme customization
117
120
118
-
## ⚡ Plugin Hooks
121
+
<hr>
119
122
120
-
*`onMarkdownParse(markdown, frontmatter)` — Modify Markdown before rendering.
121
-
*`onRenderHTML(html, frontmatter)` — Modify HTML after rendering.
122
-
*`onPostBuild(distDir)` — Hook after the blog is built.
123
+
### 🤝 Contributing
124
+
💡 Contributions are welcome!
125
+
-1. Fork the repo
126
+
-2. Create a feature branch (git checkout -b feature/my-feature)
0 commit comments