Product Requirements

SRS Subscription versi 1

Requirements:

one time payment -> no subscription karena budaya indonesia dan jg ga banyak yg punya CC
1 user can only sub to 1 tier of 1 creator
comment can be deleted by post owner and the comment owner
comment can be liked
no comment sorting by other than date time
no comment level
hashtag can be displayed but doesn't lead to anywhere
video and audio will be using URL
we list the acknowledged source for the audio and video and warn users if they are not using this.
posts and comments cant be edited, only deleted
tiers bisa diedit, bisa di delete (only for the unpublished tiers)
if tier is deleted
the current subscribed users
1 .still continue subscribing but receive no reward and
2. will not continue his/her subscription
secara sistem soft delete tiernya terus delete semua post_eligibilitnya yg tier_id nya tier id tersebut
tuliskan komen untuk future kalo ada benefit yg related ama tier dan di track secara sistem, harus dihapuskan jg.

Tech stack

seperti biasa

Postponed

view count
share count
upload video and audio
BE should generate thumbnail for video
no generate audio frequency image
no autoplay video when in the view port (video only played when it's clicked)
video will be only downloaded by the browsers

Design Questions

design butuh comment yg bisa di like dan dihapus

Challenges

get the video/audio files from other sources or how to embed
tracking onboarding progress
each card has different action or requirements to be fullfilled.
big modules:
POST
CREATE A POST
FEED
TIERS
SETTING UP TIERS
ACCOUNT related
ONBOARDING & HOME
PROFILE
Payment

Flowchart (untuk flow yg kompleks aja)

when a user is subscribing to a creator

when a creator uploading a video

when a user is playing a video

Database Structure

tiers
subscription_tier
Column
Column 1
Column 2
1
Column
Type
Note
2
Id
int
3
user_id
int
if subscription tier != save, this can be nil or 0 if nil == predefined
4
content
jsonb
{ "title": "XXX" "description": "XXX" "image":"XXX" }
5
monthly_fee
int
6
is_subscriber_limited
Bool
di keep 22nya biar dia bisa return to prev number.
7
max_subscriber
int
if 0 is unlimited
8
sort
int
9
is_published
Bool
10
subscriber_count
int
orm:"-"
11
created_at
int
12
updated_at
int
13
deleted_at
Int
if 0 is not deleted
There are no rows in this table
predefined_tiers_group
Column
Column 1
Column 2
1
Name
Type
2
id
int
3
Name
Varchar
eg: Musisi, Gamer
4
Description
Varchar
5
Sort
int
unique
There are no rows in this table
subscription_tier_predefined_group
Column
Column 1
Column 2
1
Name
Type
2
id
int
3
predefined_tiers_group_id
int
4
subscription_tier_id
int
There are no rows in this table
subscription_tier_benefit
Column
Column 1
Column 2
1
Column
Type
Note
2
id
int
3
subscription_tier_id
int
Refer to user_subscription_tier
if null then predefined
4
content
jsonb
5
sort
int
6
created_at
int
7
updated_at
int
8
deleted_at
Int
There are no rows in this table
post
Column
Column 1
Column 2
Column 3
1
name
type
note
komentar
2
id
int
3
slug
varchar(100)
4
post_type
int
ikutin cara yg di challenge (video, audio, )
5
content
jsonb
{ "title":"XXX" "value":"XXX" "description":"" } based on post_type can be different
6
is_public
bool
7
like_count
int
orm: -
next: make sure simpen di cache biar gak count() terus2an dalam waktu dekat.
8
share_count
int
orm: -
next: make sure simpen di cache biar gak count() terus2an dalam waktu dekat.
9
view_count
int
orm: -
skip dulu
10
comment_count
int
orm: -
next: make sure simpen di cache biar gak count() terus2an dalam waktu dekat.
11
is_liked
bool
orm : -
buat user yang liat
12
is_published
bool
false means it is a draft
13
created_at
int
14
updated_at
int
15
deleted_at
int
There are no rows in this table
user_post_activity
Column
Column 1
Column 2
1
name
type
note
2
id
int
3
user_id
int
unique(user_id, post_id, type) <- not for comment for share, linke if duplicate dont return error
4
creator_id
int
userID
5
post_id
int
6
type
enum
like, share, view, comment. (yg view di postpone)
7
created_at
int
8
value
text
optional, for comment, this will be the content of the comment. limit 1024 for now
There are no rows in this table
user_subscription
Column
Column 1
Column 2
1
name
type
note
2
id
int
3
user_id
int
subscriber
4
creator_id
int
userID
5
subscription_tier_id
int
6
subscribed_at
int
7
expired_at
int
8
There are no rows in this table
post_tier_eligibility
Column
Column 1
Column 2
1
name
type
note
2
id
int
3
post_id
int
4
subcription_tier_id
int
There are no rows in this table

Endpoint List

public
none

private
Create Tiers
Service Upload Image Tiers
Get Tiers By ID
Get List Predefined Tiers
Get List Tiers
Create Benefit Tier
Edit Benefit Tiers
Delete Benefit Tiers
Get Benefit By ID
Get Benefits by Tier ID
Get List Benefit
Get Tiers By creator id or my own tier
Count limit subscription if tier is limited
Drag and Drop Benefit (update api should update all benefit related and asynchronous)
Create Template Predefined Tiers
Get onboarding
get active subscriber
get balance this month
is has post (?)
get post type
is connect to media social (?)
is join Hype (?)
is donation has been setup (?)
is setup subscription (?)
is setup profile (?)
get user post activity
set featured hypes
Get List Post Feed by creator IDs (include total like & comment)
Get List Comments
Get Post by slug
Get User Liked
API Post Comments
Get List Post by creator id
Dashboard Subscription
get total subscription active
get total income subscription
Graph total user subscription to creator
Get List user subs by creator id
Dashboard Posts
Graph view count
Graph like count
Graph Comment count
Graph Share count

List of Pages

List of Components


Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.