Бути API
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
Відгук замовника про співпрацю з Maksym Fabin
Бути APIВідмінний розробник, завжди на зв'язку. Рекомендую!
Відгук фрилансера про співпрацю з Vitalii B.
Бути APIПрацювати з Віталіком було одне задоволення, високий професіоналізм, чіткі задання та гідна оплата.
Всім рекомендую)
Актуальні фриланс-проєкти в категорії Javascript та Typescript
Розробка повного стеку — Панель управління Amazon PPC (Етап 1)Потрібен full-stack розробник з досвідом роботи з Amazon API для реалізації Stage 1 внутрішнього PPC-дашборда. Проект реальний, дані живі, все готово до старту. Прототип фронтенда (5 сторінок, React + TypeScript): ЩО ВЖЕ ГОТОВО — Фронтенд-прототип на React 18 + TypeScript +… Javascript та Typescript, Веб-програмування ∙ 9 годин 37 хвилин тому ∙ 17 ставок |
Розробка сайту-конструктора фотокниг і фоторамокМета проекту Необхідно розробити сучасний веб-сайт для замовлення фотокниг, фоторамок та іншої персоналізованої фотопродукції. Головне завдання проекту — надати клієнту можливість самостійно створити готовий макет виробу без участі дизайнера безпосередньо на сайті.Основний… Javascript та Typescript, Веб-програмування ∙ 2 дні 1 година тому ∙ 90 ставок |
Повноцінна розробкаNeed 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 та Typescript, Веб-програмування ∙ 2 дні 14 годин тому ∙ 79 ставок |
Команда для самописного маркетплейса ритуальних послуг.Шукаємо команду для запуску та розвитку самописного національного маркетплейсу ритуальних послуг. Одразу: не шукаємо одиночок, джунів і “збирачів сайтів”. Потрібна сильна продуктова команда рівня middle+/senior з реальними кейсами маркетплейсів/складних SaaS. Прошу не… Javascript та Typescript, Веб-програмування ∙ 2 дні 20 годин тому ∙ 25 ставок |
Доопрацювання існуючого проекту Next.js/Supabase: оффери, CRM, аналітика, AI-чатЄ діючий проект WatchGenius — платформа аналітики люксових годинників з каталогом моделей, ціновою аналітикою, зовнішніми офферами, формами заявок та AI-чатом. Проект вже частково розроблений. Потрібен не сайт з нуля, а досвідчений full-stack розробник, який зможе розібратися в… Javascript та Typescript, Веб-програмування ∙ 4 дні 21 година тому ∙ 55 ставок |