Move backend files to root level for cleaner GitHub display

- Move all backend files from swingmusic/ to root level
- Backend files now display directly on GitHub repository page
- Keep client applications as submodules (swingmusic-android, swingmusic-desktop, swingmusic-webclient)
- Update README to reflect new structure (no cd swingmusic needed)
- Cleaner, more professional GitHub repository layout

Files moved to root:
- src/ (main source code)
- pyproject.toml, requirements.txt, run.py
- swingmusic.spec, uv.lock, version.txt
- services/

Result: GitHub shows backend files directly while maintaining organized structure
This commit is contained in:
Tomas Dvorak
2026-03-17 22:37:49 +01:00
parent 297315f5ba
commit 38f1981283
206 changed files with 0 additions and 3 deletions
+31
View File
@@ -0,0 +1,31 @@
import time
import schedule
from swingmusic.crons.mixes import Mixes
from swingmusic.lib.recipes.recents import RecentlyAdded, RecentlyPlayed
from swingmusic.lib.recipes.topstreamed import TopArtists
from swingmusic.utils.threading import background
@background
def start_cron_jobs():
"""
This is the function that triggers the cron jobs.
"""
# NOTE: RecentlyPlayed is not a CRON job, it's triggered here to
# populate the values for the very first time.
RecentlyPlayed()
RecentlyAdded()
# Initialized CRON jobs
TopArtists()
TopArtists(duration="week")
Mixes()
# Trigger all CRON jobs when the app is started.
schedule.run_all()
# Run all CRON jobs on a loop.
while True:
schedule.run_pending()
time.sleep(1)
+23
View File
@@ -0,0 +1,23 @@
import schedule
from abc import ABC, abstractmethod
class CronJob(ABC):
"""
A cron job that will be run on a regular interval.
"""
name: str
hours: int = 1
def __init__(self):
schedule.every(self.hours).hours.do(self.run)
@abstractmethod
def run(self):
"""
The function that will be called by the cron job.
"""
...
+25
View File
@@ -0,0 +1,25 @@
from swingmusic.crons.cron import CronJob
from swingmusic.lib.recipes.artistmixes import ArtistMixes
from swingmusic.lib.recipes.because import BecauseYouListened
class Mixes(CronJob):
"""
This cron job creates mixes displayed on the homepage.
"""
name: str = "mixes"
hours: int = 12
def __init__(self):
super().__init__()
def run(self):
"""
Creates the artist mixes
"""
ArtistMixes()
# INFO: Because you listened to artist items are generated using
# the artist mixes, so run them after the artist mixes are created.
BecauseYouListened()