Initial commit - SoundWave v1.0

- Full PWA support with offline capabilities
- Comprehensive search across songs, playlists, and channels
- Offline playlist manager with download tracking
- Pre-built frontend for zero-build deployment
- Docker-based deployment with docker compose
- Material-UI dark theme interface
- YouTube audio download and management
- Multi-user authentication support
This commit is contained in:
Iulian 2025-12-16 23:43:07 +00:00
commit 51679d1943
254 changed files with 37281 additions and 0 deletions

View file

View file

@ -0,0 +1,5 @@
"""App settings admin"""
from django.contrib import admin
# No models to register for appsettings

View file

@ -0,0 +1,6 @@
"""App settings models - configuration stored in database"""
from django.db import models
# Settings can be stored in database or managed through environment variables
# For now, we'll use environment variables primarily

View file

@ -0,0 +1,12 @@
"""App settings serializers"""
from rest_framework import serializers
class AppConfigSerializer(serializers.Serializer):
"""Application configuration"""
app_name = serializers.CharField(default='SoundWave')
version = serializers.CharField(default='1.0.0')
sw_host = serializers.URLField()
audio_quality = serializers.CharField(default='best')
auto_update_ytdlp = serializers.BooleanField(default=False)

View file

@ -0,0 +1,9 @@
"""App settings URL patterns"""
from django.urls import path
from appsettings.views import AppConfigView, BackupView
urlpatterns = [
path('config/', AppConfigView.as_view(), name='app-config'),
path('backup/', BackupView.as_view(), name='backup'),
]

View file

@ -0,0 +1,37 @@
"""App settings API views"""
from django.conf import settings
from rest_framework.response import Response
from appsettings.serializers import AppConfigSerializer
from common.views import ApiBaseView, AdminOnly
class AppConfigView(ApiBaseView):
"""Application configuration endpoint"""
def get(self, request):
"""Get app configuration"""
config = {
'app_name': 'SoundWave',
'version': '1.0.0',
'sw_host': settings.SW_HOST,
'audio_quality': 'best',
'auto_update_ytdlp': settings.SW_AUTO_UPDATE_YTDLP,
}
serializer = AppConfigSerializer(config)
return Response(serializer.data)
class BackupView(ApiBaseView):
"""Backup management endpoint"""
permission_classes = [AdminOnly]
def get(self, request):
"""Get list of backups"""
# TODO: Implement backup listing
return Response({'backups': []})
def post(self, request):
"""Create backup"""
# TODO: Implement backup creation
return Response({'message': 'Backup created'})