Allow user to post song to AWS s3 bucket and enable user to play music in the browser
- Python flask
- SQLite
- S3 bucket
Create virtual environment on macOS and Linux:
$ python3 -m venv <envname>
on Windows:
$ py -m venv <envname>
Active virtual environment: on macOS and Linux:
$ source <envname>/bin/activate
on windows
$ . \<envname>\Scripts\activate
Check virtual environment on macOS and Linux:
$ which python
.../<envname>/bin/python
on windows
$ where python
.../<envname>/bin/python.exe
Leaving vitural environment
$ deactivate
In Terminal or in VsCode Terminal
$ pip install -r requirements.txt
Step1.Go to here to create a bucket
You don't need to chang any setting
Step1. Install AWS CLI Download and install the package from AWS webpage
Step2. configure confidentials
$ aws configure
# prompt input
AWS Access Key ID [********************]:<your access key>
AWS Secret Access Key [********************]:<your secret access key>
Default region name [us-east-2]:<your region>
Default output format [text]:
Access Key ID and Secret Access Key can be generated at AWS management console -> account -> my secret credentials
Step1. Go to cloudFront page and create a distribution
Step2. Go to line 244 in "user_route.py" in module > bluePrints
And change line 254 "your clounFront Domain name"
- Create api account
- Get an api key
- modify the ".env" file, if there is no ".env" create one
on macOS and Linux:
$ python3 main.py
on windows
$ py main.py
- Upgrade schema to use natural primary keys ie. International Standard Recording Code (ISRC)
- Switch to full 13 table SQL database
- Updated Schema includes all many-many relationships
- ie. playlist_songs, artist_songs
- Integrate authentication from Gurmeet's code to Master
- Implement Authorisation status levels such that:
- Only database admins can upload songs/create albums etc. to the database
- Users have read-only privileges, plus ability to create playlists
- Free user restrictions / paid user access
- Upload full test environment with 100 songs to test
- Create automated test suite with pytest and implement github actions for continuous integration
- Centralized error handling
- Write documentation