TASKS.md
3,863 bytes
| 1 | # TASKS.md — profileShare |
|---|---|
| 2 | |
| 3 | 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] |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | - [ ] **1. Project setup and test harness** |
| 8 | Initialize the project repository, dependency management, and a test runner so every later task can be verified. |
| 9 | Depends: none |
| 10 | Verify: `npm install && npm test` |
| 11 | |
| 12 | - [ ] **2. GitHub OAuth login for the owner** |
| 13 | 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] |
| 14 | Depends: 1 |
| 15 | Verify: `npm test -- auth` |
| 16 | |
| 17 | - [ ] **3. List the owner's repositories for selection** |
| 18 | After login, show all of the owner's repositories and let them click to select which ones to share. [S9][S19] |
| 19 | Depends: 2 |
| 20 | Verify: `npm test -- repo-selection` |
| 21 | |
| 22 | - [ ] **4. Snapshot selected repositories at link-creation time** |
| 23 | 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] |
| 24 | Depends: 3 |
| 25 | Verify: `npm test -- snapshot` |
| 26 | |
| 27 | - [ ] **5. Generate a shareable link with an expiry period** |
| 28 | Generate a simple URL for the snapshot. Allow the owner to set a time period (e.g. seven days), which is customizable. [S9][S13] |
| 29 | Depends: 4 |
| 30 | Verify: `npm test -- link-generation` |
| 31 | |
| 32 | - [ ] **6. Expiry enforcement and expired-link message** |
| 33 | 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] |
| 34 | Depends: 5 |
| 35 | Verify: `npm test -- expiry` |
| 36 | |
| 37 | - [ ] **7. Public profile page (no viewer account required)** |
| 38 | 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] |
| 39 | Depends: 6 |
| 40 | Verify: `npm test -- profile-page` |
| 41 | |
| 42 | - [ ] **8. Navigate from profile into a repository** |
| 43 | From the main profile page, let the viewer click a repository to open it. [S38][S39] |
| 44 | Depends: 7 |
| 45 | Verify: `npm test -- repo-navigation` |
| 46 | |
| 47 | - [ ] **9. Repository view: files and commit history** |
| 48 | Inside a repository, show the files and the commit history. [S11][S40][S42] |
| 49 | Depends: 8 |
| 50 | Verify: `npm test -- repo-view` |
| 51 | |
| 52 | - [ ] **10. Browse files and folders, and read code** |
| 53 | Let the viewer click a file name to open and read its code on screen, and open nested folders to find files. [S44][S45] |
| 54 | Depends: 9 |
| 55 | Verify: `npm test -- file-browser` |
| 56 | |
| 57 | - [ ] **11. Commit history with clickable diffs** |
| 58 | Show a list of commits with what changed and when; make commits clickable to view which lines changed, if doable. [S42][S43] |
| 59 | Depends: 9 |
| 60 | Verify: `npm test -- commits` |
| 61 | |
| 62 | - [ ] **12. Navigation controls (back to profile, step up folders)** |
| 63 | 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] |
| 64 | Depends: 10 |
| 65 | Verify: `npm test -- navigation` |
| 66 | |
| 67 | - [ ] **13. Desktop-focused layout** |
| 68 | Ensure the shared page is intended for viewing on a computer. [S28][S29] |
| 69 | Depends: 7 |
| 70 | Verify: `npm test -- layout` |
| 71 | |
| 72 | - [ ] **14. Read-only constraints (no comments, no downloading, no editing)** |
| 73 | Ensure viewers can only get an overview of the work: no comments, no code downloading, and no editing. [S30][S31][S32][S33] |
| 74 | Depends: 7 |
| 75 | Verify: `npm test -- read-only` |
| 76 | |
| 77 | - [ ] **15. End-to-end owner verification flow** |
| 78 | 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] |
| 79 | Depends: 8, 9, 10, 11, 12 |
| 80 | Verify: `npm test -- e2e` |