Date: January 26, 2026
Status: Feature Complete — Testing Added
What I Built
A major feature update that transforms OSS Finder from a repository search tool into a complete platform for open-source contribution discovery.

New Capabilities
- Good First Issues page — Find beginner-friendly issues across GitHub
- Tab navigation — Switch between Repositories and Issues views
- TanStack Query caching — Smart data caching for better performance
- Testing infrastructure — Vitest + Testing Library for both frontend and backend
- Tests in CI/CD — Automated testing on every PR
Links
- Live: https://open-source-finder-zeta.vercel.app/
- GitHub: https://github.com/baradev/oss-repo-finder
What I Learned
Caching Is a Game-Changer (TanStack Query)
Before TanStack Query, every search hit the GitHub API:
- User searches "react" → API call
- User changes page → API call
- User goes back to page 1 → API call again (even though we just fetched it)
Now with TanStack Query:
- The first search triggers an API call (cached for 5 minutes)
- Subsequent identical searches are instant (served from cache)
- Automatic background refetching when data goes stale
- Built-in loading and error states
Implementation was straightforward. I refactored useRepositories and created useIssues to use useQuery:
const { data, isLoading, error } = useQuery({
queryKey: ['issues', params],
queryFn: () => apiService.searchIssues(params),
staleTime: 5 * 60 * 1000, // 5 minutes
})
Caching isn't just about performance — it's about respecting API rate limits and creating a snappier user experience. GitHub's API has strict limits, and unnecessary calls burn through them fast. Previously, I thought "I'll add caching later if needed." Now I understand: caching should be part of the architecture from the start, not a performance afterthought.
Testing
I added the testing stack and wired it into CI:
- Vitest for frontend and backend
- Testing Library for React
- Tests + lint + format on every PR
Coverage is small, but the pipeline is there, so adding tests is cheap.
That’s it for this iteration: Good First Issue feature, caching is in, tests are running in CI, and the app is ready for the next round of features.
Cheers,
B.
Top comments (0)