Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
932bcd0
Update README.md
myndaaa Aug 8, 2025
1c9788e
Update README.md
myndaaa Aug 8, 2025
52f2fde
added genre and implementations
myndaaa Aug 8, 2025
da0dc1f
changes deps location / file path
myndaaa Aug 8, 2025
7de0683
fixed imports
myndaaa Aug 8, 2025
5906821
creation of song crud and api endpoints
myndaaa Aug 8, 2025
6150156
admin seed files
myndaaa Aug 8, 2025
53ed52c
docker failed to read .env credentials
myndaaa Aug 8, 2025
94bb0aa
dockerization altered to multi stage to reduce image volume
myndaaa Aug 10, 2025
8b3c90e
deleted frotnend
myndaaa Aug 10, 2025
3398683
deletion of frontend
myndaaa Aug 10, 2025
ac002b9
like endpoint and routes
myndaaa Aug 10, 2025
6447fdb
implemented following feature
myndaaa Aug 11, 2025
cb71088
altered model to add field is_cleared, to make users capable of clear…
myndaaa Aug 11, 2025
13d4a51
history feature implementation
myndaaa Aug 11, 2025
5789326
playlist implementation
myndaaa Aug 11, 2025
7e74536
Playlist song api endpoints implementation
myndaaa Aug 12, 2025
347fc1c
added collaboration fields
myndaaa Aug 12, 2025
48cd7d5
added collaboration features and its endpoints
myndaaa Aug 12, 2025
29fc011
added dependencies
myndaaa Aug 12, 2025
7147b66
updated album and album songs
myndaaa Aug 12, 2025
193de5d
File upload and streaming functions and endpoints
myndaaa Aug 12, 2025
49d058d
Merge branch 'sub-feat/crud-artists-bands' into sub-feat/crud-genre-s…
myndaaa Aug 19, 2025
5c605f2
Merge branch 'sub-feat/crud-artists-bands' into feature/song-service
myndaaa Aug 19, 2025
28f39a2
Merge branch 'sub-feat/crud-artists-bands' into sub-feat/crud-genre-s…
myndaaa Aug 22, 2025
d5113ab
Merge branch 'sub-feat/crud-artists-bands' into feature/song-service
myndaaa Aug 22, 2025
269864f
Fix for PR issues:
myndaaa Aug 25, 2025
8fc2e54
linter issue fix
myndaaa Aug 25, 2025
40aad43
- added to do comment on usage of proper rest naming and using names …
myndaaa Aug 25, 2025
df522a9
brought changes from parent changes caused by fixes due to PR feedbacks
myndaaa Aug 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 34 additions & 14 deletions backend/.env.example
Original file line number Diff line number Diff line change
@@ -1,21 +1,41 @@
# App Settings
app_name=
app_env=
app_version=

APP_NAME=musicstreamer
APP_ENV=development
APP_VERSION=1.0.0

# Database Settings
postgres_db=
postgres_user=
postgres_password=
postgres_server=
postgres_port=
POSTGRES_DB=music_stream_secure
POSTGRES_USER=music_admin
POSTGRES_PASSWORD=your_secure_password_here
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432

# JWT Authentication
jwt_secret_key=
jwt_algorithm=
access_token_expire_minutes=
refresh_token_expire_minutes=
JWT_SECRET_KEY=your_jwt_secret_key_here
JWT_ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=60
REFRESH_TOKEN_EXPIRE_MINUTES=43200

# Password Security
password_pepper=
PASSWORD_PEPPER=password_pepper_here

# Test User Credentials
TEST_ADMIN_USERNAME=test_admin
TEST_ADMIN_EMAIL=admin@test.com
TEST_ADMIN_PASSWORD=AdminPass123!
TEST_ADMIN_FIRST_NAME=Test
TEST_ADMIN_LAST_NAME=Admin

TEST_MUSICIAN_USERNAME=test_musician
TEST_MUSICIAN_EMAIL=musician@test.com
TEST_MUSICIAN_PASSWORD=MusicianPass123!
TEST_MUSICIAN_FIRST_NAME=Test
TEST_MUSICIAN_LAST_NAME=Musician
TEST_MUSICIAN_STAGE_NAME=Test Musician
TEST_MUSICIAN_BIO=A test musician for development

TEST_LISTENER_USERNAME=test_listener
TEST_LISTENER_EMAIL=listener@test.com
TEST_LISTENER_PASSWORD=ListenerPass123!
TEST_LISTENER_FIRST_NAME=Test
TEST_LISTENER_LAST_NAME=Listener
63 changes: 63 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Upload directories - exclude all uploaded files
uploads/
uploads/*

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Logs
*.log
logs/

# Database
*.db
*.sqlite3

# Temporary files
*.tmp
*.temp
temp/
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
"""Add playlist sharing and collaboration fields

Revision ID: 51eb42f5babc
Revises: 95b5ebff5e7a
Create Date: 2025-08-12 03:31:03.437557

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '51eb42f5babc'
down_revision: Union[str, Sequence[str], None] = '95b5ebff5e7a'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('playlists', sa.Column('share_token', sa.String(length=64), nullable=True))
op.add_column('playlists', sa.Column('allow_collaboration', sa.Boolean(), nullable=True))

# Set default value for existing records
op.execute("UPDATE playlists SET allow_collaboration = FALSE WHERE allow_collaboration IS NULL")

# Make the column NOT NULL after setting default values
op.alter_column('playlists', 'allow_collaboration', nullable=False)

op.create_unique_constraint(None, 'playlists', ['share_token'])
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint(None, 'playlists', type_='unique')
op.drop_column('playlists', 'allow_collaboration')
op.drop_column('playlists', 'share_token')
# ### end Alembic commands ###
34 changes: 34 additions & 0 deletions backend/alembic/versions/95b5ebff5e7a_add_is_cleared_to_history.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""add_is_cleared_to_history

Revision ID: 95b5ebff5e7a
Revises: 407106d49b66
Create Date: 2025-08-11 06:37:39.301845

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '95b5ebff5e7a'
down_revision: Union[str, Sequence[str], None] = '407106d49b66'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('histories', sa.Column('is_cleared', sa.Boolean(), nullable=False))
op.create_index('idx_history_cleared', 'histories', ['is_cleared'], unique=False)
# ### end Alembic commands ###


def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index('idx_history_cleared', table_name='histories')
op.drop_column('histories', 'is_cleared')
# ### end Alembic commands ###
Loading