Skip to content

Commit f887a1c

Browse files
committed
feat: initial release — Jekyll site with Just the Docs, Catppuccin Mocha theme, strict CSP
0 parents  commit f887a1c

22 files changed

Lines changed: 1059 additions & 0 deletions
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
name: Content issue
3+
about: Report incorrect, outdated, or missing content on the site
4+
labels: content
5+
---
6+
7+
**Page URL**
8+
<!-- e.g. https://disttopic.github.io/projects/assets-and-map-editor -->
9+
10+
**What is the issue?**
11+
<!-- Describe the problem clearly -->
12+
13+
**Suggested fix**
14+
<!-- If you know what the correct content should be -->

‎.github/workflows/ci.yml‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
build-check:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Ruby
18+
uses: ruby/setup-ruby@v1
19+
with:
20+
ruby-version: "3.3"
21+
bundler-cache: true
22+
23+
- name: Build Jekyll
24+
run: bundle exec jekyll build --baseurl ""
25+
env:
26+
JEKYLL_ENV: production
27+
28+
- name: Check for broken internal links
29+
run: |
30+
echo "Checking for broken internal links..."
31+
ERRORS=0
32+
for link in $(grep -roh 'href="/[^"]*"' _site/ --include="*.html" | sed 's/href="//;s/"$//' | sort -u); do
33+
CLEAN_LINK=$(echo "$link" | sed 's/#.*//' | sed 's|/$||')
34+
if [ -z "$CLEAN_LINK" ]; then continue; fi
35+
if [ ! -f "_site${CLEAN_LINK}.html" ] && [ ! -f "_site${CLEAN_LINK}/index.html" ] && [ ! -f "_site${CLEAN_LINK}" ]; then
36+
echo "::warning::Broken link: $link"
37+
ERRORS=$((ERRORS + 1))
38+
fi
39+
done
40+
if [ "$ERRORS" -gt 0 ]; then
41+
echo "::warning::Found $ERRORS potentially broken internal links"
42+
else
43+
echo "All internal links valid."
44+
fi
45+
46+
- name: Validate HTML structure
47+
run: |
48+
echo "Checking generated HTML files..."
49+
HTML_COUNT=$(find _site -name "*.html" | wc -l)
50+
echo "Generated $HTML_COUNT HTML files"
51+
if [ "$HTML_COUNT" -eq 0 ]; then
52+
echo "::error::No HTML files generated — build may have failed silently"
53+
exit 1
54+
fi

‎.github/workflows/deploy.yml‎

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: "pages"
15+
cancel-in-progress: false
16+
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Setup Pages
25+
uses: actions/configure-pages@v5
26+
27+
- name: Setup Ruby
28+
uses: ruby/setup-ruby@v1
29+
with:
30+
ruby-version: "3.3"
31+
bundler-cache: true
32+
33+
- name: Build Jekyll
34+
run: bundle exec jekyll build --baseurl ""
35+
env:
36+
JEKYLL_ENV: production
37+
38+
- name: Verify no inline scripts in output
39+
run: |
40+
echo "Checking for inline script injection in generated HTML..."
41+
FOUND=$(grep -rn '<script[^>]*>[^<]' _site/ --include="*.html" \
42+
| grep -v 'src=' \
43+
| grep -v 'jtd.onReady' \
44+
| grep -v 'initSearch' \
45+
| grep -v '"baseurl"' \
46+
|| true)
47+
if [ -n "$FOUND" ]; then
48+
echo "::warning::Unexpected inline scripts detected in generated HTML:"
49+
echo "$FOUND"
50+
fi
51+
52+
- name: Upload artifact
53+
uses: actions/upload-pages-artifact@v3
54+
55+
deploy:
56+
environment:
57+
name: github-pages
58+
url: ${{ steps.deployment.outputs.page_url }}
59+
runs-on: ubuntu-latest
60+
needs: build
61+
steps:
62+
- name: Deploy to GitHub Pages
63+
id: deployment
64+
uses: actions/deploy-pages@v4

‎.gitignore‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
_site/
2+
.sass-cache/
3+
.jekyll-cache/
4+
.jekyll-metadata
5+
vendor/
6+
node_modules/
7+
.bundle/
8+
.DS_Store
9+
Thumbs.db
10+
*.swp
11+
*.swo
12+
*~

‎CODE_OF_CONDUCT.md‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
- Demonstrating empathy and kindness toward other people
21+
- Being respectful of differing opinions, viewpoints, and experiences
22+
- Giving and gracefully accepting constructive feedback
23+
- Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
- Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
- The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
- Trolling, insulting or derogatory comments, and personal or political attacks
33+
- Public or private harassment
34+
- Publishing others' private information, such as a physical or electronic
35+
address, without their explicit permission
36+
- Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deems inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
56+
## Enforcement
57+
58+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
59+
reported to the community leaders responsible for enforcement via
60+
[GitHub Issues](https://github.com/DistTopic/disttopic.github.io/issues).
61+
All complaints will be reviewed and investigated promptly and fairly.
62+
63+
## Attribution
64+
65+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
66+
version 2.1, available at
67+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).

