This commit is contained in:
2025-07-20 20:43:06 +02:00
parent 0abee5b794
commit 29592c7fc8
93 changed files with 23400 additions and 131 deletions

172
scripts/setup.sh Executable file
View File

@ -0,0 +1,172 @@
#!/bin/bash
# Bookmark Manager Setup Script
echo "🚀 Setting up Bookmark Manager Application..."
echo ""
# Function to check command exists
check_command() {
if ! command -v $1 &> /dev/null; then
echo "$1 is not installed or not in PATH"
return 1
else
echo "$1 found: $(which $1)"
return 0
fi
}
# Function to check service status
check_postgres_service() {
echo "🔍 Checking PostgreSQL service status..."
# Try different ways to check PostgreSQL status
if systemctl is-active --quiet postgresql 2>/dev/null; then
echo "✅ PostgreSQL service is running (systemctl)"
return 0
elif brew services list 2>/dev/null | grep -q "postgresql.*started"; then
echo "✅ PostgreSQL service is running (brew)"
return 0
elif pgrep -x postgres >/dev/null; then
echo "✅ PostgreSQL process is running"
return 0
else
echo "⚠️ PostgreSQL service may not be running"
echo " Try starting it with:"
echo " - Linux: sudo systemctl start postgresql"
echo " - macOS: brew services start postgresql"
return 1
fi
}
# Check prerequisites
echo "📋 Checking prerequisites..."
echo ""
NODE_OK=false
POSTGRES_OK=false
if check_command "node"; then
NODE_VERSION=$(node --version)
echo " Version: $NODE_VERSION"
NODE_OK=true
else
echo " Please install Node.js v16 or higher from https://nodejs.org/"
fi
if check_command "npm"; then
NPM_VERSION=$(npm --version)
echo " Version: $NPM_VERSION"
else
echo " npm should come with Node.js"
fi
if check_command "psql"; then
POSTGRES_VERSION=$(psql --version)
echo " Version: $POSTGRES_VERSION"
POSTGRES_OK=true
check_postgres_service
else
echo " Please install PostgreSQL from https://www.postgresql.org/download/"
fi
echo ""
if [ "$NODE_OK" = false ] || [ "$POSTGRES_OK" = false ]; then
echo "❌ Prerequisites not met. Please install missing components and try again."
exit 1
fi
# Navigate to backend directory
if [ ! -d "backend" ]; then
echo "❌ Backend directory not found. Are you in the correct directory?"
exit 1
fi
cd backend
# Install dependencies
echo "📦 Installing backend dependencies..."
if npm install; then
echo "✅ Dependencies installed successfully"
else
echo "❌ Failed to install dependencies"
echo " Try running: npm cache clean --force && npm install"
exit 1
fi
# Check if .env file exists
if [ ! -f .env ]; then
echo "📝 Creating environment file..."
if cp .env.example .env; then
echo "✅ Environment file created"
echo ""
echo "⚠️ IMPORTANT: You need to configure your database settings!"
echo ""
echo "1. Edit backend/.env file with your database credentials:"
echo " - DB_USER (usually 'postgres')"
echo " - DB_PASSWORD (your PostgreSQL password)"
echo " - JWT_SECRET (make it long and random)"
echo ""
echo "2. Create the databases:"
echo " psql -U postgres -c \"CREATE DATABASE bookmark_manager;\""
echo " psql -U postgres -c \"CREATE DATABASE bookmark_manager_test;\""
echo ""
echo "3. Then run: npm run db:init"
echo ""
echo "4. Finally start the app: npm run dev"
echo ""
exit 0
else
echo "❌ Failed to create environment file"
exit 1
fi
fi
# Test database connection
echo "🔍 Testing database connection..."
if npm run db:status >/dev/null 2>&1; then
echo "✅ Database connection successful"
else
echo "⚠️ Database connection failed"
echo " Please check your .env configuration"
echo " Run 'npm run db:diagnostics' for more details"
fi
# Initialize database
echo "🗄️ Initializing database..."
if npm run db:init; then
echo "✅ Database initialized successfully"
else
echo "❌ Database initialization failed"
echo ""
echo "Common solutions:"
echo "1. Make sure PostgreSQL is running"
echo "2. Check your .env file database credentials"
echo "3. Create databases manually:"
echo " psql -U postgres -c \"CREATE DATABASE bookmark_manager;\""
echo " psql -U postgres -c \"CREATE DATABASE bookmark_manager_test;\""
echo ""
echo "For detailed troubleshooting, see TROUBLESHOOTING_SETUP.md"
exit 1
fi
# Skip tests for now to avoid complexity
echo "⏭️ Skipping tests for initial setup (you can run 'npm test' later)"
echo ""
echo "🎉 Setup complete!"
echo ""
echo "To start the application:"
echo " cd backend"
echo " npm run dev"
echo ""
echo "Then open http://localhost:3001 in your browser"
echo ""
echo "Available commands:"
echo " npm start - Start production server"
echo " npm run dev - Start development server with auto-reload"
echo " npm test - Run all tests"
echo " npm run db:status - Check database status"
echo ""
echo "If you encounter issues, check TROUBLESHOOTING_SETUP.md"
echo ""