No funded issue found.
Check out the Issue Explorer
Be the OSS Funding you wish to see in the world.
Looking to fund some work? You can submit a new Funded Issue here .
Time left
Opened
Issue Type
Workers Auto Approve
Project Type
Time Commitment
Experience Level
Permissions
Accepted
Reserved For
"Livestream-to-earn" Template Publisher App
videodac
Kotlin, Ethereum, Template, Android, Livestreaming, RTMP, Wallet
## Introduction
This issue is to define the minimum viable product for a MVP "Livestream-to-earn" Template Publisher App.
**MVP** stands for "minimum viable product", and represents the minimal feature set to achieve the objective.
A **Template App** is a body of code which can be used to publish an app, configured for a specific situation. This allows a base level of functionality to be replicated by anyone for their specific circumstance.
**"Livestream-to-earn"** is the act of livestreaming, and at the same time being paid by anyone who is consuming the livestream.
## Example Usage
For example, the Template can be used by **Ethereum Football Club** to publish the `Ethereum FC Livestream-to-earn` app.
This would allow any spectator at an Ethereum FC match to livestream the action, and get paid in Ethereum, by anyone who is watching.
## Scope of Functionality
The app should allow the User to:
- Publish video and audio from their device's camera and microphone
- See the video which is being livestreamed
- on their device's screen
- Monitor for payments from "pay-to-play" consumers
- to an Ethereum wallet created by the app
## User Journey
**Screen 1** - on launch:

The following user interactions are possible:
- Tap the Camera Thumbnail "You" in the bottom right to go to Screen 2
- Tap the Hamburger Button to go to Screen 4
- Tap the x to close the app
**Screen 2** - go live:

The following user interactions are possible:
- Tap the Hamburger Button to go to Screen 4
- Tap the x to close the app
**Screen 3** - receive first payment:

The following user interactions are possible:
- Tap the Hamburger Button to go to Screen 4
- Tap the x to close the app
**Screen 4** - more information (overlay)

The following user interactions are possible:
- Tap the "Copy Private Key to clipboard" to copy private key to clipboard
- Tap the "Copy Ethereum address to clipboard" to copy Ethereum address to clipboard
- Tap the Hamburger Button to go to hide overlay
## Layout
The layout of the app should be as defined below.
**_The app must be implemented to these specifications in order for this issue to be closed and bounty to be paid out._**
### Base Canvas (`9x16`)

The app as designed above requires a canvas on a device with a `9x16` aspect ratio - such as `2160x3840`, `1080x1920`, `720x1280` or `450x800`.
If the device has a screen with a `9x16` aspect ratio, laying out the app should be trivial.
If the device does not have a screen with a `9x16` aspect ratio, the app should allocate an appropriate frame with a `9x16` aspect ratio on the device's screen for the app to operate in. Laying out the app should then be trivial.
### On Launch Layout

### Livestreaming View Layout

### Livestreaming View Detailed Layout

## Layout Components
### Header Bar (`9x1`)


The artwork for the Hamburger Button and x will be provided during the implementation.
### Wallet Bar (`9x1`)



The two lines of text should be the same length (which will require different font sizes).
The two lines of text should be aligned in the centre of the panel, with appropriate padding / spacing.
### Live Camera Panel (`9x9`)


The "live" text should be displayed over the camera feed, to tell the user that they are live.
The microphone level monitor should show if sound is being detected by the microphone.
### "You" Panel (`9x2`)


Note: the price per minute should be set as a default in the app template.
Note: the "set your price per minute" function should be inactive (for now). This will require some further integration with the Consumer app.
### Broadcaster Node Bar (`9x1`)


The Broadcaster Node is the server receiving the livestream from the user, and distributing to consumers.
They are responsible for running the broadcasting server. They will not receive any income from consumers in this phase.
### Live Stream Selector Bar (`9x2`)



## App Specifics
### No Internet Connect
In the event that the device does not have internet access to the RTMP endpoint or the ETH endpoint, the app should still launch successfully, activate the camera, and allow a user to select "You" to go live.
In this instance, the app will not be able to retrieve the wallet balance, and will not be able to go live.
The app should be able to gracefully handle the situation when it is unable to either a) reach the RTMP endpoint, b) reach the ETH endpoint, and to report these errors to the user.
### Disconnection
In the event that the livestream fails for any reason, the app should handle this gracefully, and inform the user that they are no longer live.
In this instance, the app should return the user to Screen 1, with an appropriate error message.
## Configuration of template
The following parameters should be configurable by a user of the template, when creating the app:
### Copy
All copy, e.g. error messages, titles, hamburger button content should be configurable in the template.
### Broadcaster Node settings
- RTMP endpoint for publishing content to, e.g. `rtmp://89.145.161.141:1935`
- ETH Address for display in UI, and in future, to receive payment
### Payment settings
- ETH endpoint (e.g. infura)
- Default "price per minute"
### AV settings
- **Keyframe interval** e.g. every 60 frames / 2 seconds
- **Maximum Video Stream Bitrate** e.g. `2000kbps`
- **Maximum Audio Stream Bitrate**, e.g. `320kbps`
## Specific Deliverables
**Code should be written in pure Kotlin**, and should make use of existing open-source libraries wherever possible.
The following specific deliverables are required for this issue to be closed and any bounties paid out:
- Sample app generated from template:
- `.apk` file for `debug` purposes
- `.apk` file signed for `release` to e.g. Google Play Store or FDroid.
- Merged PR to this repo containing:
- Template App codebase
- Project which can be imported to Android Studio
- Documented process for generating an APK from template, e.g. which configuration files to edit to change config
## Resources
[KEthereum](https://github.com/komputing/KEthereum)
[Kotlin RTMP Library](https://github.com/TakuSemba/RtmpPublisher/issues)
[videoDAC's Streaming Back-End](https://github.com/videoDAC/streaming-back-end)
Setup your profile
Tell us a little about you:
Skills
No results found for [[search]] .
Type to search skills..
Bio Required
[[totalcharacter]] / 240
Are you currently looking for work?
[[ option.string ]]
Next
Setup your profile
Our tools are based on the principles of earn (💰), learn (📖), and meet (💬).
Select the ones you are interested in. You can change it later in your settings.
I'm also an organization manager looking for a great community.
Back
Next
Save
Enable your organization profile
Gitcoin products can help grow community around your brand. Create your tribe, events, and incentivize your community with bounties. Announce new and upcoming events using townsquare. Find top-quality hackers and fund them to work with you on a grant.
These are the organizations you own. If you don't see your organization here please be sure that information is public on your GitHub profile. Gitcoin will sync this information for you.
Select the products you are interested in:
Out of the box you will receive Tribes Lite for your organization. Please provide us with a contact email:
Email
Back
Save