Welcome to Broadsheet, a custom Hexo theme designed for thoughtful blogging. This guide will walk you through everything you need to get started, from initial setup to publishing your first posts.
Prerequisites
Before diving in, make sure you have the right tools:
- Node.js 20+: Broadsheet requires a modern Node.js version. You can download it from nodejs.org.
- npm: This comes bundled with Node.js, so you’re all set.
- Git: Optional but recommended for version control and deployment.
Installation
Start by cloning or downloading the Broadsheet project. If you’re reading this, you probably already have it set up, but here’s the process:
1 | # Clone the repository (if available) |
This will install Hexo and all the necessary packages defined in package.json.
Project Structure
Once installed, your project should look like this:
1 | . |
Configuration
Site Configuration
Edit _config.yml in the root directory to set up your basic site information:
1 | # Site |
Theme Configuration
Customize the theme by editing themes/Broadsheet/_config.yml:
1 | # Theme settings |
Creating Content
New Posts
Create a new post with Hexo’s built-in command:
1 | npx hexo new "My First Post" |
This generates a new Markdown file in source/_posts/ with basic front matter.
Front Matter
Every post needs front matter at the top:
1 |
|
Writing Patterns
Broadsheet supports five content patterns:
- article: Multi-column layout for long-form content, with each section heading kept beside its first paragraph
- listicle: Vertical repeated sections for rankings, checklists, guides, and itemized posts
- roundup: Card-based collections
- simple: Standard blog posts with layout helpers
- freeform: Plain Markdown (default)
Choose the pattern that best fits your content structure.
A listicle entry is just a vertical section. You can number the heading or leave it unnumbered, and the content stays in the order you write it:
1 | <section class="listicle-entry"> |
Development Workflow
Local Development
Start the development server:
1 | npm run server |
This builds the CSS and starts Hexo locally. Visit http://localhost:4000 to see your site.
CSS Development
Broadsheet uses Tailwind CSS. For live reloading during style development:
1 | npm run watch:css |
This watches themes/Broadsheet/source/css/app.css and rebuilds generated.css automatically.
Building for Production
Generate the static site:
1 | npm run build |
Output goes to the public/ directory, ready for deployment.
Cleaning Cache
Clear Hexo’s cache and generated files:
1 | npm run clean |
Deployment
Manual Deployment
After building, upload the contents of public/ to your web server.
Automated Deployment
For platforms like Netlify, Vercel, or GitHub Pages, you can set up automatic builds. Most services can run npm run build as the build command.
GitHub Pages Example
- Push your source code to GitHub
- Enable GitHub Pages in repository settings
- Set the source to “GitHub Actions”
- Create a workflow file
.github/workflows/deploy.yml:
1 | name: Deploy to GitHub Pages |
Advanced Usage
Custom Helpers
Broadsheet provides several helper functions in themes/Broadsheet/scripts/helpers.js:
editorial_summary(post, length): Generate summarieseditorial_cover(post): Resolve post imageseditorial_pattern(page): Get pattern typeeditorial_body_class(page): Get CSS classes
Theme Customization
Modify templates in themes/Broadsheet/layout/ (EJS files), styles in themes/Broadsheet/source/css/app.css, or add custom scripts in themes/Broadsheet/source/js/.
SEO and Metadata
Broadsheet automatically generates:
- Meta descriptions and keywords
- Open Graph and Twitter card tags
- Structured data (JSON-LD)
- Canonical URLs
Configure SEO settings in the theme config.
Troubleshooting
Common Issues
CSS not updating: Run npm run watch:css in a separate terminal during development.
Posts not appearing: Check front matter dates and run npm run clean then rebuild.
Images not loading: Ensure paths are correct and files exist in themes/Broadsheet/source/images/.
Build failing: Check for syntax errors in Markdown or template files.
Getting Help
If you run into issues:
- Check the Hexo documentation: https://hexo.io/docs/
- Review the Broadsheet README for theme-specific details
- Search existing issues or create a new one in the project repository
Next Steps
Now that you’re set up:
- Create your first post
- Customize the theme configuration
- Set up deployment
- Start writing!
Broadsheet is designed to be flexible yet opinionated, giving you powerful tools while keeping the focus on your content. Happy blogging!