✨ 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 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!
✅ 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.
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>
pip install -r requirements.txt
- 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
- 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.
wydm_project/settings.py
- PostgreSQLpsycopg[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 / MariaDBmysqlclient
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
- SQLite3sqlite3
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 towydm_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"
python manage.py migrate
python manage.py runserver