Skip to content

fix(course): point the Pinboard references at a repository that exists - #63

Merged
miaulalala merged 3 commits into
mainfrom
fix/pinboard-repo-references
Sep 2, 2026
Merged

fix(course): point the Pinboard references at a repository that exists#63
miaulalala merged 3 commits into
mainfrom
fix/pinboard-repo-references

Conversation

@miaulalala

@miaulalala miaulalala commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

The problem

Both beginner tracks dead-ended at module 2.

PHP: php/beginner/2.md told readers to fork github.com/nextcloud-dev-course/pinboard-php. That organisation was never created — it 404s, as do all three repositories the manifest referenced.

ExApp: worse, and less visibly. exapp/beginner/2.md said "fork the Pinboard ExApp scaffold repository on GitHub and clone" and never gave a URL, then had readers clone YOUR_USERNAME/pinboard-python. There wasn't even a dead link to click and discover was broken.

That got sharper today: module 1 only started working with #61's standalone env-setup module, so the course now leads people confidently to a locked door.

The fix

Both scaffolds are published, taken from course-development/course/scaffolds/, which is what the course was actually written against:

  • https://github.com/miaulalala/pinboard-php — directory structure plus stub appinfo/info.xml, appinfo/routes.php and lib/AppInfo/Application.php, with lib/Controller/, lib/Db/, lib/Service/, templates/, js/ and css/ deliberately empty. Module 2 documents this exact tree, so the scaffold matches it rather than containing the answers.
  • https://github.com/miaulalala/pinboard-python — ExApp manifest, the FastAPI skeleton at ex_app/lib/main.py, the ex_app/{img,css,js} directories nc_py_api mounts, l10n/, a Makefile and requirements.txt.

Both gained the AGPL-3.0-or-later text, which their SPDX headers and info.xml already referenced without the repository carrying it, and both READMEs had their only link fixed — it pointed at nextcloud-dev-course.com, which does not resolve.

Changed here

  • the fork instruction in php/beginner/2.md — the one that actually blocked people
  • the fork instruction in exapp/beginner/2.md, which now names a repository
  • the manifest's pinboard-php and pinboard-exapp entries
  • module 6's recovery callout. It promised "a clean copy of the finished App.vue" at tag php/beginner/m6-complete. None of the 66 declared tags exist, so it now points at the full file already listed in that module and links Self-test both beginner tracks end to end #28 for the checkpoint work, rather than implying a diff target exists.

Naming

The content calls it pinboard-python, the manifest called it pinboard-exapp. The content wins — that's the name readers see and type, and module 2's own structure diagram is headed # Structure of: ~/pinboard-python/.

On the personal account

Deliberate, and only until it can move. Members cannot create repositories in the nextcloud organisation (members_can_create_repositories: false on all four flags), so that needs an org owner — nextcloud/academy itself is the precedent. A dead end in the course is worse than a repository in the wrong place, and transferring later leaves a redirect behind, so no reader's fork breaks.

Not touched

pinboard-federation-lab in the manifest. The shared federation capstone has no content written, so nothing points a reader at it, and inventing a repository for content that doesn't exist would be backwards.

Follow-up

None of the 66 checkpoint tags exist, and the filled-in copies on disk can't become tags as they stand: two of them disagree with each other, and neither has a migration despite carrying Pin and PinMapper, so the app can't create its table. A reader diffing against that would conclude they'd added something wrong. The tags have to come from walking the app through each module and committing the verified result — which is the same job as #28.

AI-Assisted-By: Claude Opus 5 (1M context)

Module 2 of the PHP track told readers to fork
github.com/nextcloud-dev-course/pinboard-php. That organisation was never
created, so every reader who finished module 1 hit a 404 on the next one - and
module 1 only started working today, with the standalone env-setup module.

The scaffold now lives at github.com/miaulalala/pinboard-php, with the app
skeleton on main as the state readers begin from. Repointed:

- the fork instruction in php/beginner/2.md, which is the one that actually
  blocked people
- the two pinboard-php entries in the manifest
- module 6's "clean copy of App.vue" link, which pointed at tag
  php/beginner/m6-complete. That tag does not exist yet - the manifest declares
  66 tags and none have been created - so it now links the repository rather
  than a path that would 404 differently.