‎CONTRIBUTING.md‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Contributing to disttopic.github.io
2+
3+
Thank you for helping improve the DistTopic website!
4+
5+
## Ways to contribute
6+
7+
- **Edit an existing page** — click "Edit this page on GitHub" at the bottom of any page
8+
- **Add a new page** — create a `.md` file in the appropriate folder
9+
- **Fix a typo or broken link** — open a pull request directly
10+
- **Report an issue** — open an issue describing the problem
11+
12+
## No local setup needed
13+
14+
All content is Markdown. You can create and edit pages directly from GitHub's web UI without cloning the repository.
15+
16+
For detailed instructions on Markdown syntax, front matter, and page structure, see the [Adding & Editing Pages guide](https://disttopic.github.io/guides/adding-pages).
17+
18+
## Pull request process
19+
20+
1. Fork the repository (or create a branch if you have write access)
21+
2. Create your changes
22+
3. Open a pull request against `main`
23+
4. A maintainer will review and merge
24+
25+
## Content guidelines
26+
27+
- Write in clear, concise English
28+
- Use the present tense ("The editor supports..." not "The editor will support...")
29+
- Keep security notes accurate — if in doubt, open an issue before editing
30+
- Do not add inline `<script>` tags or external resource links (they will be blocked by CSP)
31+
- Keep images in `assets/images/` as SVG or well-compressed rasters; do not hotlink external images
32+
33+
## Code of conduct
34+
35+
This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you agree to uphold it.
36+
37+
## Security issues
38+
39+
Do **not** open public issues for security vulnerabilities. See [SECURITY.md](SECURITY.md).

‎Gemfile‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
source "https://rubygems.org"
2+
3+
gem "jekyll", "~> 4.3"
4+
gem "just-the-docs", "~> 0.10.0"
5+
6+
group :jekyll_plugins do
7+
gem "jekyll-seo-tag", "~> 2.8"
8+
end

‎LICENSE‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 DistTopic
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

‎README.md‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# DistTopic Website
2+
3+
The official website for the [DistTopic](https://github.com/DistTopic) open source organization, hosted at [disttopic.github.io](https://disttopic.github.io).
4+
5+
## About
6+
7+
This site is built with [Jekyll](https://jekyllrb.com/) and the [Just the Docs](https://just-the-docs.com/) theme. It is deployed automatically to GitHub Pages on every push to `main`.
8+
9+
## Adding or editing content
10+
11+
No local setup is required. Every page has an **"Edit this page on GitHub"** link. To add a new page, create a `.md` file with proper front matter directly from GitHub's web editor.
12+
13+
See the [Adding & Editing Pages guide](https://disttopic.github.io/guides/adding-pages) for full instructions.
14+
15+
## Local development
16+
17+
```bash
18+
# Install Ruby 3.3+ and Bundler
19+
bundle install
20+
21+
# Serve locally with live reload
22+
bundle exec jekyll serve --livereload
23+
# → http://localhost:4000
24+
```
25+
26+
## Project structure
27+
28+
```
29+
disttopic.github.io/
30+
├── _config.yml # Jekyll + Just the Docs configuration
31+
├── _includes/
32+
│ └── head-custom.html # Security headers (CSP, X-Frame-Options, etc.)
33+
├── _sass/
34+
│ └── color_schemes/
35+
│ └── disttopic-dark.scss # Catppuccin Mocha dark theme
36+
├── assets/
37+
│ └── images/ # SVG logo and favicon
38+
├── .github/
39+
│ ├── workflows/
40+
│ │ ├── deploy.yml # Build + deploy to GitHub Pages (on push to main)
41+
│ │ └── ci.yml # Build validation (on PRs)
42+
│ └── ISSUE_TEMPLATE/
43+
├── index.md # Homepage
44+
├── about.md # About page
45+
├── projects/ # Project pages
46+
└── guides/ # Contributor guides
47+
```
48+
49+
## Security
50+
51+
This site uses a strict Content Security Policy. See [Security Practices](https://disttopic.github.io/guides/security) for details.
52+
53+
To report a vulnerability, use [GitHub Security Advisories](https://github.com/DistTopic/disttopic.github.io/security/advisories/new) — **do not open a public issue**.
54+
55+
## Contributing
56+
57+
See [CONTRIBUTING.md](CONTRIBUTING.md).
58+
59+
## License
60+
61+
Site content is licensed under [MIT](LICENSE). See individual project repositories for their respective licenses.

0 commit comments

Comments
 (0)