Giter Club home page Giter Club logo

pomu's People

Contributors

dependabot[bot] avatar emily33901 avatar mellowagain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pomu's Issues

change up hosted pomu infrastructure

We are nearing 1000 livestreams saved on our hosted pomu instance. We'll take this opportunity to do a bunch of infrastructure updates:

Promote dev instance to production

Our dev instance has been stable enough for quite a while now, meaning that we can go ahead and promote it to the production instance. This means:

  • dev.pomu.app -> pomu.app
  • dev-cdn.pomu.app -> cdn.pomu.app

All other subdomains such as manual-cdn.pomu.app, docs.pomu.app or status.pomu.app will stay on their current subdomain

Checklist:

  • Update .env file on pomu fly.io container, replacing all dev. urls with the full URL
  • Update DNS on Cloudflare to have the root domain point to the fly.io container
  • Remove placeholder page on https://pomu.app currently hosted with Cloudflare Pages
  • Update Discord OAuth redirect url within the Discord Developer Portal
  • Update Postgres database download_url field with newly adjusted CDN url
  • Update the whole Meilisearch pomu search index with newly adjusted CDN url
  • Update status page URLs to point to the new production instance
  • Optional: Add redundancy region to the pomu hosted container on fly.io

Because Backblaze S3 buckets cannot be updated, we will keep the S3 bucket named pomu-dev and we will continue to save new archives into that S3 bucket.

Meilisearch Cloud Free Tier retirement

Pomu uses Meilisearch Cloud at the moment, but they have announced that they will be sun setting their free tier and replace it with a $20/mo basic tier at the end of this month. Pomu's search usage is in no way high enough (less than 1K searches per month) to justify migrating to it, so we will switch to self-hosted Meilisearch using fly.io

  • Setup Meilisearch in a fly.io container
  • Adjust Meilisearch URL & API keys in pomu's production containers .env file
  • Restart pomu to repopulate the (now empty) search index

Dump pomu.app database

In the spirit of being open data (and also as a backup solution), we should add automated downloadable database dumps of pomu.app's videos table. We should host these database dump in a GitHub repository.

  • Create pomu-db-dumps repository
  • Setup automated daily dumping using GitHub actions

allow reporting broken videos

add a report button like this:

img

will allow a archive to be reported with the following reasons:

  • download broken (cancelling mid download, not completing)
  • download not found
  • video is unplayable
    • this should additionally promote the user to use VLC media player, our only supported media player. windows media player is known to cause problems
  • video cuts off too early
  • video cuts off too late
  • video is bad quality
  • thumbnail incorrect
  • title incorrect
  • author name incorrect
  • content is abusive / harmful
  • archive exposes private information
  • i want to take down this content
    • this should link to our dmca page
  • other

the notifications can just be sent to pomu's email address or to the discord

*pq.Error: pq: remaining connection slots are reserved for non-replication superuser connections

Sentry Issue: POMU-SF-K

*pq.Error: pq: remaining connection slots are reserved for non-replication superuser connections
  File "/opt/pomu/holodex.go", line 45, in QueueUpcomingStreams
    sentry.CaptureException(err)
  File "/tmp/pomu-go/pkg/mod/github.com/go-co-op/[email protected]/gocron.go", line 106, in callJobFuncWithParams
    f.Call(in)
  File "/tmp/pomu-go/pkg/mod/github.com/go-co-op/[email protected]/executor.go", line 92, in (*executor).start.func1.2
    callJobFuncWithParams(f.function, f.parameters)
  File "/tmp/pomu-go/pkg/mod/github.com/go-co-op/[email protected]/executor.go", line 109, in (*executor).start.func1.3
    runJob()
  File "/tmp/pomu-go/pkg/mod/golang.org/x/[email protected]/singleflight/singleflight.go", line 193, in (*Group).doCall.func2
    c.val, c.err = fn()
...
(5 additional frame(s) were not displayed)

submitting livestreams with embedding disabled is impossible on the frontend

the frontend uses the youtube embed API to (https://www.youtube.com/oembed?url=) display video info like title and uploader before submission to our API server.

if the video has embedding disabled, that endpoint will return 401 unauthorized and because of our error handling, the whole video will be unable to be submitted via the frontend. manually submitting it via the API works fully normally.

we need to handle the following errors returned by youtube's oembed endpoint:

  • 400 bad request
  • 401 unauthorized
  • 404 not found

record members-only livestreams

recording members-only livestreams is possible by grabbing cookie files from an authenticated user which is subscribed to membership. thus we should allow users to upload a cookie file so we can save it on the server side.

downloads will also then be restricted to users which are active members of the channel which we've saved the archive of

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.