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

152
setup.sh Executable file
View file

@ -0,0 +1,152 @@
#!/bin/bash
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}"
echo "╔════════════════════════════════════════╗"
echo "║ 🎵 SoundWave - Pre-Launch Setup 🎵 ║"
echo "╔════════════════════════════════════════╗"
echo -e "${NC}"
echo ""
# Navigate to project directory
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"
# Step 1: Create .env file
echo -e "${YELLOW}📝 Step 1/6: Creating environment file...${NC}"
if [ ! -f .env ]; then
cp .env.example .env
echo -e "${GREEN}✅ Created .env file with default settings${NC}"
echo -e "${YELLOW} Default credentials: admin / soundwave${NC}"
else
echo -e "${BLUE} .env file already exists${NC}"
fi
echo ""
# Step 2: Create directories
echo -e "${YELLOW}📁 Step 2/6: Creating volume directories...${NC}"
mkdir -p audio cache es redis
chmod -R 755 audio cache es redis 2>/dev/null || true
echo -e "${GREEN}✅ Directories created: audio, cache, es, redis${NC}"
echo ""
# Step 3: Check if npm is installed
echo -e "${YELLOW}🔍 Step 3/6: Checking prerequisites...${NC}"
if ! command -v npm &> /dev/null; then
echo -e "${RED}❌ npm is not installed. Please install Node.js and npm first.${NC}"
exit 1
fi
echo -e "${GREEN}✅ npm found: $(npm --version)${NC}"
if ! command -v docker &> /dev/null; then
echo -e "${RED}❌ docker is not installed. Please install Docker first.${NC}"
exit 1
fi
echo -e "${GREEN}✅ docker found: $(docker --version | cut -d' ' -f3)${NC}"
echo ""
# Step 4: Build frontend
echo -e "${YELLOW}⚛️ Step 4/6: Building React frontend...${NC}"
cd frontend
if [ ! -d "node_modules" ]; then
echo "Installing dependencies..."
npm install
fi
echo "Building production bundle..."
npm run build
cd ..
echo -e "${GREEN}✅ Frontend built successfully${NC}"
echo ""
# Step 5: Start database services
echo -e "${YELLOW}🗄️ Step 5/6: Starting database services...${NC}"
docker compose up -d soundwave-es soundwave-redis
echo -e "${BLUE}⏳ Waiting 30 seconds for Elasticsearch to initialize...${NC}"
for i in {30..1}; do
echo -ne "${YELLOW} $i seconds remaining...\r${NC}"
sleep 1
done
echo -e "${GREEN}✅ Database services ready${NC}"
echo ""
# Step 6: Start main application
echo -e "${YELLOW}🚀 Step 6/6: Starting SoundWave application...${NC}"
docker compose up -d soundwave
echo -e "${BLUE}⏳ Waiting for application to start...${NC}"
sleep 10
echo -e "${GREEN}✅ Application container started${NC}"
echo ""
# Run migrations
echo -e "${YELLOW}🔄 Running database migrations...${NC}"
echo "Creating migrations for audio models..."
docker exec soundwave python manage.py makemigrations audio || echo "No new migrations needed"
echo "Applying all migrations..."
docker exec soundwave python manage.py migrate
echo -e "${GREEN}✅ Migrations completed${NC}"
echo ""
# Create superuser
echo -e "${YELLOW}👤 Setting up admin user...${NC}"
docker exec soundwave python manage.py shell << 'PYEOF'
from django.contrib.auth import get_user_model
import os
User = get_user_model()
username = os.getenv('SW_USERNAME', 'admin')
password = os.getenv('SW_PASSWORD', 'soundwave')
if not User.objects.filter(username=username).exists():
User.objects.create_superuser(username, 'admin@soundwave.local', password)
print(f'✅ Admin user created: {username}')
else:
print(f' Admin user already exists: {username}')
PYEOF
echo ""
# Collect static files
echo -e "${YELLOW}📦 Collecting static files...${NC}"
docker exec soundwave python manage.py collectstatic --noinput
echo -e "${GREEN}✅ Static files collected${NC}"
echo ""
# Check container health
echo -e "${YELLOW}🏥 Checking service health...${NC}"
echo ""
docker compose ps
echo ""
# Final summary
echo -e "${GREEN}"
echo "╔════════════════════════════════════════╗"
echo "║ 🎉 Setup Complete! 🎉 ║"
echo "╚════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
echo -e "${BLUE}📊 Service Information:${NC}"
echo -e "${GREEN} 🌐 Application:${NC} http://localhost:123456"
echo -e "${GREEN} 👤 Username:${NC} admin"
echo -e "${GREEN} 🔑 Password:${NC} soundwave"
echo ""
echo -e "${BLUE}📝 Useful Commands:${NC}"
echo -e "${YELLOW} View logs:${NC} docker compose logs -f soundwave"
echo -e "${YELLOW} Stop services:${NC} docker compose down"
echo -e "${YELLOW} Restart:${NC} docker compose restart soundwave"
echo -e "${YELLOW} Shell access:${NC} docker exec -it soundwave bash"
echo ""
echo -e "${BLUE}🧪 Next Steps:${NC}"
echo " 1. Open http://localhost:123456 in your browser"
echo " 2. Login with admin / soundwave"
echo " 3. Test local file upload"
echo " 4. Install PWA (look for install icon in address bar)"
echo " 5. Test offline mode"
echo ""
echo -e "${GREEN}🎵 Enjoy SoundWave! 🎵${NC}"
echo ""