GitHunt
RA

raianah/serenade

Serenade is a multipurpose tool that allows users to create 'virtual date cards' for their loved individual and their dates, and displays a user's top most played tracks on Spotify & Last.fm.

๐Ÿ’Œ Serenade

โœจ Inspired by Receiptify, Serenade is a multipurpose tool that allows users to create 'virtual date cards' for their loved individual and their dates, and displays a user's top most played tracks on Spotify & Last.fm (soon).


Serenade - 0.0.4 beta dependency - django Instagram - @raianxh_

๐ŸŒŸ What is Serenade?

  • Serenade is a web applications that can create personalized date invitations, and create your ultimate music recap from Spotify & Last.fm. It has two parts:
    • ๐Ÿ’Œ Will You Date Me? (WYDM) โ€“ Create personalized and digitalized date invitations that truly stand out. Will you date me?
    • ๐ŸŽง Serenade Recap โ€“ Display your top tracks, artists, genres, and top trends with many colors to choose. Style your recap as if it will impress someone!
Music meets connection. ๐ŸŽถ

โœจ Features

โœ… Spotify Recap, with variations! โ€“ View your top tracks, artists, genres, & trends in a simple yet lovely design. Choose up to 5 colors for your preference!
โœ… Custom Date Invitations โ€“ Send personalized date invitations with unique slugs, which your other half can access it uniquely.
โœ… Beautiful Auto-Generated Images โ€“ Every recap & invite is instantly converted into a shareable image that can be accessible in your gallery. Save the moment!
โœ… Fully Mobile-Friendly โ€“ Designed to look & feel amazing on any device.

Your song, their spark.

๐ŸŽจ Screenshots

Preview #1 Preview #2 Preview #3 Preview #4 Preview #5

๐Ÿš€ Installation & Setup

1๏ธโƒฃ Clone the Repository

git clone https://github.com/raianah/serenade.git
cd serenade
  • If you know how to deal with django, you can do
django-admin startproject <folder-name>

2๏ธโƒฃ Install Dependencies

pip install -r requirements.txt

3๏ธโƒฃ Set Up Your Environment

  • Spotify clients can be generated here.
  • Last.fm clients can be generated here.
  • .env should be in root folder
export SPOTIPY_CLIENT_ID="your-client-id"
export SPOTIPY_CLIENT_SECRET="your-client-secret"
export SPOTIPY_REDIRECT_URI="http://localhost:8000/callback/"

export LASTFM_API_KEY = "your-api-key"
export LASTFM_API_SECRET = "your-api-secret"

export DB_USER = 'your-database-username'
export DB_PASS = 'your-database-password'
export DB_HOST = '127.0.0.1' # or your IP if you are hosting on a different server
export DB_PORT = '8000' # Default: 8000. Change this if you are hosting on a different server

4๏ธโƒฃ Set Up Your Database Information

  • You can pick between PostgreSQL, MySQL / MariaDB, or SQLite. You can name your database anything you want. Consider the checks that the project can use.
    • There should be atleast one (1) table.
    • There should be atleast five (5) columns inside the table.
    • If PostgreSQL was used, you must name the database first.

4๏ธโƒฃ Connect Your Database Information

  • wydm_project/settings.py - PostgreSQL
    • psycopg[binary] library must be installed.
import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'db_name', # Change this to your database name
        'USER': os.getenv("DB_USER"),
        'PASSWORD': os.getenv("DB_PASS"),
        'HOST': os.getenv("DB_HOST"),
        'PORT': os.getenv("DB_PORT"),
    }
}
  • wydm_project/settings.py - MySQL / MariaDB
    • mysqlclient library must be installed.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db_name', # Change this to your database name
        'USER': os.getenv("DB_USER"),
        'PASSWORD': os.getenv("DB_PASS"),
        'HOST': os.getenv("DB_HOST"),
        'PORT': os.getenv("DB_PORT"),
    }
}
  • wydm_project/settings.py - SQLite3
    • sqlite3 must be installed (should be pre-installed along with python).
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / "db.sqlite3", # change db.sqlite3 to your SQLite DB name
    }
}
  • After modifying wydm_project/settings.py, head to wydm_app/models.py and begin modifying the columns and tables you have created.
from django.db import models
import uuid

class Invitation(models.Model):
    sender_name = models.CharField(max_length=100, db_column="your-table-column")
    recipient_name = models.CharField(max_length=100, db_column="your-table-column")
    slug = models.SlugField(unique=True, default=uuid.uuid4, db_column="your-table-column", primary_key=True)
    option = models.IntegerField(db_column="your-table-column")
    message = models.TextField(db_column="your-table-column", default="")

    class Meta:
        db_table = "your-table-name"

4๏ธโƒฃ Run the Server

python manage.py migrate
python manage.py runserver

๐Ÿš€ Official Website