A simple website with a blog
simple-website-with-blog is a simple Node.js web application for static content that includes a blog.
It was created as the basis for my own website, but everyone is welcome to use it.
The implementation strives to be simple and free of unnecessary dependencies.
- An easy way to create a simple, secure website with a blog
- Support for text-based and photo-based blog formats
- Easy authoring in HTML, Markdown (with code formatting), or JSON
- Ordering of posts by publish date or content date
- Easy customization of site layout and formatting
- High resolution (2x) support for photo blog images
- Support for Windows and Linux hosting with Node.js
- Simple post format that separates content and metadata
- Ability to author hidden posts and schedule a publish date
- Ability to create posts that never show up in the timeline
- Support for archive links and tagging of posts by category
- Quick search of post content, including simple search queries
- Automatic Twitter and Open Graph metadata for social media
- Automatic cross-linking of related posts
- No JavaScript requirement for client browsers
/app.jsEntry point for the application, configures the server and static content/blog.jsImplementation of the blog, archives, tags, search, and RSS/config.jsEnvironment variables used to control basic behavior/sites/shared.js(x)Blog layout code shared by the sample sites/sites/sample-text/render.js(x)Blog layout code for the sample text blog/sites/sample-text/static/...Static files and directories for the sample text blog/sites/sample-text/posts/...Post metadata and content for the sample text blog/sites/sample-photo/...Sample photo blog/sites/test/...Test site for running unit tests
- Install Node.js
- Fork and clone repository
- Create directory under
/sitesor use one of the samples - Add static content to
/sites/yoursite/static - Add post JSON and content under
/sites/yoursite/posts npm installnpm run compilenpm start- Open http://localhost:3000/ and verify
- Commit changes to repository
- Deploy repository to hosting service
SWWB_SITE_ROOTSet to specify the site to use when serving content (ex:./sites/sample-text)SWWB_REDIRECT_TO_HTTPSSet totrueto redirect HTTP traffic to HTTPS and set an HSTS headerSWWB_SHOW_FUTURE_POSTSSet totrueto show posts with a publish date in the future (good when authoring locally)SWWB_HOSTNAME_TOKENSet to change the replacement token for inserting host name in posts (RSS uses absolute URLs)SWWB_ACME_CHALLENGESet to specify the ACME challenge for Let's Encrypt (ex:abc.123,def.456)
| Project | Home Page |
|---|---|
| Express | https://expressjs.com/ |
| React | https://reactjs.org/ |
| Helmet | https://helmetjs.github.io/ |
| markdown-it | https://github.com/markdown-it/markdown-it |
| highlight.js | https://highlightjs.org/ |
| Lunr | https://lunrjs.com/ |
| rss | https://github.com/dylang/node-rss |
- Open issue, discuss proposal
- Fork and clone repository
- Change code and update tests
npm testnpm run lint- Review changes
- Send pull request