BE API
399 USDTechnical Requirements
1.1 User Authentication and Management
Sign Up/In Flow:
Method: Passwordless login via SMS.
Users enter their phone number and receive a short code via SMS for authentication.
Profile Creation and Editing:
Users can create and edit their profile, adding a first name, last name, username, and profile picture.
1.2 Social Features
Friend Finder:
Access users' address books with their permission to help find and automatically connect friends on the app.
We store their friends and match them when other users sign up to the app
People are automatically connected when someone from their address book signs up on the app.
Activity Feed:
Display interactions such as comments and likes from the user and their friends. Links to the specific comments on the show pages.
1.3 Content Management
Shows:
Display available shows with details including name, square and vertical images, and short descriptions.
Ability to organize shows by multiple seasons.
These will be manually uploaded into DB
Episodes:
List episodes by season with details such as episode name, number, horizontal image, short description, and total runtime.
These will be manually uploaded into DB
Recently Watched:
Track and display user progress on watched shows.
1.4 Comments and Discussions
Comments:
Associate comments with specific timestamps in an episode.
Limit comments to 255 characters.
Allow users to like and respond to comments.
Toggle visibility between friends-only and all users.
Yellow is when I leave a comment
Blue is for the latest live comment
Episode Discussions:
Similar to comments but are applicable to entire episodes without specific timestamps.
Include features for liking and replying to comments.
Toggle visibility between friends-only and all users.
1.5 User Profiles
View and interact with user profiles.
Edit own profile and view others' profiles, including activities and recently watched shows.
Access to comments and shows from profiles.
Data Architecture
1. Users
Attributes:
UserID (Primary Key)
PhoneNumber
FirstName
LastName
Username
ProfilePictureURL
Description: Stores user details. The phone number is used for authentication purposes.
2. Authentication
Attributes:
AuthID (Primary Key)
UserID (Foreign Key)
AuthToken
CreatedAt
Description: Manages authentication sessions and tokens for users.
3. Contacts
Attributes:
ContactID (Primary Key)
OwnerUserID (Foreign Key to Users)
FriendUserID (Foreign Key to Users)
CreatedAt
Description: Represents friendships or contacts between users, linking directly to the Users table.
4. Shows
Attributes:
ShowID (Primary Key)
Name
Description
SquareImageURL
VerticalImageURL
Description: Information about each show available on the platform.
5. Seasons
Attributes:
SeasonID (Primary Key)
ShowID (Foreign Key)
SeasonNumber
Description
Description: Represents a season in a show, allowing episodes to be organized by season.
6. Episodes
Attributes:
EpisodeID (Primary Key)
SeasonID (Foreign Key)
EpisodeNumber
Name
Description
RunTime
HorizontalImageURL
Description: Stores details about individual episodes within a season.
7. UserActivity
Attributes:
ActivityID (Primary Key)
UserID (Foreign Key)
EpisodeID (Foreign Key)
ProgressTime (timestamp of how far they are in an episode)
LastWatched (timestamp)
Description: Tracks user's viewing activity and progress for each episode.
8. Comments
Attributes:
CommentID (Primary Key)
UserID (Foreign Key)
EpisodeID (Foreign Key, nullable)
Timestamp (nullable, for in-episode comments)
Content
CreatedAt
Description: Stores comments made by users. If the comment is related to a specific point in an episode, Timestamp is used.
9. Replies
Attributes:
ReplyID (Primary Key)
CommentID (Foreign Key)
UserID (Foreign Key)
Content
CreatedAt
Description: Manages replies to comments within the system.
10. Likes
Attributes:
LikeID (Primary Key)
UserID (Foreign Key)
CommentID (Foreign Key)
CreatedAt
Description: Tracks likes on comments and replies.
Entity Relationships
Many-to-Many Relationships:
Users and Contacts: A user can have multiple contacts, and a contact can be linked to multiple users.
One-to-Many Relationships:
Users to Comments: One user can post many comments.
Shows to Seasons: One show can have multiple seasons.
Seasons to Episodes: One season can contain multiple episodes.
Comments to Replies: One comment can have multiple replies.
Comments to Likes: One comment can have multiple likes.
APIs
1. Authentication
POST /auth/signup
Registers a new user using a phone
number and sends an SMS with a verification code.
Request: { phoneNumber: string }
Response: { success: boolean, message: string }
POST /auth/verify
Verifies the SMS code sent to the phone number during the signup process.
Request: { phoneNumber: string, code: string }
Response: { success: boolean, authToken: string, userID: string }
POST /auth/login
Logs in a user using a phone number, triggering an SMS with a verification code.
Request: { phoneNumber: string }
Response: { success: boolean, message: string }
2. User Profiles
GET /users/profile/{userID}
Retrieves the profile information of a user.
Response: { firstName: string, lastName: string, username: string, profilePictureURL: string, activity: string, recentlyWatched: [array of episodes] }
POST /users/profile
Updates a user’s profile information.
Request: { userID: string, firstName: string, lastName: string, username: string, profilePictureURL: string }
Response: { success: boolean, message: string }
3. Shows and Episodes
GET /shows
Retrieves a list of all shows.
Response: [ { showID: string, name: string, description: string, squareImageURL: string, verticalImageURL: string } ]
GET /shows/{showID}
Retrieves detailed information about a specific show, including seasons and episodes.
Response: { showID: string, name: string, description: string, seasons: [array of seasons] }
GET /episodes/{seasonID}
Retrieves all episodes for a specific season.
Response: [ { episodeID: string, name: string, episodeNumber: int, description: string, runTime: string, horizontalImageURL: string } ]
4. Social Interactions
POST /comments
Posts a comment on an episode.
Request: { userID: string, episodeID: string, content: string, timestamp: string (optional) }
Response: { success: boolean, commentID: string }
GET /comments/{episodeID}
Retrieves comments for a specific episode, with options to filter by friends’ comments.
Response: [ { commentID: string, userID: string, content: string, timestamp: string, likesCount: int, replies: [array] } ]
POST /likes
Likes a comment.
Request: { userID: string, commentID: string }
Response: { success: boolean }
POST /replies
Posts a reply to a comment.
Request: { userID: string, commentID: string, content: string }
Response: { success: boolean, replyID: string }
5. Friends and Contacts
POST /friends/import
Imports user contacts and attempts to match them with existing users to establish friendships.
Request: { userID: string, contacts: [{ name: string, phoneNumber: string }] }
Response: { success: boolean, matchedContacts: [array of userIDs] }
GET /friends/{userID}
Retrieves a list of friends for the user.
Response: [ { userID: string, username: string, profilePictureURL: string } ]
6. User Activity
POST /activity/watching
Logs or updates a user's watching activity for an episode.
Request: { userID: string, episodeID: string, progressTime: string }
Response: { success: boolean }
GET /activity/recent/{userID}
Retrieves the recently watched episodes and progress for a user.
Response: [ { episodeID: string, progressTime: string, lastWatched: string } ]
Upload to AWS + API create/edit/delete episods/show/series
Client's review of cooperation with Maksym Fabin
BE APIGreat developer, always available. I recommend!
Freelancer's review of cooperation with Vitalii B.
BE APIWorking with Vitalik was a pleasure, high professionalism, clear tasks, and decent payment.
I recommend to everyone)
Current freelance projects in the category Javascript and Typescript
Full-stack development — Amazon PPC Dashboard (Stage 1)Need a full-stack developer with experience working with Amazon API to implement Stage 1 of the internal PPC dashboard. The project is real, the data is live, everything is ready to start. Frontend prototype (5 pages, React + TypeScript): WHAT IS ALREADY READY — Frontend… Javascript and Typescript, Web Programming ∙ 8 hours 23 minutes back ∙ 16 proposals |
Development of a photo book and photo frame constructor websiteProject Goal A modern website needs to be developed for ordering photo books, photo frames, and other personalized photo products. The main task of the project is to provide the client with the ability to independently create a ready-made layout of the product directly on the… Javascript and Typescript, Web Programming ∙ 2 days back ∙ 89 proposals |
Full-stack developmentNeed a full-stack developer who is free for work and not looking to get rich immediately from this project. This is my test site: readyhome.ge the prototype of which I want to create (not referring to design). In the footer, there is Russian language, fill out the questionnaire… Javascript and Typescript, Web Programming ∙ 2 days 13 hours back ∙ 79 proposals |
Team for a custom marketplace of funeral services.We are looking for a team to launch and develop a custom national marketplace for funeral services. Right away: we are not looking for solo freelancers, juniors, or "website builders." We need a strong product team at the middle+/senior level with real cases in… Javascript and Typescript, Web Programming ∙ 2 days 18 hours back ∙ 25 proposals |
Improvement of the existing Next.js/Supabase project: offers, CRM, analytics, AI chatThere is an active project WatchGenius — a luxury watch analytics platform with a catalog of models, price analytics, external offers, application forms, and an AI chat. The project has already been partially developed. We need not a website from scratch, but an experienced… Javascript and Typescript, Web Programming ∙ 4 days 20 hours back ∙ 55 proposals |