profileShare

rasmusjy / profileshare

Read-only snapshot

No repository description.

main default branch 54 files Expires Sep 13, 2026, 9:06 AM
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`