TASKS.md — profileShare
A tool to share selected private GitHub repositories and profile info via a time-limited, read-only public link, without adding viewers as collaborators. [S1][S13]
1. Project setup and test harness Initialize the project repository, dependency management, and a test runner so every later task can be verified. Depends: none Verify:
npm install && npm test2. GitHub OAuth login for the owner Let the owner log in with their GitHub account and approve access. Access should be limited to only the repositories the owner points to, not all repositories. [S16][S17][S18][S19] Depends: 1 Verify:
npm test -- auth3. List the owner's repositories for selection After login, show all of the owner's repositories and let them click to select which ones to share. [S9][S19] Depends: 2 Verify:
npm test -- repo-selection4. Snapshot selected repositories at link-creation time When a link is created, capture a frozen snapshot of the selected repositories (code, commit history, commit dates) rather than tracking live changes. [S14][S15] Depends: 3 Verify:
npm test -- snapshot5. Generate a shareable link with an expiry period Generate a simple URL for the snapshot. Allow the owner to set a time period (e.g. seven days), which is customizable. [S9][S13] Depends: 4 Verify:
npm test -- link-generation6. Expiry enforcement and expired-link message When a link is opened after its time period ends, show a simple message that the URL has expired. Any holder of a valid link can open it (no per-viewer restriction). [S20][S21][S22][S23] Depends: 5 Verify:
npm test -- expiry7. Public profile page (no viewer account required) Render the shared profile as the main landing page for a link. Viewers do not need a GitHub account. The page shows profile info and the list of selected repositories, and includes profile activity. [S4][S5][S12][S13][S3][S39] Depends: 6 Verify:
npm test -- profile-page8. Navigate from profile into a repository From the main profile page, let the viewer click a repository to open it. [S38][S39] Depends: 7 Verify:
npm test -- repo-navigation9. Repository view: files and commit history Inside a repository, show the files and the commit history. [S11][S40][S42] Depends: 8 Verify:
npm test -- repo-view10. Browse files and folders, and read code Let the viewer click a file name to open and read its code on screen, and open nested folders to find files. [S44][S45] Depends: 9 Verify:
npm test -- file-browser11. Commit history with clickable diffs Show a list of commits with what changed and when; make commits clickable to view which lines changed, if doable. [S42][S43] Depends: 9 Verify:
npm test -- commits12. Navigation controls (back to profile, step up folders) Provide a button at the top to return to the profile page, and a way to step back up folder levels or jump to the top of a project without losing place. [S46][S47][S48] Depends: 10 Verify:
npm test -- navigation13. Desktop-focused layout Ensure the shared page is intended for viewing on a computer. [S28][S29] Depends: 7 Verify:
npm test -- layout14. Read-only constraints (no comments, no downloading, no editing) Ensure viewers can only get an overview of the work: no comments, no code downloading, and no editing. [S30][S31][S32][S33] Depends: 7 Verify:
npm test -- read-only15. End-to-end owner verification flow Confirm that opening a generated link shows all the projects the owner selected and all the commits, so the owner can verify a link before sharing it. [S34][S35][S36][S37] Depends: 8, 9, 10, 11, 12 Verify:
npm test -- e2e