Users
Comments
Users need to be able to comment on photos. However, this is not a social media site, so I explicitly rule out nested comments. Comments are strictly linear, ordered by creation date. Also, I'm not sure I want to allow editing of comments. Maybe the WhatsApp model, to allow editing only for the first 15 minutes after making a comment, after that it's final.
Comments are identified by the user's display name (which is different from a user name) and a timestamp. Need to figure out if we can use the device's current timezone to display the timestamp; storing timestamps in UTC of course.
It is possible to reply to a comment, but here too, follow the WhatsApp model and use the “reply” only to display a block above the comment identifying what the reply was to.
Avatars
Users can upload a small images as their avatar. Need to specify some maximum sizes (e.g. 500x500 px), specify square. If larger images are uploaded, they will be scaled; if non-square images are uploaded, only the center part is extracted. The 500x500 size is still pretty large, but is selected with an eye to future devices.
User Attributes
Asking only for the user’s display name, which is a single text box of up to 25 characters. Minimum two characters. User's display name doesn't have to be unique
We're not asking anyone about their gender, and don't care. Default avatars are fully generic.
Feedback
Instead of giving likes and stuff, allow users to rate individual photos on a scale of 0 to 10 (possibly represented by up to five stars). Users can filter by their own rating or by average rating of the photos. And, of course, my own 0-5 scale can be used to filter as well. Possibly represent my own scale also as 0-5 stars. Note: the average rating of photos defaults to my rating when there are no user ratings for that photo.
Create Users
I think users can still only be created by me. I don't want to go and open it up for anybody to create accounts. But once created, password resets and such can be self-serve.
Logging In
Users can register with email address, phone number, or both. Change of email address or phone number must be verified by receiving a verification code. Actually, does that even work? SMS messaging will const money...
Once logged in, a session token is saved in local storage which authenticates the user. Session tokens do not expire, or have a very long expiration. They get refreshed on a regular basis (every time using the app, but at most once a day). Refreshing invalidates the old session token.
Notifications
Users receive a notification when someone replies to their comment. The notification is by default only in the app; if requested, notifications can also be sent by email.
Other notifications: new photos added, new Photo of the Day posted.
