Skip to content

Commit d4cdd3b

Browse files
committed
Deploy e4bcb54
0 parents  commit d4cdd3b

73 files changed

Lines changed: 17342 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.nojekyll

Whitespace-only changes.

CLAUDE.md

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
# PyBuilder Documentation Site — Project Instructions
2+
3+
## Overview
4+
5+
This is the official documentation website for [PyBuilder](https://pybuilder.io),
6+
hosted on GitHub Pages. It is a Jekyll static site. The source lives on the `source`
7+
branch; the `master` branch contains only the built output deployed by CI.
8+
9+
Repository: `pybuilder/pybuilder.github.io` (origin, not a fork).
10+
11+
## Branch Model
12+
13+
- **`source`** — all development happens here. This is the default working branch.
14+
- **`master`** — auto-deployed built site. Never edit or push to `master` directly.
15+
- **`plugin_doc_gen`** — WIP branch for plugin documentation rework.
16+
- **`bootstrap_4`** — stale Bootstrap 4 migration branch.
17+
18+
PRs target `source`. The CI deploys to `master` on push to `source`.
19+
20+
## Site Structure
21+
22+
```
23+
_config.yml — primary Jekyll configuration
24+
_config-prod.yml — production URL overlay (https://pybuilder.io)
25+
Gemfile — Ruby dependencies (Jekyll 4.x, plugins, html-proofer)
26+
build.sh — CI build script (build, validate, rebuild with prod config)
27+
CNAME — custom domain (pybuilder.io)
28+
29+
_layouts/
30+
default.html — base layout (header, container, footer)
31+
documentation.html — two-column layout with auto-generated ToC sidebar
32+
post.html — blog post layout with author metadata
33+
34+
_includes/layout/
35+
metaAndStyles.html — Google Analytics, meta tags, CSS imports
36+
header.html — navbar with navigation dropdowns
37+
footer.html — links, scripts, JS imports
38+
39+
_plugins/
40+
pybuilder.rb — custom Liquid filters (abs/rel canonical URL helpers)
41+
42+
_data/
43+
authors.yml — author profiles referenced by blog posts
44+
45+
documentation/ — all documentation pages (layout: documentation)
46+
index.md — documentation hub
47+
installation.md — installation guide
48+
tutorial.md — comprehensive tutorial (~590 lines, largest doc)
49+
manual.md — usage manual
50+
plugins.md — built-in plugin reference (~1100 lines)
51+
writing-plugins.md — plugin development guide
52+
publishing-plugins.md — how to publish plugins
53+
external-plugin-list.md — third-party plugins
54+
examples.md — example projects
55+
ide.md — IDE integration
56+
developing-pybuilder.md — contributing to PyBuilder core
57+
58+
articles/ — Jekyll collections directory
59+
_posts/ — blog posts (layout: post, author: <key from authors.yml>)
60+
_release-notes/ — release notes collection (v0.10.x through v0.13.x)
61+
_migration-guides/ — migration guides collection
62+
63+
css/ — custom stylesheets (styles.css, highlightjs.css, tabcontent.css)
64+
js/ — custom JS (highlight.pack.js, tabcontent.js, toc.js)
65+
img/ — logos, mascot, screenshots
66+
```
67+
68+
## Building Locally
69+
70+
```bash
71+
# Install Ruby dependencies
72+
bundle install
73+
74+
# Start development server with live reload
75+
bundle exec jekyll serve --watch
76+
# Browse to http://localhost:4000
77+
78+
# Full CI-equivalent build (build + htmlproofer + prod rebuild)
79+
# Output goes to _site/
80+
./build.sh
81+
```
82+
83+
## CI / Deployment
84+
85+
GitHub Actions workflow at `.github/workflows/pybuilder.github.io.yml`:
86+
1. Triggers on PRs to `source` and pushes to `source`
87+
2. Sets up Ruby 3.1, installs bundle dependencies
88+
3. Runs `build.sh`:
89+
- `jekyll build` (dev config)
90+
- `htmlproofer` validates links, scripts, images, OpenGraph, favicon
91+
- `jekyll build -c _config.yml,_config-prod.yml` (prod config with real URL)
92+
4. On push (not PR): deploys `_site/` to `master` branch
93+
94+
## Content Conventions
95+
96+
### Documentation Pages
97+
98+
- Layout: `documentation` (provides auto-ToC sidebar)
99+
- Front matter: `layout: documentation`, `title: <Page Title>`
100+
- Use `{% link documentation/filename.md %}` for cross-references
101+
- Markdown with kramdown extensions (fenced code blocks, etc.)
102+
103+
### Blog Posts
104+
105+
- Location: `articles/_posts/YYYY-MM-DD-slug.md`
106+
- Layout: `post`
107+
- Front matter: `layout: post`, `title`, `author` (key from `_data/authors.yml`)
108+
- Optional: `update_date` for showing last-updated
109+
110+
### Release Notes
111+
112+
- Location: `articles/_release-notes/vX.Y.x.md`
113+
- One file per minor version series
114+
115+
### Migration Guides
116+
117+
- Location: `articles/_migration-guides/vX.Y.x-vA.B.C.md`
118+
119+
## Technology Stack
120+
121+
- Jekyll 4.x with kramdown (Markdown) and rouge (syntax highlighting)
122+
- Bootstrap 3.4.1 (CSS framework)
123+
- jQuery 3.4.1
124+
- bootstrap-toc 0.4.1 (auto table of contents)
125+
- highlight.js (code highlighting)
126+
- lite-youtube 1.5.0 (lazy YouTube embeds)
127+
- Plugins: jekyll-sitemap, jekyll-paginate, jekyll-last-modified-at,
128+
jekyll-redirect-from, jekyll-seo-tag, jekyll-feed, jemoji, and others
129+
130+
## Git Workflow
131+
132+
This is an origin repo (not a fork). All changes go through PRs to `source`.
133+
Never push directly to `source` or `master`.
134+
135+
## Content Editing
136+
137+
- Keep documentation accurate with respect to the current PyBuilder release.
138+
Cross-reference the main PyBuilder repo at `../pybuilder/` for feature details.
139+
- Preserve existing front matter fields exactly. Do not add or remove fields
140+
unless intentionally changing page behavior.
141+
- Use the `{% link %}` Liquid tag for internal cross-references, never raw paths.
142+
- Do not reformat or rewrap existing paragraphs that you are not changing.
143+
Minimize diff noise.
144+
145+
## Layouts and Includes
146+
147+
- Bootstrap 3, not 4 or 5. The `bootstrap_4` migration was never completed.
148+
Do not upgrade Bootstrap unless explicitly asked.
149+
- Google Analytics tag is in `_includes/layout/metaAndStyles.html`. Do not
150+
modify or remove it.
151+
- Navigation structure is in `_includes/layout/header.html`. When adding new
152+
documentation pages, add a corresponding nav entry there and in
153+
`documentation/index.md`.
154+
155+
## Adding New Documentation Pages
156+
157+
1. Create the `.md` file in `documentation/` with front matter:
158+
```yaml
159+
---
160+
layout: documentation
161+
title: Your Page Title
162+
---
163+
```
164+
2. Add a link in `documentation/index.md` under the appropriate section
165+
3. Add a navigation entry in `_includes/layout/header.html`
166+
167+
## Adding Blog Posts
168+
169+
1. Create `articles/_posts/YYYY-MM-DD-slug.md` with front matter:
170+
```yaml
171+
---
172+
layout: post
173+
title: "Post Title"
174+
author: arcivanov
175+
---
176+
```
177+
2. Author key must exist in `_data/authors.yml`
178+
179+
## Adding Release Notes
180+
181+
1. If a file for the minor version series exists, append to it
182+
2. Otherwise create `articles/_release-notes/vX.Y.x.md`
183+
3. The release notes index auto-generates from the collection
184+
185+
## Testing Changes
186+
187+
- Always run `bundle exec jekyll build` to verify the site builds without errors
188+
- For thorough validation, run `./build.sh` which also checks links and images
189+
via htmlproofer
190+
- htmlproofer may fail on transient external link issues (429, timeouts). These
191+
are usually not your fault. Check if the link is actually broken before fixing.
192+
193+
## Things to Avoid
194+
195+
- Do not edit files on the `master` branch. It is auto-generated.
196+
- Do not add `Gemfile.lock` to version control (it is gitignored).
197+
- Do not modify vendored JS libraries (`highlight.pack.js`, jQuery, Bootstrap)
198+
unless upgrading them intentionally.
199+
- Do not remove or alter the `CNAME` file.
200+
- Do not change `_config.yml` pagination or permalink settings without
201+
understanding the URL impact on existing links and SEO.

CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pybuilder.io

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# PyBuilder Documentation
2+
3+
This project contains the documentation of [PyBuilder](https://github.com/pybuilder/pybuilder).
4+
5+
Please visit [PyBuilder](https://pybuilder.io).
6+
7+
## Contributing
8+
9+
Install [jekyll](https://github.com/mojombo/jekyll)
10+
11+
```bash
12+
sudo apt-get install jekyll
13+
```
14+
15+
or
16+
17+
```bash
18+
sudo gem install jekyll
19+
```
20+
21+
[How to install jekyll](https://github.com/mojombo/jekyll/wiki/install)
22+
23+
**Start local server**
24+
```bash
25+
jekyll server --watch
26+
```
27+
28+
Browse to [localhost:4000](http://localhost:4000)
29+

0 commit comments

Comments
 (0)