Skip to content

Daily record recommendation from your Discogs collection to your inbox

License

Notifications You must be signed in to change notification settings

lrdiv/spin-cycle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

Spin Cycle

Daily record recommendation from your Discogs collection to your inbox
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contributing
  5. Contact

About The Project

Once your record collection grows past a certain size, analysis paralysis begins to creep in each time you attempt to figure out what to listen to next. Sure, you could go through your collection alphabetically (or however you sort it), but where's the fun in always knowing what the future holds? Embrace uncertainty and eliminate record analysis paralysis with Spin Cycle!

(back to top)

Built With

  • Nest.js
  • Angular
  • Nx

(back to top)

Getting Started

The easiest way to run the app locally is with Docker Compose.

The only third-party dependency at the moment is Mailgun. You should be able to create a free account for development testing purposes.

Prerequisites

  • Install Docker Desktop / Engine
    brew cask install docker
  • Create a new Discogs API Application to obtain a key and secret
  • To ensure you have test data, you'll want an active Discogs account with some items in a collection before running the app

Running via Docker Compose (Recommended)

  1. Clone the repo
    git clone https://github.com/lrdiv/spin-cycle.git
  2. Create a .env file for Docker Compose to use
    touch .env.docker
  3. Generate JWT and Session secrets (they should not be the same string)
    npm run secret:gen
  4. Fill in the needed API keys / secrets in the .env file
    export DISCOGS_KEY="discogs key"
    export DISCOGS_SECRET="discogs secret"
    export MAILGUN_KEY="mailgun key"
    export JWT_SECRET="jwt secret"
    export SESSION_SECRET="session secret"
  5. Start Docker Compose application stack
    docker compose up --build
  6. The app will be accessible at http://localhost:3000

Running via Nx

  1. Follow steps 1-4 from above. The only difference is that your .env file should be named .env (not .env.docker)
  2. Install global npm depencies
    npm install -g nx@latest
    npm install -g @angular/cli@19
  3. Install local dependencies
    npm install
  4. Run dockerized services
    docker compose up -d db redis
  5. Add the correct DATABASE_URL and REDIS_URL to .env
    export DATABASE_URL="postgres://spincycle:[email protected]:54321/spincycle"
    export REDIS_URL="redis://127.0.0.1:63791"
  6. Start the local API and client servers
    nx run-many -t serve
  7. The frontend app will be accessible at http://localhost:4200

(back to top)

Roadmap

  • Migrate from Nx to Turborepo
  • Mailer Microservice
  • NestJS Queues
  • Advanced Customization
    • Limit to media type (LP, CD, Cassette, etc)
    • Filter out box sets and/or singles
    • Specify time of day for email delivery
  • Write tests
  • Prettier pre-commit hook

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch
    git checkout -b feature/amazing-feature
  3. Commit your Changes
    git commit -m 'Add some Amazing Feature'
  4. Push to the Branch
    git push origin feature/amazing-feature
  5. Open a Pull Request

(back to top)

License

Distributed under the project_license. See LICENSE.txt for more information.

(back to top)

Contact

General Inquiries - [email protected]

Lawrence Davis - Maintainer - [email protected]

Project Link: https://github.com/lrdiv/spin-cycle

(back to top)

Acknowledgments

  • Discogs - For providing an incredible (and free) service to music collectors
  • Fly.io - For affordable app hosting

(back to top)