Non penso che qualcuno qui ti risolverà mai "compiti a casa". Tuttavia puoi trovare dei conisgli e dei suggerimenti.
Hai iniziato a scindere il problema in sottoproblemi di complessità inferiore e quindi a pensare alle applicazioni figlie della tua applicazione principale?

Questo è, a mio modesto avviso, il punto di partenza per iniziare a pensare di sviluppare un progetto del genere.