Coder Social home page Coder Social logo

jamdrop's Introduction

JamDrop is a webapp for queue sharing. Drop songs into your friends' queues! RickRoll them until y'all're nemeses! It's up to you!

Contributing

Overview

Backend

  • Go
  • Google Cloud Run (serverless Docker image executor) for hosting
  • Google Cloud Build for Docker image build / push
  • Google Firestore for persistence
  • Google Cloud Scheduler for regular jobs
  • Cloudflare for DNS

Frontend

  • HTML/JS/SCSS
  • Mithril for DOM rendering'n'stuf
  • Parcel for bundling

Getting Started

A few heads ups

  • Currently using cookies as an auth method. That is not the right way to do auth lol.
  • Even when running locally, you need to connect to Google Firestore to get to the development collections. It appears there are some solutions for this which should be looked into.
  • There's a bunch of long-polling going on from the frontend. Unfortunately, at this point Cloud Run does not provide websocket support, so long-polling is the best option for "live updating" stuffz. I do think, however, there should probably only be one endpoint being polled for updates, instead of the two that currently exist.

A to-do list

  • Clone it
  • Get a gcloud-key.json and put it at the root of your repo
  • Get a .env file and put it at the root of your repo
  • Get the backend working
    • Get the right version of Go working (I use gvm)
    • Build it: $ go build cmd/server
    • I like to use the gin hot reloader (along with scripts/dev/gin.sh)
  • Get the frontend working
    • $ yarn
    • $ yarn watch

Once you can get two build servers running (gin and parcel) you should be good to hit http://localhost:8080.

Attributions

Icons made by Freepik from www.flaticon.com:

jamdrop's People

Contributors

broothie avatar

Stargazers

Roman avatar Steve avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

jamdrop's Issues

start Flutter base

ideas:

  • simple three-section UI
  • enable tile-sharing such that the Spotify share functionality will be able to use Jamdrop as an option

there are some fire & forget processes that need to not do that

Cloud Run only provides CPU time during a request, so if a request handler spins off a goroutine for async processing, and that goroutine doesn't finish before the handler is finished, it's possible it will not complete. Two examples I can think of off the top of my head:

  • session token touch in the sessions middleware
  • Twilio song-queued-SMS API call

Async processing is great unless it doesn't work.

Potential solutions:

  • use Pub/Sub
  • use Cloud Tasks
  • switch to using Cloud Functions (I'm not actually sure this will solve it - Functions might have the same problem)

add user activity data layer

it would be nice to empower future UX features with some data behind users like:

  • number of queue drops from A -> B
  • persistence of drop activity in general
    • this would help expand into new features such as:
      • reactions to queue drops, and then the aggregation of those reactions to inform users on whether their queue drops are appreciated

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.