Emotial functional specification
Team: $100K MRR (Nathan Lodge, Slater Leonardo)
What the live product does. How it is built is in the technical specification. Site: emotial.app.
Purpose
Emotial is a social site for sharing thoughts and feelings. Reactions are emoji, not a single like. We built it for students and anyone who wants a small, familiar feed.
Actors
| Actor | Can |
|---|---|
| Guest | Read the feed, explore, and profiles. Sign up or log in. Change theme. Cannot post, react, follow, reply, or report. |
| User | Everything a guest can, plus write and manage their own posts, react, follow, share, reply, upload media, and get notifications. |
| Admin | Everything a user can, plus review reports and close accounts or delete posts. |
Accounts
Sign up: display name, username, email, password. There is no email confirmation. Username is 3-16 characters (letters, numbers, underscore), stored lowercase. Password is at least 8 characters.
Log in with email or username plus password. Log out from the sidebar.
Settings: email, password, theme / accent. Closing the account needs the current password. That retires the username for good and frees the email.
Username does not change after sign up. Display name and bio do.
Posts
A post has a body (up to 500 characters) and optional media.
You can create, edit, and delete your own posts. A deleted post stays in a thread as a tombstone (no author, no body).
You can reply (one hop on a profile; the full thread is on the post page) and share (outbound only). @username notifies that user. #tag is searchable.
Media: up to 4 images (including GIFs) or 1 video. Upload finishes in the background, then the files attach to the post.
The body can include emoji and ordinary links.
Reactions
A user puts one emoji reaction on a post. It is not a like count. They can change it or take it off. Anyone can open the list of who reacted.
Feed sorts: recent, trending, and by emotion (funniest, saddest, maddest, shocking).
People
Follow and unfollow. See followers, following, and friends (mutual follows).
A profile shows avatar (can be animated), banner, display name, username, bio, posts, and replies.
You can report a post or a profile for harassment, spam, or inappropriate content.
Feed, explore, notifications
Feed (/): posts from the network, with live updates when new posts arrive.
Explore (/explore): search posts and people. Recent searches are kept.
Notifications: reaction on your post, reply, follow, mention. Unread count updates live. You can mark one or all read.
Admin
List profiles. List reports and resolve them. Close an account or delete a post.
Guest vs signed-in
| Surface | Guest | User |
|---|---|---|
| Feed / Explore / Profile | Yes | Yes |
| Composer, react, follow, reply, share, report | Prompt to log in | Yes |
| Notifications / Settings | Redirect to log in | Yes |
| Admin | No | Admin only |
Not in this build
Password reset email, Google OAuth, bot accounts, follower badges, and Socket.io were in the proposal and did not ship. Live updates use server-sent events.