Skip to content

silkroadnomad/orbit-blog

Repository files navigation

Orbit-Blog

A local-first & peer-to-peer blog powered by OrbitDB which replicates between browsers and mobile apps. IPFS (only)
Orbit Blog Logo
Note! This software is currently in alpha version status and thus may change, break backwards compatibility or contain major issues. It has not been security audited. Use it accordingly.

Install as Progressive Web App (PWA)

Visit orbit-blog @ ipns IPFS Companion needed

QR Code to PWA

Features

  • Issues:
    • Scan QR-Code isn't fully implemented
    • peer-to-peer via WebRTC between two browsers doesn't work
    • disable DID and enable default orbitdb.id, DID not yet supported by voyager
    • adding & deleting blog databases works only with reloading the page
    • in settings the storing the posts db address should happen somewhat automatically, because if forgotten, others cannot add it to there saved blogs
    • relay not accessible - renew ssl certifcate
    • password should only be asked if a seed phrase is in local storage and we have chose persistent identity
    • peerId is a new one after each page load even if we have a persistent identity
    • [?] can it be useful to have a new peerId even if identity is persistent? What would be the draw back?
  • UI related
    • configure your own voyager
    • internationalize the UI (en,de,fr,es,it,ru,...)
      • use AI for transaltion
      • use translation services
    • orbitdb address (blog address) should be possible to be given over the url in hash router /#/orbitdb/xyz
    • editable / flexible categories
    • editable posts
    • deploy to IPFS
    • markdown support for posts
    • [?] markdown support for comments
    • search in posts
    • search in comments
    • add about
  • OrbitDB related
    • overwrite seedPhrase and generate new peerId and identity (did)
    • Voyager evaluation
      • install voyager as pinning service https://github.com/orbitdb/voyager/tree/main
      • add db addresses to voyager
      • support DID on voyager
      • allow persistent peerId
      • make voyager support pubsub peer discovery
      • make voyager websocket wss run with nginx & certbot
      • test voyager replication
    • add first production blog
    • when clicking on a peerId, open a modal to show information about the peer and request information such as (public blog names, impressum, etc.)
    • publish blog on request
    • enter optional imprint in settings (optional for public blogs)
    • when adding a blog address think about optionally adding and dialing peerId too (at least when scanning?)
      • sometimes the db cannot be found nor opened then data like blogName, blogAddress can't be read, in such case it might be interesting to implmenent a retry mechanism, e.g. adding it to a queue and try every 20 seconds and remove it from the queue as soon it could connect
    • blog settings via private settings db
      • blog name
      • blog description
      • postsdb address
      • commentsdb address
      • username/did by blockchain (Bitcoin Ordinals, Runes, Namcoin, Doichain)
      • did
      • did / id by Nostr-Chrome-Extension
      • did / id by metmask extension
      • seed phrase
      • seed phrase encrypted by password
      • seed phrase encrypted by passkey
    • generate seed phrase, masterseed
    • generate libp2p peerid from seed phrase / masterseed
    • switch between temporary identity & peerId (default for browsers) and persistent identity & peerId (for mobiles)
    • add posts settings db
    • create encrypted backup & restore of posts, settings, remoteDBs and store on Filecoin, Arweave etc. (Dropbox, Google Drive, Apple Cloud, Yandex Cloud etc.)
    • setup your own relay / voyager
    • [?] enable pubsub ipfs pinning of posts and comments
      • every post results into a new CID which needs to be published to pubsub pinning service
      • every CID needs to be packaged into a metadata.json name, description, media (CID)
      • signature and public key from arriving pubsub message (if available)
      • pinning must be pre-paid (FIAT/Crypto) for a public-key
      • setup own hosted pinning-relay
      • run your own pinning RaspberryPi
    • AcccessController: blog can only write the local peer-id
      • hide delete posts / comments button if not owner
    • implement OneTimeAccessController
    • DBManager connect & replicated remote blogs
    • demonstrate webrtc-direct connections without relay-server but SDP-QR-Codes, SDP-voice or browser bluetooth
    • upload & replicate images / integrate ipfs images cids into markdown
    • implement svelte components into markdown so they they can be executed / upload svelte code as attachment for the post
  • App related
    • deployable to IPFS
    • run as PWA
      • vite-plugin-pwa
      • orbitlogo ai generated
    • version management
    • e2e tests
    • ci / cd
      • build project inside docker
      • publish to ipfs inside docker
      • extract CID of build folder
      • pin build cid on pinning service
      • tag version on github with CID
      • display version and CID inside settings / about