Skip to content

This is an experimental fork of the Supysonic code to implement a serverless deployment of the Subsonic API. Initial effort will be to use an S3 + Aurora PostgreSQL Serverless backend and Lambda functions for the API.

License

Notifications You must be signed in to change notification settings

digitizdat/supysonic-serverless

 
 

Repository files navigation

Supysonic

Supysonic is a Python implementation of the Subsonic server API.

Supysonic-Serverless is an experimental serverless fork of Supysonic, currently targeting the AWS environment.

Working notes

Initial assessment - 6 Aug 20

  • The Supysonic codebase is organized for execution with a web frontend to be used for administration. I'm going to bypass that in order to focus on getting the backend functions working in Lambda.

    • To this end, I've created the requirements.txt and supyapi.py files, which simplify deployment of just the API via Zappa.
  • Database schema

    • The datbase schema hosts metadata about the files hosted in folders, presumably on a filesystem.
    • The current PostgreSQL schema is very file-oriented, but I don't see any major issues with using it as is to organize objects in an S3 bucket. I think we can push all of the logic changes into the Folder Manager.
  • Folder Manager

    • I like how the Supysonic code has organized its structure for Flask, and especially how they've broken out the user management and folder management into the managers folder and assigned those functions to classes called FolderManager and UserManager.
    • I think we can genericize & modularize the FolderManager class to handle multiple types of backends.
      • Break out the current code into a filesystem FolderManager plugin/module
      • Create new code for an S3 plugin/module
  • Services breakout

    • I think we'll want a Lambda function to handle most of the API calls, one to provide that administrative front-end, which maybe we could reformulate as an SPA in a S3 bucket, and then one to be triggered by S3 bucket adds to refresh the index.

About

This is an experimental fork of the Supysonic code to implement a serverless deployment of the Subsonic API. Initial effort will be to use an S3 + Aurora PostgreSQL Serverless backend and Lambda functions for the API.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 89.2%
  • HTML 7.7%
  • TSQL 2.7%
  • Other 0.4%