Skip to content

Commit d026437

Browse files
committed
improved feed
1 parent acb1818 commit d026437

13 files changed

Lines changed: 729 additions & 136 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ workers/oauth-token-exchange/wrangler.toml
2525
coverage
2626

2727
.env*.local
28+
*.log
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# App Review & Feed Enhancement Plan
2+
3+
## Current App State
4+
5+
A **GitHub mobile client** (Expo 55, React Native 0.83) with:
6+
7+
- Feed: User activity (pushes, PRs, issues, stars, forks, releases) with filters
8+
- Explore: Trending repos, developers, topics, search
9+
- Notifications, repos, profile tabs
10+
- GitHub OAuth authentication
11+
12+
---
13+
14+
## Feature Suggestions
15+
16+
| # | Feature | Priority | Description |
17+
| --- | --------------------------------- | -------- | ---------------------------------------------------------------------------------- |
18+
| 1 | **Enhanced Feed with Releases** | High | Add a dedicated "New Releases" section showing latest releases from followed repos |
19+
| 2 | **Trending Repositories in Feed** | High | Show trending/popular repos directly in the feed (not just in Explore) |
20+
| 3 | **Activity Type Filters** | Medium | Allow filtering feed by specific event types with better UX |
21+
| 4 | **Push Diff Preview** | Medium | Show code changes in push events inline |
22+
| 5 | **Repository Issues Summary** | Medium | Show open/closed issue counts in repo cards |
23+
| 6 | **Notifications Badge** | Medium | Real-time notification count on tab icon |
24+
| 7 | **Dark Mode Improvements** | Low | Enhanced dark mode with more theming options |
25+
| 8 | **Offline Support** | Low | Cache recently viewed repos for offline viewing |
26+
27+
---
28+
29+
## Feed Enhancement Implementation
30+
31+
### Approach: Segmented Feed with Tabs
32+
33+
```
34+
┌─────────────────────────────┐
35+
│ Feed [🔔] [⚙️] │
36+
├─────────────────────────────┤
37+
│ [All] [Following] [Releases]│
38+
├─────────────────────────────┤
39+
│ (content varies by tab) │
40+
└─────────────────────────────┘
41+
```
42+
43+
### Tab Definitions
44+
45+
| Tab | Data Source | Description |
46+
| --------- | ---------------------- | ----------------------------------- |
47+
| All | User events + releases | Combined chronological feed |
48+
| Following | `useActivity()` | Only from followed users |
49+
| Releases | `useReleases()` (new) | Latest releases from followed repos |
50+
| Trending | `useTrending()` | Top trending repositories |
51+
52+
### 1. New Releases Section
53+
54+
**API Hook**: Create `useReleases()` using GitHub's `repos.listReleases` endpoint
55+
56+
**UI**:
57+
58+
- Create `ReleaseCard` component showing: repo name, tag, title, date, download count
59+
- Integrate into Releases tab
60+
61+
### 2. Trending Section
62+
63+
**API Hook**: Reuse existing `useTrending()` from `src/lib/api/hooks/useTrending.ts`
64+
65+
**UI**:
66+
67+
- Add Trending as new tab/segment
68+
- Show top 5 repos per period (today/week/month toggle)
69+
- Display: repo name, description, stars, language, fork count
70+
71+
---
72+
73+
## Implementation Tasks
74+
75+
### Task 1: Create Releases Hook
76+
77+
- File: `src/lib/api/hooks/useReleases.ts`
78+
- Use `octokit.repos.listReleases({ owner, repo, per_page: 10 })`
79+
- Could fetch releases from user's starred repos OR specific orgs
80+
81+
### Task 2: Create ReleaseCard Component
82+
83+
- File: `src/components/ui/ReleaseCard.tsx`
84+
- Props: release data, onPress handler
85+
- Style: card with tag, title, date, download stats
86+
87+
### Task 3: Update Feed Layout
88+
89+
- File: `src/app/(tabs)/feed/index.tsx`
90+
- Add segmented control: [All] [Following] [Releases] [Trending]
91+
- Each tab renders different content
92+
93+
### Task 4: Add Trending Section to Feed
94+
95+
- Integrate `useTrending()` hook in feed
96+
- Add period selector (Today/Week/Month)
97+
- Create TrendingCard component for feed display
98+
99+
### Task 5: UX Polish
100+
101+
- Add skeleton loaders
102+
- Pull-to-refresh for all tabs
103+
- Optimize infinite scroll
104+
105+
---
106+
107+
## Technical Notes
108+
109+
- GitHub API rate limits: Use `staleTime: 15 * 60 * 1000` to minimize requests
110+
- Reuse existing hooks: `useTrending()` already exists, `useActivity()` used in feed
111+
- Follow component patterns from `src/components/ui/`
112+
- Use theme system from `src/lib/theme.ts`
113+
- Trending uses search API with: `stars:>X created:>Y`

