# Manual Setup Guide If the setup script is giving you errors, let's do this step by step manually. ## Step 1: Install Prerequisites ### Node.js - Download from: https://nodejs.org/ - Install version 16 or higher - Verify: `node --version` ### PostgreSQL - Download from: https://www.postgresql.org/download/ - Install version 12 or higher - Verify: `psql --version` ## Step 2: Start PostgreSQL ### Linux (Ubuntu/Debian): ```bash sudo systemctl start postgresql sudo systemctl enable postgresql ``` ### macOS: ```bash brew services start postgresql ``` ### Windows: - Start PostgreSQL service from Services panel - Or use pgAdmin ## Step 3: Create Databases ```bash # Connect to PostgreSQL (try one of these): sudo -u postgres psql # OR psql -U postgres # OR psql -U postgres -h localhost # Once connected, run: CREATE DATABASE bookmark_manager; CREATE DATABASE bookmark_manager_test; # Optional: Create a dedicated user CREATE USER bookmark_user WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE bookmark_manager TO bookmark_user; GRANT ALL PRIVILEGES ON DATABASE bookmark_manager_test TO bookmark_user; # Exit PostgreSQL \q ``` ## Step 4: Backend Setup ```bash # Navigate to backend directory cd backend # Install dependencies npm install # If npm install fails, try: npm cache clean --force rm -rf node_modules package-lock.json npm install ``` ## Step 5: Configure Environment ```bash # Copy environment file cp .env.example .env # Edit the .env file nano .env ``` **Minimal .env configuration:** ```env # Server NODE_ENV=development PORT=3001 # Database (CHANGE THESE VALUES) DB_HOST=localhost DB_PORT=5432 DB_NAME=bookmark_manager DB_USER=postgres DB_PASSWORD=your_postgres_password DB_SSL=false # JWT (CHANGE THIS TO A LONG RANDOM STRING) JWT_SECRET=your_very_long_random_secret_key_at_least_32_characters_long JWT_EXPIRES_IN=24h # Email (OPTIONAL - you can skip this for now) EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_SECURE=false EMAIL_USER= EMAIL_PASSWORD= EMAIL_FROM= # Other settings ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000 BASE_URL=http://localhost:3001 BCRYPT_SALT_ROUNDS=12 ``` ## Step 6: Test Database Connection ```bash # Test if you can connect with your credentials psql -h localhost -U postgres -d bookmark_manager # If successful, you should see: # bookmark_manager=# # Exit with: \q ``` ## Step 7: Initialize Database Tables ```bash # Initialize the database npm run db:init # If this fails, check what scripts are available: npm run # Try checking database status: npm run db:status ``` ## Step 8: Start the Application ```bash # Start in development mode npm run dev # You should see something like: # Server running on port 3001 # Database connected successfully ``` ## Step 9: Test the Application 1. Open your browser to: `http://localhost:3001` 2. You should see the bookmark manager interface 3. Try registering a new account ## Troubleshooting Common Issues ### "npm install" fails ```bash # Clear npm cache npm cache clean --force # Delete node_modules and try again rm -rf node_modules package-lock.json npm install # If still fails, try with legacy peer deps npm install --legacy-peer-deps ``` ### "Database connection failed" ```bash # Check if PostgreSQL is running sudo systemctl status postgresql # Linux brew services list | grep postgresql # macOS # Test connection manually psql -h localhost -U postgres # Check your .env file values match your PostgreSQL setup ``` ### "Database does not exist" ```bash # Connect to PostgreSQL and create databases sudo -u postgres psql CREATE DATABASE bookmark_manager; CREATE DATABASE bookmark_manager_test; \q ``` ### "Authentication failed for user" ```bash # Reset PostgreSQL password sudo -u postgres psql ALTER USER postgres PASSWORD 'newpassword'; \q # Update your .env file with the new password ``` ### "Port already in use" ```bash # Find what's using the port lsof -i :3001 # Kill the process kill -9 # Or change the port in .env PORT=3002 ``` ### "Permission denied" ```bash # Make sure you have write permissions chmod 755 backend/ chmod 644 backend/.env ``` ## Minimal Test Without Database If you're still having database issues, you can test if the basic setup works: ```bash cd backend # Create a simple test file echo "console.log('Node.js works!'); console.log('Dependencies:', Object.keys(require('./package.json').dependencies));" > test.js # Run it node test.js # Clean up rm test.js ``` ## Get Specific Help **If you're still having issues, please share:** 1. Your operating system 2. The exact command you ran 3. The complete error message 4. Output of these commands: ```bash node --version npm --version psql --version pwd ls -la backend/ ``` This will help me give you more specific guidance! ## Alternative: Docker Setup (Advanced) If you're comfortable with Docker, I can provide a Docker setup that handles the database automatically. Let me know if you'd prefer that approach.