Pelican theme reviews
Posted on February 23, 2025 in dev tagged with: • pelican • static-site-generators •
I recently relauched my blog using pelican, and as part of the process, I explored several themes to find the perfect fit. Please note that this review is based on my personal preferences and opinions.
TLDR; You can jump to Winner
1 - Quick preview of themes
I started by browsing PelicanThemes.com to shortlist themes that caught my interest. This initial step helped me narrow down the options before diving into testing.
2 - Grab pelican-themes
repo
To test these themes, I cloned the official Pelican Themes repository:
cd my-pelican-site-dir
git clone -recursive git@github.com:getpelican/pelican-themes.git
This action downloaded all available themes into a dedicated pelican-themes
directory within my site's structure.
The directory structure looked like this
├── content
├── pelicanconf.py
├── pelican-themes
│ ├── aboutwilson
│ ├── alchemy
...
3. Setting Up the Theme
Next, I updated my pelicanconf.py
file to set the desired theme:
THEME = 'pelican-themes/fresh'
This change allows Pelican to use the selected theme without further modifications.
4. Running the Local Server
To test each theme effectively, I used the following command to start the local server:
pelican content -d -l -r -b 0.0.0.0
-d
: Removes the output directory for a clean build.-l
and-r
: Enables live reloading so changes are visible without regenerating.-b 0.0.0.0
: Binds the server to all interfaces, allowing testing on both desktop and mobile devices.
When I switched themes, I will run the above command to a clean output
5 - Testing
I tested each theme on both my desktop and mobile device:
- On Desktop:
- Opened the site in a browser.
- On Mobile:
- Noted my computer's IP address (e.g.,
192.168.86.100
). - Accessed the site via
http://[IP]:8000
.
- Noted my computer's IP address (e.g.,
6. Testing Criteria
Basic Requirements
- The theme should work right out of the box by simply setting the
THEME
variable. - No errors during site generation.
- Compatibility with variables defined in
pelicanconf.py
. - Mobile-friendliness.
Personal Preferences
- Custom menu items (like "About" and "Portfolio") should be visible on the topbar or sidebar.
- Social buttons should appear on the topbar or sidebar, not at the bottom.
Additional Features:
- Supports Google Analytics integration.
7 - Results
Theme / Feature | LINKS | SOCIAL | MOBILE | github | preview |
---|---|---|---|---|---|
alchemy | ✅ | ❌ | ✅ good | github | |
BluePenguin | ✅ | ❌ | ❌ average | github | preview |
Bootstrap | ✅ | ✅ | ❌ average | github | preview |
dev-random | github | preview | |||
elegant | ✅ | ❌ | ✅ good | github | preview |
flex | ✅ | ✅ | ✅ good | github | preview |
fresh | ✅ | ✅ | ✅ good | github | |
gum | ✅ | ✅ | ok | github | preview |
hyde | ✅ | ✅ | ✅ good | github | preview |
pelican-bootsrap3 | github | preview | |||
simplify-theme | ❌ | ✅ | ✅ | github | preview |
Notes
Alchemy
- Couldn't display SOCIAL links
Blue Penguin
- didn't look good on mobile
- didn't respect
summary
of a post
dev-random
- Error running
elegant
- Couldn't easily customize LINKS or SOCIAL
gum
- Almost made it. But menu and social are displayed at the bottom on mobile, not what I wanted
pelican-bootstrap3
- error when running
simplify-theme
- Looked good, but couldn't figure out how customize LINKS and SOCIAL.
- And expecting SOCIAL as a dictionary instead of more normal TUPLE
8. Shortlisted Themes
Based on my testing, the following themes made it to my shortlist:
- Hyde
- Fresh
- Flex
9. The Winner
After thorough testing, I chose Flex (GitHub, Preview) as the winner because:
- Its clean and modern design appealed to me.
- It easily displays profile pictures.
- SOCIAL and LINKS are prominently featured on both desktop and mobile devices.
- The theme integrates well with custom menu items and social buttons.
- Supports GOOGLE_ANALYTICS
10 - Wishlist
None of the plugins I reviewed had a ready-made SOCIAL icon for bluesky 🤔. Hopefully someone (or me) would implement it
Discuss
If you have any questions or need further details, feel free to reach out!