Design Story Viewer - iOS System Design Interview

preview_player
Показать описание
Today we’ll be talking about building a simple story viewer, the kind you see on apps like Instagram and Snapchat. It’s an app that gives you a slide-show experience of the most relevant photos.

Chapters:
0:00 Intro & Requirements
1:15 Plan
1:44 Data Model
2:24 API
7:04 UI
9:09 MVP
9:51 High level design
11:48 Data flow
13:30 Additional questions
Рекомендации по теме
Комментарии
Автор

For anyone don't understand what "deltas" mean in 4:53: request deltas likely means asking the server for information on what has changed since the last request.

tinhhuynh
Автор

also for the DataSource part is bit unclear, why we not store seen/unseen in data model? and why is there ViewModel inside datasource if we using MVP? feel like it will be much more straiforward to directly store status of seen/unseen in data model and update it from service to generate new list for display

dragonzhao
Автор

5:35 the size of a photo object is 100 bytes? Just curious where you got this number

moomoocowjonny
Автор

One scenario that is not covered is socket. I wpuld love to dive deep in the soxket implementation foe the app.
I want to know what if the user is using the application continuously and he/she wants to gets the updates as soon as there is new image in the story. Requesting images after every 10 mins or whenever user opens the app is not going to help in the long run.

vinayakthite
Автор

I don't quite get why UIPageViewController wouldn't work here. Can you explain a little more please?

SGT
Автор

Love it a lot! Very clear and helpful!

georgelin
Автор

why do we need cache and CoreData both? Isn't CoreData sufficient for client side storage?

isb-vy
Автор

Why does Presenter deal with DataSource and PhotoService deciding when to request new data, and when to use the cached one? Does not look to me as a responsibility of the Presenter. How about using either Interactor or StoriesService for that? PhotoOrderer on the other hand may be a direct dependency of the Presenter, as it basically the presentation layer part.

yevhendubinin
Автор

what's the diff between initialLoad and headLoad? why we need initialLoad if it have no data?

dragonzhao
Автор

dude stop maintaining silent push )), it is totally unrelated to what user needs, delivery time is something, undocumented, even if the app in foreground. silent pushes, is nice tool for pushing something not very important, or argent.

alexvaiman