This is my personal website built with Pelican, a static site generator written in Python. The site is hosted on GitHub Pages at pdglenn.com.
- Clean, responsive design using the Clean Blog theme
- Blog articles and pages
- Custom domain (pdglenn.com)
- Automated deployment with GitHub Actions
- SEO optimization with sitemap
- Related posts and article series support
-
Clone the repository:
git clone https://github.com/pauldglenn/pauldglenn.github.io.git cd pauldglenn.github.io -
Set up the Python environment using
uv:uv venv source .venv/bin/activate -
Install dependencies:
uv pip install -r requirements.txt
-
Build the site:
PYTHONPATH=$PYTHONPATH:. pelican content -s publishconf.py -
Preview locally:
PYTHONPATH=$PYTHONPATH:. pelican --listen
content/: Source content (articles, pages, images)output/: Generated site (not tracked in git)pelicanconf.py: Development settingspublishconf.py: Production settingsrequirements.txt: Python dependencies.github/workflows/: GitHub Actions configuration
- Python 3.10+
- Pelican 4.8.0
- Markdown 3.4.1
- Typogrify 2.0.7
- Various Pelican plugins (sitemap, neighbors, related_posts, series)
The site is automatically deployed to GitHub Pages using GitHub Actions when changes are pushed to the main branch. The workflow:
- Checks out the repository
- Sets up Python
- Installs dependencies
- Builds the site
- Deploys to the
gh-pagesbranch
The site uses a custom domain (pdglenn.com) configured through:
- DNS A records pointing to GitHub Pages
- CNAME file in the
gh-pagesbranch - GitHub Pages custom domain settings
To add new content:
- Create articles in
content/articles/ - Create pages in
content/pages/ - Add images to
content/images/
To modify the theme or configuration:
- Update
pelicanconf.pyfor development settings - Update
publishconf.pyfor production settings - Customize theme files in
themes/pelican-clean-blog/
This project is licensed under the MIT License - see the LICENSE file for details.