CHANGELOG.md

Lines changed: 38 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,74 @@
1-
## [0.0.14](https://github.com/involvex/awesome-github-app/compare/0.0.13...0.0.14) (2026-04-10)
2-
1+
## [0.0.15](https://github.com/involvex/awesome-github-app/compare/0.0.14...0.0.15) (2026-04-14)
32

3+
## [0.0.14](https://github.com/involvex/awesome-github-app/compare/0.0.13...0.0.14) (2026-04-10)
44

55
## [0.0.13](https://github.com/involvex/awesome-github-app/compare/v0.0.12...0.0.13) (2026-04-04)
66

7-
8-
97
## [0.0.12](https://github.com/involvex/awesome-github-app/compare/0.0.11...v0.0.12) (2026-03-16)
108

11-
12-
139
## [0.0.11](https://github.com/involvex/awesome-github-app/compare/0.0.10...0.0.11) (2026-03-09)
1410

15-
16-
1711
## [0.0.10](https://github.com/involvex/awesome-github-app/compare/0.0.9...0.0.10) (2026-03-09)
1812

19-
2013
### Features
2114

22-
* add infinite scroll pagination and notification support ([b56f3ec](https://github.com/involvex/awesome-github-app/commit/b56f3ec78efdee1d6fe573621a41c8e1daef39f2))
23-
24-
15+
- add infinite scroll pagination and notification support ([b56f3ec](https://github.com/involvex/awesome-github-app/commit/b56f3ec78efdee1d6fe573621a41c8e1daef39f2))
2516

2617
## [0.0.9](https://github.com/involvex/awesome-github-app/compare/0.0.8...0.0.9) (2026-03-09)
2718

28-
29-
3019
## [0.0.8](https://github.com/involvex/awesome-github-app/compare/0.0.7...0.0.8) (2026-03-09)
3120

32-
33-
3421
## [0.0.7](https://github.com/involvex/awesome-github-app/compare/v0.0.6...0.0.7) (2026-02-28)
3522

36-
37-
3823
## [0.0.6](https://github.com/involvex/awesome-github-app/compare/v0.0.3...v0.0.6) (2026-02-28)
3924

40-
4125
### Bug Fixes
4226

43-
* remove sensitive data from OAuth logs and update build trigger ([ec69370](https://github.com/involvex/awesome-github-app/commit/ec69370e95ce23c7a95def0574f1d86d32040b88))
44-
* **ui:** cast Markdown image styles to ImageStyle to resolve TS incompatibility ([13d228f](https://github.com/involvex/awesome-github-app/commit/13d228f7b12917dd937adad8feb7e54797a0ab76))
45-
* **ui:** resolve React 19 key spread error and improve Markdown README layout ([3d5dc47](https://github.com/involvex/awesome-github-app/commit/3d5dc47924c5660237efdd6ca61168cc92ba6543))
46-
* **ui:** resolve React 19 key spread error and improve Markdown README layout ([5748df7](https://github.com/involvex/awesome-github-app/commit/5748df795b2b0c17983e8f5b7fb8c6ae78686215))
47-
* **ui:** use correct types for Markdown styles to resolve ESLint any warning ([065dd95](https://github.com/involvex/awesome-github-app/commit/065dd953bbfc59ece0d7622584be38dbd4493c59))
48-
* **ui:** use proper types in Markdown image rule to resolve ESLint warnings ([5509e7b](https://github.com/involvex/awesome-github-app/commit/5509e7b145332bc4afd4635f1806f0c2479b9607))
49-
50-
27+
- remove sensitive data from OAuth logs and update build trigger ([ec69370](https://github.com/involvex/awesome-github-app/commit/ec69370e95ce23c7a95def0574f1d86d32040b88))
28+
- **ui:** cast Markdown image styles to ImageStyle to resolve TS incompatibility ([13d228f](https://github.com/involvex/awesome-github-app/commit/13d228f7b12917dd937adad8feb7e54797a0ab76))
29+
- **ui:** resolve React 19 key spread error and improve Markdown README layout ([3d5dc47](https://github.com/involvex/awesome-github-app/commit/3d5dc47924c5660237efdd6ca61168cc92ba6543))
30+
- **ui:** resolve React 19 key spread error and improve Markdown README layout ([5748df7](https://github.com/involvex/awesome-github-app/commit/5748df795b2b0c17983e8f5b7fb8c6ae78686215))
31+
- **ui:** use correct types for Markdown styles to resolve ESLint any warning ([065dd95](https://github.com/involvex/awesome-github-app/commit/065dd953bbfc59ece0d7622584be38dbd4493c59))
32+
- **ui:** use proper types in Markdown image rule to resolve ESLint warnings ([5509e7b](https://github.com/involvex/awesome-github-app/commit/5509e7b145332bc4afd4635f1806f0c2479b9607))
5133

5234
## [0.0.3](https://github.com/involvex/awesome-github-app/compare/v0.0.2...v0.0.3) (2026-02-23)
5335

54-
5536
### Features
5637

57-
* **feed:** replace chip filters with modal-based filter selection ([670ab60](https://github.com/involvex/awesome-github-app/commit/670ab603be86e9c4b30ec861faeb3023fa8e26bf))
58-
* **ios:** add ITSAppUsesNonExemptEncryption to iOS infoPlist for App Store compliance ([3d99863](https://github.com/involvex/awesome-github-app/commit/3d998631fc4120b6300b77e9ac8eb2c3273272d5))
59-
* release v0.0.3 with modal-based feed filters and iOS App Store compliance ([fbdc994](https://github.com/involvex/awesome-github-app/commit/fbdc99432b82ba3bffed67224df6105492aa905b))
60-
61-
38+
- **feed:** replace chip filters with modal-based filter selection ([670ab60](https://github.com/involvex/awesome-github-app/commit/670ab603be86e9c4b30ec861faeb3023fa8e26bf))
39+
- **ios:** add ITSAppUsesNonExemptEncryption to iOS infoPlist for App Store compliance ([3d99863](https://github.com/involvex/awesome-github-app/commit/3d998631fc4120b6300b77e9ac8eb2c3273272d5))
40+
- release v0.0.3 with modal-based feed filters and iOS App Store compliance ([fbdc994](https://github.com/involvex/awesome-github-app/commit/fbdc99432b82ba3bffed67224df6105492aa905b))
6241

6342
## [0.0.2](https://github.com/involvex/awesome-github-app/compare/b2fedb7ae362f4368cdde7d8c920355d8f4a10ec...v0.0.2) (2026-02-23)
6443

65-
6644
### Bug Fixes
6745

68-
* normalize line endings in test utility files ([46784b3](https://github.com/involvex/awesome-github-app/commit/46784b3c80b875318e507ef2a11828c33fac1099))
69-
* remove unused vars to pass ESLint ([371bba7](https://github.com/involvex/awesome-github-app/commit/371bba75e4f95aeac7e4f0e25f2193b7b6885caa))
70-
* rename API route for Expo Router compatibility ([e921945](https://github.com/involvex/awesome-github-app/commit/e9219457486bf32f4eef4b14c7f9c305b75a123d))
71-
46+
- normalize line endings in test utility files ([46784b3](https://github.com/involvex/awesome-github-app/commit/46784b3c80b875318e507ef2a11828c33fac1099))
47+
- remove unused vars to pass ESLint ([371bba7](https://github.com/involvex/awesome-github-app/commit/371bba75e4f95aeac7e4f0e25f2193b7b6885caa))
48+
- rename API route for Expo Router compatibility ([e921945](https://github.com/involvex/awesome-github-app/commit/e9219457486bf32f4eef4b14c7f9c305b75a123d))
7249

7350
### Features
7451

75-
* add Alert UI component with design tokens ([f02bd59](https://github.com/involvex/awesome-github-app/commit/f02bd59d895390b3357e541d36c5736637455e16))
76-
* add date format settings and improve explore screens ([2456590](https://github.com/involvex/awesome-github-app/commit/24565900e977a42849e7213f2392af72341dc4cf))
77-
* add Expo Go OAuth support with separate client ID configuration ([3674531](https://github.com/involvex/awesome-github-app/commit/3674531bb77b93ae5f220db6796ec732db5abf57))
78-
* add expo-version-bump and improve header navigation ([40b8370](https://github.com/involvex/awesome-github-app/commit/40b83709345dbac89ade984c2e97f895d0477446))
79-
* add favorites functionality to explore screen ([a42aec2](https://github.com/involvex/awesome-github-app/commit/a42aec292165da46420a1429e98ca0054736a377))
80-
* add GitHub OAuth client secret support and auth redirection ([ab4e2e3](https://github.com/involvex/awesome-github-app/commit/ab4e2e36a877d0c9432154fd123d90f7982b841e))
81-
* add GitHub URL to app.json and repository to package.json ([8b06059](https://github.com/involvex/awesome-github-app/commit/8b060599bccff0848cbc953adb6a052a47cb0540))
82-
* add iOS configuration and versionCode to app.json ([25f9e61](https://github.com/involvex/awesome-github-app/commit/25f9e619971fe1d6a52552b44cdc06156cd4b6a2))
83-
* add OAuth callback route and redirect to feed after login ([6756dff](https://github.com/involvex/awesome-github-app/commit/6756dff6ba9937f0a3153b3c357d2aff28b04b3e))
84-
* add OAuth config and improve type safety in explore screens ([0e8ae38](https://github.com/involvex/awesome-github-app/commit/0e8ae38559c0b353c2a37a4577f84b337378172e))
85-
* add useActivity hook, Plan.md, and update gitignore ([b4acdc6](https://github.com/involvex/awesome-github-app/commit/b4acdc65da1a0e6dde7c17f0c28cea6727b167fb))
86-
* add web OAuth credentials to app.json ([82179f7](https://github.com/involvex/awesome-github-app/commit/82179f7715786b71554aa73f0b8655d42d12d101))
87-
* **app.json:** enable new architecture for Android build ([26004b2](https://github.com/involvex/awesome-github-app/commit/26004b25231bb68fc40759e1e4425ede34351b41))
88-
* **auth:** enhance GitHub OAuth flow with improved token exchange ([17edcce](https://github.com/involvex/awesome-github-app/commit/17edcce91d6b6ccdf82c1c93ad9de0822bc027db))
89-
* **auth:** enhance OAuth authentication with PKCE and Expo Go validation ([7071b97](https://github.com/involvex/awesome-github-app/commit/7071b975a45ae1eb2ae4d9649192623a5e178dfe))
90-
* **ChipFilter:** adjust spacing and sizing for more compact layout ([fe66925](https://github.com/involvex/awesome-github-app/commit/fe669252e7f8aca030e4127cc67411930f85b35f))
91-
* configure expoGo client ID and add prebuild scripts ([54f84f8](https://github.com/involvex/awesome-github-app/commit/54f84f8dd7d1e7aa5e5e48772b0debc8f73677dd))
92-
* enhance home screen UI and replace SecureStore with custom storage ([0437282](https://github.com/involvex/awesome-github-app/commit/0437282d5a150a390a6a87762534136d80654107))
93-
* integrate Expo splash screen and add adaptive Android app icons ([b2fedb7](https://github.com/involvex/awesome-github-app/commit/b2fedb7ae362f4368cdde7d8c920355d8f4a10ec))
94-
* **oauth:** add Cloudflare Worker for secure web OAuth token exchange ([3b87a9e](https://github.com/involvex/awesome-github-app/commit/3b87a9e5c0426c25c381524d7e364d55b3e66e93))
95-
* **oauth:** add configurable web token exchange URL for web OAuth flow ([f0c155f](https://github.com/involvex/awesome-github-app/commit/f0c155f3b12076066c719f6b9568d8f23facc4d4))
96-
* **oauth:** redirect users based on auth status after OAuth callback ([b4d187d](https://github.com/involvex/awesome-github-app/commit/b4d187d69cf4df02d1afec5ec1ff14c426118fd5))
97-
* separate native and web OAuth client IDs ([014b29f](https://github.com/involvex/awesome-github-app/commit/014b29f70ce893da42b5aa6dc4a39e7384ca82ad))
98-
99-
100-
52+
- add Alert UI component with design tokens ([f02bd59](https://github.com/involvex/awesome-github-app/commit/f02bd59d895390b3357e541d36c5736637455e16))
53+
- add date format settings and improve explore screens ([2456590](https://github.com/involvex/awesome-github-app/commit/24565900e977a42849e7213f2392af72341dc4cf))
54+
- add Expo Go OAuth support with separate client ID configuration ([3674531](https://github.com/involvex/awesome-github-app/commit/3674531bb77b93ae5f220db6796ec732db5abf57))
55+
- add expo-version-bump and improve header navigation ([40b8370](https://github.com/involvex/awesome-github-app/commit/40b83709345dbac89ade984c2e97f895d0477446))
56+
- add favorites functionality to explore screen ([a42aec2](https://github.com/involvex/awesome-github-app/commit/a42aec292165da46420a1429e98ca0054736a377))
57+
- add GitHub OAuth client secret support and auth redirection ([ab4e2e3](https://github.com/involvex/awesome-github-app/commit/ab4e2e36a877d0c9432154fd123d90f7982b841e))
58+
- add GitHub URL to app.json and repository to package.json ([8b06059](https://github.com/involvex/awesome-github-app/commit/8b060599bccff0848cbc953adb6a052a47cb0540))
59+
- add iOS configuration and versionCode to app.json ([25f9e61](https://github.com/involvex/awesome-github-app/commit/25f9e619971fe1d6a52552b44cdc06156cd4b6a2))
60+
- add OAuth callback route and redirect to feed after login ([6756dff](https://github.com/involvex/awesome-github-app/commit/6756dff6ba9937f0a3153b3c357d2aff28b04b3e))
61+
- add OAuth config and improve type safety in explore screens ([0e8ae38](https://github.com/involvex/awesome-github-app/commit/0e8ae38559c0b353c2a37a4577f84b337378172e))
62+
- add useActivity hook, Plan.md, and update gitignore ([b4acdc6](https://github.com/involvex/awesome-github-app/commit/b4acdc65da1a0e6dde7c17f0c28cea6727b167fb))
63+
- add web OAuth credentials to app.json ([82179f7](https://github.com/involvex/awesome-github-app/commit/82179f7715786b71554aa73f0b8655d42d12d101))
64+
- **app.json:** enable new architecture for Android build ([26004b2](https://github.com/involvex/awesome-github-app/commit/26004b25231bb68fc40759e1e4425ede34351b41))
65+
- **auth:** enhance GitHub OAuth flow with improved token exchange ([17edcce](https://github.com/involvex/awesome-github-app/commit/17edcce91d6b6ccdf82c1c93ad9de0822bc027db))
66+
- **auth:** enhance OAuth authentication with PKCE and Expo Go validation ([7071b97](https://github.com/involvex/awesome-github-app/commit/7071b975a45ae1eb2ae4d9649192623a5e178dfe))
67+
- **ChipFilter:** adjust spacing and sizing for more compact layout ([fe66925](https://github.com/involvex/awesome-github-app/commit/fe669252e7f8aca030e4127cc67411930f85b35f))
68+
- configure expoGo client ID and add prebuild scripts ([54f84f8](https://github.com/involvex/awesome-github-app/commit/54f84f8dd7d1e7aa5e5e48772b0debc8f73677dd))
69+
- enhance home screen UI and replace SecureStore with custom storage ([0437282](https://github.com/involvex/awesome-github-app/commit/0437282d5a150a390a6a87762534136d80654107))
70+
- integrate Expo splash screen and add adaptive Android app icons ([b2fedb7](https://github.com/involvex/awesome-github-app/commit/b2fedb7ae362f4368cdde7d8c920355d8f4a10ec))
71+
- **oauth:** add Cloudflare Worker for secure web OAuth token exchange ([3b87a9e](https://github.com/involvex/awesome-github-app/commit/3b87a9e5c0426c25c381524d7e364d55b3e66e93))
72+
- **oauth:** add configurable web token exchange URL for web OAuth flow ([f0c155f](https://github.com/involvex/awesome-github-app/commit/f0c155f3b12076066c719f6b9568d8f23facc4d4))
73+
- **oauth:** redirect users based on auth status after OAuth callback ([b4d187d](https://github.com/involvex/awesome-github-app/commit/b4d187d69cf4df02d1afec5ec1ff14c426118fd5))
74+
- separate native and web OAuth client IDs ([014b29f](https://github.com/involvex/awesome-github-app/commit/014b29f70ce893da42b5aa6dc4a39e7384ca82ad))

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ android {
9292
applicationId 'com.involvex.awesomegithubapp'
9393
minSdkVersion rootProject.ext.minSdkVersion
9494
targetSdkVersion rootProject.ext.targetSdkVersion
95-
versionCode 14
96-
versionName "0.0.14"
95+
versionCode 15
96+
versionName "0.0.15"
9797

9898
buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\""
9999
}

app.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "Awesome Github App",
44
"slug": "awesome-github-app",
55
"owner": "involvex",
6-
"version": "0.0.14",
6+
"version": "0.0.15",
77
"orientation": "portrait",
88
"userInterfaceStyle": "automatic",
99
"githubUrl": "https://github.com/involvex/awesome-github-app.git",
@@ -28,7 +28,7 @@
2828
"backgroundColor": "#ffffff"
2929
},
3030
"userInterfaceStyle": "automatic",
31-
"versionCode": 14
31+
"versionCode": 15
3232
},
3333
"web": {
3434
"output": "single",
@@ -37,7 +37,7 @@
3737
},
3838
"ios": {
3939
"bundleIdentifier": "com.involvex.awesomegithubapp",
40-
"buildNumber": "14",
40+
"buildNumber": "15",
4141
"infoPlist": {
4242
"ITSAppUsesNonExemptEncryption": false
4343
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "awesome-github-app",
3-
"version": "0.0.14",
3+
"version": "0.0.15",
44
"private": true,
55
"keywords": [
66
"github",

0 commit comments

Comments
 (0)