Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Bug
about: Defect in existing functionality
title: ""
labels: bug
assignees: ""
---

**Severity:** critical | major | minor | trivial

## Expected
[What should happen]

## Actual
[What happens instead]

## Reproduce
1. [Step 1]
2. [Step 2]
3. [Result]

## Environment
[dev/preview/production, browser, branch]
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/epic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Epic
about: Large initiative spanning multiple tasks or sessions
title: ""
labels: epic
assignees: ""
---

## Goal
[One sentence — what does success look like?]

## Tasks
- [ ] #XX — task description
- [ ] #YY — task description

## Out of scope
[What this epic does NOT cover]

## Definition of done
[Measurable criteria for closing]
13 changes: 0 additions & 13 deletions .github/ISSUE_TEMPLATE/git-tutorial-issue-template.md

This file was deleted.

26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/incident.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Incident
about: Production outage or degradation affecting users now
title: ""
labels: incident
assignees: ""
---

**Severity:** critical | major
**Status:** investigating | identified | mitigating | resolved

## Impact
[Who is affected, how severely]

## Timeline
- [HH:MM UTC] — [event]
- [HH:MM UTC] — [event]

## Root cause
[What caused it — fill in after identified]

## Resolution
[What fixed it — fill in after resolved]

## Prevention
[What changes prevent recurrence — fill in after postmortem]
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/spike.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Spike
about: Research or exploration — output is a decision or ADR
title: ""
labels: question
assignees: ""
---

As a [role], I want to understand [topic] so that [decision can be made].

## What
[Question or area to explore]

## Why
[What decision is blocked without this research?]

## Acceptance criteria
- [ ] ADR documenting the decision
- [ ] Recommendation with alternatives considered
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Task
about: Atomic implementable unit of work
title: ""
labels: enhancement
assignees: ""
---

As a [user type], I want [capability] so that [benefit].

## What
[Clear description of the change]

## Why
[Motivation — which epic does this serve?]

## Acceptance criteria
- [ ] [Observable behavior 1]
- [ ] [Observable behavior 2]
38 changes: 38 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Build Astro site (PR validation)

on:
pull_request:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22.12.0"
cache: npm
cache-dependency-path: astro-site/package-lock.json

- name: Install dependencies
working-directory: astro-site
run: npm ci

- name: Create assets symlink
working-directory: astro-site/src/content
run: ln -s ../../../assets assets

- name: Build site
working-directory: astro-site
run: npm run build

- name: Check links
uses: lycheeverse/lychee-action@v2
with:
args: --base astro-site/dist astro-site/dist
fail: true
10 changes: 9 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
node-version: "22.12.0"
cache: npm
cache-dependency-path: astro-site/package-lock.json

- name: Install dependencies
working-directory: astro-site
Expand All @@ -38,6 +40,12 @@ jobs:
working-directory: astro-site
run: npm run build

- name: Check links
uses: lycheeverse/lychee-action@v2
with:
args: --base astro-site/dist astro-site/dist
fail: true

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,7 @@ Thumbs.db
*.mov
*.wmv

# draw.io and image editor backup files
*.bkp

astro-site/src/content/assets
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#D3D1C7;strokeWid

```bash
# Astro site (from astro-site/)
npm run dev # develop — hot reload at localhost:4321
npm run dev # develop — hot reload at localhost:4321/tutorial-git/
npm run build # production build to dist/
npm run preview # preview production build locally
```
45 changes: 24 additions & 21 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
MIT License

Copyright (c) 2021 Branimir Georgiev

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# License

This work is licensed under the
**Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International**
license (CC BY-NC-SA 4.0).

Copyright (c) 2021-2026 Branimir Georgiev

## You are free to

- **Share** — copy and redistribute the material in any medium or format
- **Adapt** — remix, transform, and build upon the material

## Under the following terms

- **Attribution** — You must give appropriate credit, provide a link to the
license, and indicate if changes were made
- **NonCommercial** — You may not use the material for commercial purposes
- **ShareAlike** — If you remix, transform, or build upon the material, you
must distribute your contributions under the same license

## Full license text

https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
8 changes: 2 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
<p align="center">
<img src="assets/banners/banner-bhai-branko.png" alt="Code with Branko — Git Tutorial" />
</p>

# Git Tutorial

