Innanzitutto ecco una definizione basilare di repository: Repository su Wikipedia

Detto questo il repository è tutto e niente. Dipende dalla struttura di storing dei dati e dal tipo di dati che tu permetti.

Se parliamo di semplici dati dell'utente, e hai a disposizione un db, sei apposto. Una riga della tabella per utente, e stori li dentor i dati relativi all'utente.

Per quanto riguarda i contenuti media (foto, video, etc...) ci sono vari modi. Per le immagini puoi anche creare un campo BLOB nel db, ma questo lo farà pesare molto di più.

Il mio consiglio è di dare un ID di riconoscimento a TOT cifre, e con esso creare una cartella relativa ad ogni utente e li dentro (con la sotto-struttura che preferisci) caricare tutti i contenuti di quell'utente. Ogni utente avrà cosi la sua cartella, collegata a lui in maniera univoca. Le operazioni saranno identiche per tutti, ma al variare dell'utente loggato, varierà la cartella di riferimento.

Spero di essermi spiegato decentemente

Per quanto riguarda la realizzazione...beh...è molto complessa da spiegare se non hai già un sistema di login e gestione dei dati tua. Dovresti trovare qualcuno che ti scripta il sistema di autenticazione utenti, gestione dei dati utente e gestione dell'upload di contenuti media....

Mi sa che è pretendere troppo