https://github.com/victorb/pine
Vine clone over IPFS
https://github.com/victorb/pine
Last synced: about 1 year ago
JSON representation
Vine clone over IPFS
- Host: GitHub
- URL: https://github.com/victorb/pine
- Owner: victorb
- Created: 2017-10-28T07:26:17.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-18T11:45:47.000Z (over 8 years ago)
- Last Synced: 2025-03-30T10:51:10.482Z (over 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 14.9 MB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# pine
> vine clone over IPFS

## How to run
Requires nodejs version 9.0.0 or higher and yarn
- Clone the repository
- Run `yarn` to install the dependencies (or `npm install` if you use npm)
- Run the `dev` command to serve frontend via either yarn or npm
- `yarn dev` OR `npm run dev`
- Run the caching server via either yarn or npm
- `yarn start` OR `npm start`
Now you should be able to see the application on localhost:8080
Navigating to the website, you should see the start page, showing
a "Record new Pine" in the bottom, and a permission dialog asking
for permission to access your camera. Accept that. Also, open up the
browser's javascript console, so you can see any potential errors (
currently doesn't handle errors very good)
Then click on "Record new Pine" to go to the recording screen.
Once on the recording screen, click and hold down on the camera
output to begin recording. You should see a progress-bar in the
bottom. Make sure to release the mouse before it fills up, as each
recording can only be ~6 seconds long.
Once you let go, press the "Publish" button and you should be able
to see a preview of your recording. If you're happy with it, click
"Publish" in the top-right, and your recording will be published
on IPFS. You can see the link being printed in your browser's
console.
## open problems
- How to keep track of "loops"
- How to keep track of all publishes?
- Help seed everyones content
## ux
Starts with full page with listing of videos
Button in bottom for recording
Recording screen shows video in fullscreen with
progress meter in the bottom
Once recorded something, show button in top right
to publish video
Publish video takes you to the preview screen which
replays the video for you
Publish page shows button in the bottom for actually
publishing the video
Once published, it shows you the submission in
the browser
## data structures
### list of videos
----------------
Upon opening, a peer should send `GET_VIDEOS_HEAD` message on `PINE` topic via
pubsub. Online peers will respond with `SEND_VIDEOS_HEAD` which is a hash of
the latest version that peer have seen of the list of videos. The peer who
requested the list will take the first seen message and fetch the list from that.
A list of videos looks like this:
```
[{
title: 'Look, a funny cat!',
video: '/ipfs/Qkamlfknawleknfal',
created_at: '2017-10-08T16:05:42.023Z'
}]
```
It will also be possible to run `Hoster` nodes to listen and respond to queries
in case no other peers are online.
### view-count
View counts are maintained by super-nodes who are permissioned to increment the
view counters.
When normal nodes first starts, the request the latest head of the counting with
sending a `GET_VIEWS` message on topic `PINE` upon the super-nodes responds with
a `SEND_VIEWS` message containing the data-structure for the views.