A powerful and user-friendly static site generator that converts Markdown files into beautiful websites with advanced features.
- π Write content in Markdown (simple format)
- π Static Pages support (About, Contact, etc.)
- π·οΈ Tags and Categories system
- π¨ Customizable templates
- β‘ Fast and lightweight
- π Easy to use, even for beginners
- π Built-in development server with auto-reload
- π Social Links integration (GitHub, Twitter, LinkedIn, etc.)
- π‘ RSS Feed generation
- π― SEO Optimized with Open Graph and Twitter Cards
- πΌοΈ Featured Images support for posts and pages
- π Blog Archive with organized post history
- ποΈ Navigable Menu with custom pages
- π± Fully Responsive design
- π Dark Mode support
git clone https://github.com/scobru/stussy.git
cd stussyIf you don't have Node.js installed, download it from nodejs.org
Open terminal in this folder and run:
npm installor with yarn:
yarn installYour blog posts go in the content/ folder. Create .md (Markdown) files:
Example: content/my-first-post.md
---
title: My First Post
date: 2025-01-21
author: Your Name
description: A brief description of the post
category: Tutorial
tags: [markdown, blog, tutorial]
image: /images/my-post.jpg
---
# Welcome!
This is my **first post** using STUSSY.
## What can I do?
- Write normal text
- Use **bold** and _italic_
- Create lists
- Add links: [Example](https://example.com)
- And much more!Create static pages (like About, Contact) in the pages/ folder:
Example: pages/about.md
---
title: About
description: Learn more about us
---
# About Us
This is a static page that will be accessible at /about/Edit config.json to customize your site:
{
"siteName": "π΅ STUSSY",
"siteUrl": "https://stussy.shogun-eco.xyz",
"author": "Your Name",
"description": "Official website description",
"postsPerPage": 10,
"language": "en",
"dateFormat": "dd/MM/yyyy",
"navigation": [
{ "title": "Home", "url": "/" },
{ "title": "About", "url": "/about/" },
{ "title": "Blog", "url": "/blog/" }
],
"socialLinks": {
"github": "https://github.com/yourusername",
"twitter": "https://twitter.com/yourusername",
"linkedin": "https://linkedin.com/in/yourusername",
"email": "mailto:your@email.com"
},
"seo": {
"enableOpenGraph": true,
"enableTwitterCards": true,
"defaultImage": "/og-image.jpg",
"twitterHandle": "@yourusername"
},
"features": {
"enableRSS": true,
"enableTags": true,
"enableCategories": true,
"enableSearch": false,
"enableSidebar": true,
"enableComments": false
},
"footer": {
"showSocialLinks": true,
"customText": "Made with love using Shogun STUSSY"
}
}Windows:
build.batLinux/Mac:
npm run buildThe site will be created in the public/ folder
Windows:
serve.batLinux/Mac:
npm run serveOpen browser at http://localhost:3000
Windows:
dev.batLinux/Mac:
npm run devThis command:
- Builds the site
- Starts local server
- The site will update automatically when you modify files!
Windows:
new-post.batLinux/Mac:
npm run newFollow the instructions to create a new guided post.
stussy/
βββ content/ β Your blog posts (Markdown files)
β βββ post-1.md
β βββ post-2.md
βββ pages/ β Static pages (About, Contact, etc.)
β βββ about.md
β βββ contact.md
βββ templates/ β HTML templates
β βββ themes/ β Theme templates
β β βββ default/ β Default theme
β β βββ minimal/ β Minimal theme
β β βββ dark/ β Dark theme
β β βββ colorful/ β Colorful theme
β βββ layout.html β Fallback layout
β βββ post.html β Fallback post template
β βββ ... β Other fallback templates
βββ static/ β Static files (CSS, images, etc.)
β βββ themes/ β Theme CSS files
β β βββ default.css
β β βββ minimal.css
β β βββ dark.css
β β βββ colorful.css
β βββ style.css β Fallback CSS
βββ public/ β Generated site (don't modify)
βββ src/ β Generator code
β βββ index.js β Main generator
β βββ server.js β Development server
β βββ new-post.js β Post creation script
βββ config.json β Site configuration
STUSSY comes with 4 beautiful themes ready to use:
-
default - Modern and clean design with soft colors
- Clean typography
- Responsive layout
- Auto dark mode support
- Professional look
-
minimal - Ultra-minimalist and elegant
- Serif typography (Georgia)
- Minimal colors and borders
- Perfect for writers and bloggers
- Maximum focus on content
-
dark - Modern dark theme with neon accents
- JetBrains Mono font
- Neon green accents
- Perfect for tech blogs
- Eye-friendly dark design
-
colorful - Vibrant and playful with gradients
- Colorful gradients
- Modern card design
- Perfect for creative content
- Energetic and fun
Edit config.json:
{
"theme": {
"name": "dark", // Choose: default, minimal, dark, colorful
"customCSS": "" // Optional: path to additional CSS file
}
}You can create your own theme:
- Create a new folder in
templates/themes/your-theme/ - Copy template files from an existing theme
- Create
static/themes/your-theme.css - Set
"name": "your-theme"in config.json
Template files needed:
layout.html- Main page layoutindex.html- Homepage templatepost.html- Blog post templatepage.html- Static page templatearchive.html- Archive page templatetag.html- Tag page templatecategory.html- Category page template
You can customize any theme by adding a custom CSS file:
{
"theme": {
"name": "dark",
"customCSS": "/custom-styles.css"
}
}Place your custom-styles.css in the static/ folder.
---
title: Post Title # Required
date: 2025-01-21 # Required
author: Author Name # Optional
description: Post description # Optional (used in SEO)
category: Category Name # Optional
tags: [tag1, tag2, tag3] # Optional
image: /images/post.jpg # Optional (featured image)
------
title: Page Title # Required
description: Page description # Optional
image: /images/page.jpg # Optional
---Organize your content with tags and categories:
- Add tags and categories in your post frontmatter
- Tag pages are automatically generated at
/tags/{tag-name}/ - Category pages at
/categories/{category-name}/ - Tags and categories appear in post metadata
Add your social media links in config.json:
"socialLinks": {
"github": "https://github.com/yourusername",
"twitter": "https://twitter.com/yourusername",
"linkedin": "https://linkedin.com/in/yourusername",
"email": "mailto:your@email.com",
"facebook": "https://facebook.com/yourusername",
"instagram": "https://instagram.com/yourusername",
"youtube": "https://youtube.com/@yourusername"
}Automatically generated at /feed.xml when enableRSS: true.
Readers can subscribe to your blog using any RSS reader.
STUSSY includes built-in SEO features:
- Meta Tags: Automatic title and description tags
- Open Graph: For social media sharing (Facebook, LinkedIn)
- Twitter Cards: Enhanced Twitter previews
- Sitemap: Automatic generation (coming soon)
- Canonical URLs: Prevent duplicate content issues
Customize your navigation in config.json:
"navigation": [
{ "title": "Home", "url": "/" },
{ "title": "About", "url": "/about/" },
{ "title": "Blog Archive", "url": "/blog/" },
{ "title": "Contact", "url": "/contact/" }
]Access all your posts organized by date at /blog/
Add images to your posts and pages:
---
image: /images/my-image.jpg
---Images are displayed:
- As thumbnails in post previews
- As featured images in full posts
- In social media previews (Open Graph, Twitter Cards)
# Heading 1
## Heading 2
### Heading 3
**Bold**
_Italic_
~~Strikethrough~~
- Bullet point 1
- Bullet point 2
1. Numbered list 1
2. Numbered list 2
[Link text](https://example.com)

> Quote
`inline code`
\`\`\`
Code block
\`\`\`After running npm run build, the public/ folder contains your ready-to-publish site.
You can publish it on:
- GitHub Pages (free) - Guide
- Netlify (free) - Guide
- Vercel (free) - Guide
- Cloudflare Pages (free) - Guide
- Any web hosting
Just upload the contents of the public/ folder.
- Install Vercel CLI:
npm i -g vercel - Run:
vercel --prod - Done! Your site is live.
- Install Netlify CLI:
npm i -g netlify-cli - Run:
netlify deploy --prod --dir=public - Done! Your site is live.
Make sure you have Node.js installed from nodejs.org
- Stop the server (Ctrl+C)
- Run
npm run buildagain - Restart the server with
npm run serve
Check that the static/style.css file exists and is being copied to public/
Make sure:
- Your
.mdfiles have proper frontmatter (between---) - Frontmatter includes at least
titlefield - Files are in the correct folders (
content/for posts,pages/for static pages)
Enable them in config.json:
"features": {
"enableTags": true,
"enableCategories": true
}- Organize content: Create subfolders in
content/by category - Use descriptive filenames:
my-awesome-post.mdis better thanpost1.md - Backup: Always backup your
content/andpages/folders - Versioning: Use Git to track changes
- Images: Store images in
static/images/and reference them as/images/image.jpg - SEO: Always add descriptions to your posts and pages
- Social Sharing: Add featured images for better social media previews
- Testing: Always preview your site locally before deploying
- Themes: Try different themes to find the perfect look for your content
- Custom CSS: Use the customCSS option to add small tweaks without creating a full theme
Future features we're planning:
- Full-text search
- Comments system integration
- Automatic sitemap generation
- Image optimization
- Custom theme system β
- Pagination for post lists
- Related posts feature
- Table of contents generation
- Code syntax highlighting themes
- Multi-language support
- More built-in themes
- Theme gallery/marketplace
This project is open source. Feel free to improve it!
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - Free for personal and commercial use
Built with:
- Marked - Markdown parser
- Gray Matter - Frontmatter parser
- fs-extra - File system utilities
- Chokidar - File watcher
Inspired by:
Built with love by the Shogun team | GitHub | Support
Happy writing! π