A hands-on Git tutorial for developers who want to go from first commit
Expand All @@ -21,7 +17,7 @@ $ ln -s ../../../assets src/content/assets # image symlink (Linux/macOS)
$ npm run dev
```

Open [localhost:4321](http://localhost:4321) in your browser.
Open [localhost:4321/tutorial-git/](http://localhost:4321/tutorial-git/) in your browser.

On Windows, the symlink is created as a directory copy automatically.

Expand Down Expand Up @@ -104,4 +100,4 @@ After editing a chapter in `chapters/`, copy it to

## License

[MIT](LICENSE.md)
[CC BY-NC-SA 4.0](LICENSE.md)
Binary file added assets/archive/git-branch-navigation.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file removed assets/images/git-branch-navigation.png
Binary file not shown.
43 changes: 0 additions & 43 deletions astro-site/README.md

This file was deleted.

6 changes: 3 additions & 3 deletions astro-site/src/components/TableOfContents.astro
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ for (const h of headings) {

<script>
document.querySelectorAll('.toc-section-link').forEach((link) => {
link.addEventListener('click', () => {
link.addEventListener('click', (e) => {
const details = link.closest('details');
if (details) {
details.open = !details.open;
if (details && !details.open) {
details.open = true;
}
});
});
Expand Down
2 changes: 1 addition & 1 deletion astro-site/src/components/TutorialLinks.astro
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import site from "../data/site.json";
<ul>
{site.tutorials.map((t) => (
<li>
<a href={t.href} target="_blank">{t.label}</a>
<a href={t.href} target="_blank" rel="noopener noreferrer">{t.label}</a>
</li>
))}
</ul>
Expand Down
2 changes: 1 addition & 1 deletion docs/ONBOARDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ cd astro-site
npm run dev
```

Open `http://localhost:4321` — the Astro dev server should start. All 9
Open `http://localhost:4321/tutorial-git/` — the Astro dev server should start. All 9
chapters are wired as single-page sections. The site is deployed to
`braboj.github.io/tutorial-git/` via GitHub Actions.

Expand Down
2 changes: 1 addition & 1 deletion docs/PLAYBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ Use Palette C (convention-based) from `CLAUDE.md`:

```bash
cd astro-site
npm run dev # http://localhost:4321
npm run dev # http://localhost:4321/tutorial-git/
```

### 3.2 Syncing chapters to the Astro site
Expand Down
33 changes: 33 additions & 0 deletions docs/dev-journal.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,36 @@ Architecture overview and chronological session log for tutorial-git.
**Open issues:**
- #100 — Add search functionality
- #101 — Evaluate hamburger vs horizontal scroll for mobile nav

### 2026-04-20 — Structural audit and CI improvements

**Tool:** Claude Code (Opus 4.6)

**Key changes:**
- License changed from MIT to CC BY-NC-SA 4.0
- Removed old banner from README
- Fixed localhost URL in README, ONBOARDING, PLAYBOOK, CLAUDE.md (`localhost:4321/tutorial-git/`)
- Renamed semver tags: `V0.0.0.1` → `v0.0.1`, `V1.0.0` → `v1.0.0`, etc.
- Added `.bkp` to .gitignore (draw.io temp files)
- Moved 10 orphaned images to `assets/archive/`
- Deleted `git-object-model-prototype.drawio` (unused prototype)
- Deleted default Astro README (`astro-site/README.md`)
- Added `rel="noopener noreferrer"` to external links in TutorialLinks.astro
- Fixed ToC JS toggle — now only opens details on click, no longer fights native behavior
- Split CI into `build.yml` (PR validation) and `deploy.yml` (push to main)
- Pinned Node.js to 22.12.0 in both workflows
- Added npm cache and lychee link checker to both workflows
- Replaced generic issue template with 5 typed templates (epic, task, bug, incident, spike)

**Decisions:**
- [ADR-006](decisions/006-mobile-navigation.md) — Hamburger menu for mobile navigation

**Issues closed:**
- #100 — Search functionality (won't-fix — Ctrl+F sufficient for 9 chapters)
- #101 — Mobile nav evaluation (hamburger menu, matching tutorial-azure)

**Issues created:**
- #105 — Eliminate dual-source content model with remark plugin

**Open issues:**
- #105 — Eliminate dual-source content model
2 changes: 1 addition & 1 deletion docs/solid-ai-templates
Loading