API BE
Technical 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
Opinia zleceniodawcy o współpracy z Maksym Fabin
API BEDoskonały programista, zawsze dostępny. Polecam!
Opinia freelancera o współpracy z Vitalii B.
API BEPraca z Vitalikiem była czystą przyjemnością, wysoki poziom profesjonalizmu, jasne zadania i godna zapłata.
Polecam wszystkim)
Aktualne zlecenia dla freelancerów w kategorii Javascript & Typescript
Full-stack rozwój — Amazon PPC Dashboard (Etap 1)Potrzebny programista full-stack z doświadczeniem w pracy z Amazon API do realizacji Etapu 1 wewnętrznego dashboardu PPC. Projekt realny, dane żywe, wszystko gotowe do startu. Prototyp frontendu (5 stron, React + TypeScript): CO JUŻ GOTOWE — Prototyp frontendu na React 18 +… Javascript & Typescript, Programowanie stron internetowych ∙ 9 godzin 28 minut temu ∙ 17 ofert |
Opracowanie strony internetowej do tworzenia fotoksiążek i ram fotowychCel projektuNależy opracować nowoczesną stronę internetową do zamawiania fotoksiążek, ram fotowych i innych spersonalizowanych produktów fotograficznych.Głównym celem projektu jest umożliwienie klientowi samodzielnego stworzenia gotowego projektu produktu bez udziału projektanta… Javascript & Typescript, Programowanie stron internetowych ∙ 2 dni 1 godzina temu ∙ 90 ofert |
Full-stack rozwójPotrzebny jest programista full-stack, który jest dostępny do pracy i nie chce od razu wzbogacić się na tym projekcie. To jest moja strona testowa: readyhome.ge prototyp, który chcę stworzyć (nie mam na myśli designu). W stopce w języku rosyjskim, wypełnij ankietę i przejdź… Javascript & Typescript, Programowanie stron internetowych ∙ 2 dni 14 godzin temu ∙ 79 ofert |
Zespół do samodzielnie stworzonej platformy rynkowej usług pogrzebowych.Poszukujemy zespołu do uruchomienia i rozwoju autorskiej krajowej platformy rynkowej usług pogrzebowych. Od razu: nie szukamy pojedynczych osób, juniorów ani "zbieraczy stron". Potrzebny jest silny zespół produktowy na poziomie middle+/senior z rzeczywistymi przypadkami… Javascript & Typescript, Programowanie stron internetowych ∙ 2 dni 19 godzin temu ∙ 25 ofert |
Dopracowanie istniejącego projektu Next.js/Supabase: oferty, CRM, analityka, czat AIIstnieje działający projekt WatchGenius — platforma analityczna luksusowych zegarków z katalogiem modeli, analizą cen, zewnętrznymi ofertami, formularzami zgłoszeniowymi i czatem AI. Projekt został już częściowo opracowany. Potrzebny jest doświadczony programista full-stack,… Javascript & Typescript, Programowanie stron internetowych ∙ 4 dni 21 godzin temu ∙ 55 ofert |