Channel
A channel is the entity who owns content, this could be something the channel posted themselves or another channels has taged them.
| Task | [Alpha Branch] | [Chat] | [Alpha] | [Beta] | [Production]
This document is not meant to outline how to use the API endpoints, rather how to build it. We outline what it's capabilities should be, once you have built them, you can creat documentation on how to utilize them on the APIs tab.
- Status & Details
- User Stories, Flows & Personas
- Features & Functions
- Data
Description
The Channel is where the end user or ["Clients' Account"] can express themselves, creaet a brand for who they are and present thier content, they way the channels function is entierly up to the client, they can simply reqest a channels projects and display them in a custum manner or they can utilize our channel sections/filter features (e.g. latest upload, most popular, etc) these will be some prebuilt querris or lists. The client can also seperate by content type, music, podcasts, movies, etc.
Status
These details are only updated with each release, for more acurate updates and keeping track of progress, see the task in GitHub.
| Owner | Lead | Doc Status | Product Status | Last Update | Version | Release | Phase |
|---|---|---|---|---|---|---|---|
| Mendy | Roy | In Progress | Up Next | 04.03.2024 | 0.01 | Internal | Alpha |
Reminders
- Keep code lean and clear
- follow the outlined arcetecture
- write commetes in your code
- update the staus in the docs and in GitHub
- try not to recreate functions we alredy have, rather update exsiting functions to support your needs
- [Be sure to follow the release guidelines]
- Update Documentation
- keep API docs up to date each time you update or add endpoints
Links & Resources
User Stories
Persona One
I want to post my video and I want to shre a litle about myself
Persona Two
I'm sharing videos about my work, I would liek to create a channel for my compnay
User Flows
Personas
Features
Below is a list of features that will be utilized in order to deliver the best account features and functionalities. The details bellow are not comprehensive feature details but rather, describe how the features will be utilized within the account, for further details, please see the individual feature documentation.
-
[Profile]
The profile is the top section where the user can manage how they are presented
The client can rewest the channels projects in a varity of ways
-
[All]
reqest all projects related to the channel
-
Type
reqest only the type of content you want e.g. music, podcasts (the client should not have to set the type each time, they should be able to set the type for the entire client project, only if no types have need set or if multiple types have been set for the client project do they need to set the type here)
-
Filters (prebuilt qerrys)
clients can reqest the most popular projects, latest uploads/created, post scedual, etc. (might overlap with other features, check to make sure it doesn't)
Allow channels to creaet memberships (this feature must be enabled by the Client), the Client can set the rules, how many memberships and if there is a simple prive or teired pricing, they can leave the chose to the channel as well. the client can also profive platform or app features to be added to a membership by the channel for the client can create thier own app wide memberships. the channel can offer exclusive content, discouts on rent or purchased content, early access, producer credits and more. the client can tie in features from other API e.g. chat api can offer members only chat, commerce api can offer discounts in commerce, events APi can offer exclusiv events discount or free entry, etc.
-
Monitization / Ads
A Channel can see thier monitizations rate, they can see how muh they earn, how much demand there is to advertize on thier content, etc. (this is mostly a summary of monitization features and project monitization data)
if an account seems suspisus it should be flaged so that any channel, content, comments or otherwise can be monitored
You can find the Data Structure.
On the document we want to keep all the important data, the first fetch and fast to access.
- Data Structure
- Data Model
- channels
- - channel 1
- - - type (mixed, music, srticles, videos, etc)
- - - category (cooking, shopping, fashion, etc)
- - - first name
- - - last name
- - - username
- - - creaded
- - - description
- - - avatar
- - - cover
- - - adult/secitive
- - - status
- - - updated (date)
- - - age
- - - location
- - - links
- - - CTA (follow, subscribe, donate, etc) (options are set by the client)
- - -
class Channel {
final String type;
final String category;
final String name;
final String username;
final DateTime created;
final String description;
final String avatar;
final String cover;
final String status;
final DateTime updated;
final int age;
final String location;
final List<String> links;
final List<String> cta; // CTA (follow, subscribe, donate, etc) (options are set by the Client)
final List<Access> access;
final List<Monetization> monetization;
final List<String> features;
final List<String> memberships;
Channel({
required this.type,
required this.category,
required this.name,
required this.username,
required this.created,
required this.description,
required this.avatar,
required this.cover,
required this.status,
required this.updated,
required this.age,
required this.location,
required this.links,
required this.cta,
required this.access,
required this.monetization,
required this.features,
required this.memberships,
});
}
Access
- Data Structure
- Data Model
- access
- - account 1
- - - account id
- - - level
- - - inhrited (id)
- - - expries
class Access {
final String accountId;
final String level;
final String inherited;
final DateTime expires;
Access({
required this.accountId,
required this.level,
required this.inherited,
required this.expires,
});
}
Monetization
- Data Structure
- Data Model
- monitization
- - monitize 1
- - - type (display, video, banner, etc)
- - - wallet (id)
- - - qilified (date)
- - - update (date)
class Monetization {
final String type;
final String walletId;
final DateTime qualified;
final DateTime update;
Monetization({
required this.type,
required this.walletId,
required this.qualified,
required this.update,
});
}
Projects
Here we keep a record of all the features an account is paying for or has been given acces to by the client.
- features
here are the membership the channel has created to offer to thier viewers