On a personal account deliberately, and only until it can be moved: members
cannot create repositories in the nextcloud organisation, so that needs an
owner, and a 404 in the course is worse than a repository in the wrong place.
Transferring later leaves a redirect, so no reader's fork breaks.

Deliberately not touched: the pinboard-exapp and pinboard-federation-lab
entries in the manifest. Those have no home yet and repointing them at
something that does not exist would only move the problem. Nothing in the app
reads the manifest's repo field - it is inert metadata - so no reader follows
those; the exapp track's own module 2 has a separate problem, in that it says
to fork the scaffold without ever giving a URL.

AI-Assisted-By: Claude Opus 5 (1M context)
Signed-off-by: Anna Larch <[email protected]>
Module 2 said "fork the Pinboard ExApp scaffold repository on GitHub and clone"
without ever naming it, then had readers clone YOUR_USERNAME/pinboard-python.
So the ExApp track dead-ended at its second module, and less visibly than the
PHP track did: there was no link to click and discover was broken, just an
instruction with nothing to act on.

The scaffold now lives at github.com/miaulalala/pinboard-python, with the ExApp
manifest, the FastAPI skeleton, the asset directories nc_py_api mounts, a
Makefile and requirements.txt - the tree module 2 documents.

Also settled a naming inconsistency: the content calls it pinboard-python, the
manifest called it pinboard-exapp. The content wins, since that is the name
readers see and type, and module 2's own structure diagram is headed
"# Structure of: ~/pinboard-python/".

pinboard-federation-lab is still unhomed and deliberately left alone. The
shared federation capstone has no content written, so nothing points a reader
at it, and inventing a repository for content that does not exist would be
backwards.

AI-Assisted-By: Claude Opus 5 (1M context)
Signed-off-by: Anna Larch <[email protected]>
@miaulalala
miaulalala requested a lite review from Copilot September 2, 2026 20:21
@miaulalala miaulalala self-assigned this Sep 2, 2026
@miaulalala miaulalala added 3. to review Waiting for reviews bug Something isn't working labels Sep 2, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The module 6 “complete file reference” link points to the repo root instead of the App.vue file, undermining the stated recovery workflow.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR updates the Academy course content and manifest metadata so Pinboard scaffold/recovery links point to GitHub repositories that actually exist, unblocking learners who previously hit 404s during the PHP (and now also ExApp) beginner tracks.

Changes:

  • Repoints the PHP beginner module 2 scaffold “fork” instruction to miaulalala/pinboard-php.
  • Updates content/course-manifest.json track and federation download repo fields to miaulalala/pinboard-php / miaulalala/pinboard-python.
  • Updates recovery/scaffold references in module content (PHP module 6 and ExApp module 2).
File summaries
File Description
content/php/beginner/6.md Updates the “complete file reference” GitHub link for App.vue.
content/php/beginner/2.md Updates the scaffold fork link to the new Pinboard PHP repository.
content/exapp/beginner/2.md Adds an explicit scaffold repository URL for the ExApp track.
content/course-manifest.json Repoints Pinboard-related repo metadata to repositories that exist.
Review details
  • Files reviewed: 4/4 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread content/course-manifest.json
Comment thread content/php/beginner/6.md Outdated
Copilot's review on #63. Its diagnosis was right and its suggested fix would
have 404'd, which is worth recording.

The callout offered "a clean copy of the finished App.vue to recover from". It
originally linked tag php/beginner/m6-complete, which does not exist; this PR
had repointed it at the repository root, which Copilot correctly called out as
making readers hunt for the file. Its proposal was to link src/App.vue on the
starting branch - but main is the bare scaffold and has no src/ directory at
all, so that link would 404 too.

There is no clean copy anywhere yet, because none of the 66 declared checkpoint
tags have been created. So the callout now points at the full file already
listed in this same module, which is genuinely there, and links academy#28 for
the checkpoint work rather than implying a diff target exists.

AI-Assisted-By: Claude Opus 5 (1M context)
Signed-off-by: Anna Larch <[email protected]>
@miaulalala
miaulalala merged commit 7b1e44f into main Sep 2, 2026
2 checks passed
@miaulalala
miaulalala deleted the fix/pinboard-repo-references branch September 2, 2026 20:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants