全員ミュート

  • http://bird.o0i.es
  • OAuth

  • したいこと
    • ミュート
    • ミュート解除
    • 中断
    • ファイルにエクスポート・インポート
  • 必要なこと
    • Twitterにログイン
    • ログアウト
    • 15-minutes windowを考慮して周期的にバックグラウンドでリクエストを送信する
      • その間のユーザや状態の管理
      • Function(FaaS)では無理
      • herokuとか、fly.ioでやる
      • pg_cronで定期的にNetlify functionsを叩く
  • 実装
    • Plan A: traditional web app
      • infra: fly.io
      • front/backend: warp + egg-mode
      • auth: egg-mode
      • DB: supabase
    • Plan B: serverless
      • infra: Netlify
      • frontend: Netlify
      • backend: Netlify functions + supabase (pg_cron)
      • auth: Auth0 or egg-mode on functions
      • DB: supabase
  • 実装シナリオ
    • Plan A
    • Plan B
      1. ユーザがNetlify frontendにアクセスする
      2. frontendからauth urlに移動する
      3. 認証する
      4. 予め設定したurlに飛ぶ。このredirect urlはfunctionに設定する
      5. functionでsupabaseにaccess_tokenを記録する
        • 同時に、pg_cronで更新用functionを叩き、ミュートを進める
  • Auth0
    • Twitter access tokenの取り方がよくわからないのと若干オーバーキル感があったのでやめた
  • Netlifyへのデプロイ
  • Vercel へのデプロイ
    • こちらはx86_64-unknown-linux-gnuなのでringの問題はないが、vercel_lambdaが使っているlambda_runtimeが古すぎて、metadata.rs周りでエラーが出る
    • Netlifyの素朴なラッピングに比べると、vercel_lambda側で頑張ろうとしてコケてる感じ
    • vercel_lambdaを使わずにLambdaのRustラッパーを使えばビルドできたりできなかったりする
      • ローカルではだいたいいける -
error[E0601]: `main` function not found in crate `radix_bases`
14:59:06   --> target/release/build/num-bigint-1904be7ef4ceac38/out/radix_bases.rs:780:314:59:06    
14:59:06 780 | ]
14:59:06     |   ^ consider adding a `main` function to `target/release/build/num-bigint-1904be7ef4ceac38/out/radix_bases.rs`
14:59:06
14:59:06For more information about this error, try `rustc --explain E0601`.
14:59:06error: could not compile `index` due to previous error

Backlinks