Performance: Add pagination/infinite scroll to directory for large datasets
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- next.js, typescript
- Ambito
- full-stack, performance
Direzione di ricerca
Start by reading src/app/directory/page.tsx and src/lib/resources.ts to trace how getAllResources() loads the full dataset, then inspect src/components/directory/directory-client.tsx and its PAGE_SIZE behavior. Use the existing directory flow as the entry point; done means resources are fetched in pages and the directory uses pagination or infinite scroll without loading all approved resources server-side.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
The directory currently loads all resources server-side (~600 rows) and paginates client-side with a "Load more" button (30 per page, src/components/directory/directory-client.tsx line 15). As the dataset grows, this will become a performance issue.
Current State
src/app/directory/page.tsxloads ALL resources viagetAllResources()(line 23-24)src/lib/resources.tsgetAllResources()fetches all approved resources (line 71-83)- Client-side pagination in
DirectoryClientwithPAGE_SIZE = 30(line 15)
Expected Behavior
Implement server-side pagination with cursor or offset-based pagination:
- Add
page/limitorcursor/limitparams to directory URL - Modify
getAllResources()to accept pagination params - Update
DirectoryClientto fetch next page via API or Server Action - Replace "Load more" with infinite scroll or paginated navigation
Good First Issue Because
- Clear performance improvement
- Involves both frontend and backend changes
- Good for learning Next.js data fetching patterns
- Can be done incrementally (API first, then UI)
Files to Modify
src/app/directory/page.tsx- add pagination params, pass to clientsrc/lib/resources.ts- addgetResourcesPaginated()functionsrc/components/directory/directory-client.tsx- implement infinite scroll or pagination UIsrc/app/api/resources/route.ts(new) - API endpoint for paginated fetching
Implementation Approach
Option A: Offset-based (?page=2&limit=30) - simpler, but can have issues with concurrent updates
Option B: Cursor-based (?cursor=abc123&limit=30) - better for real-time data, more complex
Option C: Keep client-side for now, add server-side when dataset > 1000
Given current size (~600), Option A is fine for now.
- Lingua principale
- TypeScript
- Stelle
- 1
- Fork
- 6
- Merge medio
- 12h 16m
- PR unite (30g)
- 14
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Your-Voldemort/StudentStack
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
Your-Voldemort/StudentStack#42 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Your-Voldemort/StudentStack#41 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Your-Voldemort/StudentStack#40 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
Your-Voldemort/StudentStack#38 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Your-Voldemort/StudentStack#37 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Your-Voldemort/StudentStack
Issue simili
-
refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
tomnewport/memprot-topo#55 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
WalletConnect/walletconnect-monorepo#7368 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
BU-Spark/se-chem-apll#47 ·
-
embed: handleTurboSignMessage header comment says the signing page posts to '*' (it never does)Apertadocumentation
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 70/100
udistrital/paginaweb_root#23 ·