الملفات
ScanDrone/BACKEND_SETUP.md
2025-10-28 22:04:46 +03:00

2.0 KiB

Backend Setup Guide

This guide explains how to set up the backend for the contact form functionality.

Overview

The contact form uses a Node.js/Express backend with Nodemailer to send emails via Gmail SMTP. During development, Vite proxies API requests to the Node.js server.

Setup Instructions

1. Install Dependencies

Make sure all dependencies are installed:

npm install
# or
bun install

2. Configure Gmail SMTP

To send emails via Gmail:

  1. Enable 2-factor authentication on your Gmail account
  2. Generate an App Password:
    • Go to your Google Account settings
    • Navigate to Security > 2-Step Verification > App passwords
    • Generate a new app password for "Mail"
  3. Update the credentials in .env file:
    EMAIL_USER=scandrone308@gmail.com
    EMAIL_PASS=your-app-password
    

3. Run the Application

You'll need to run both the frontend development server and the backend server:

Terminal 1 (Frontend):

npm run dev
# or
bun run dev

Terminal 2 (Backend):

npm start
# or
bun run start

4. Production Deployment

For production deployment:

  1. Build the frontend:

    npm run build
    # or
    bun run build
    
  2. Run the server which will serve both the API and the built frontend:

    npm start
    # or
    bun run start
    

How It Works

  1. The React frontend sends form data to /api/contact via fetch
  2. Vite proxies /api requests to the Node.js server (during development)
  3. The Node.js server receives the data and sends an email using Nodemailer
  4. The email is sent to bayan10kh@gmail.com via Gmail SMTP

Troubleshooting

If emails aren't being sent:

  1. Check that your Gmail credentials are correct in the .env file
  2. Verify that you're using an App Password, not your regular Gmail password
  3. Ensure 2-factor authentication is enabled on your Gmail account
  4. Check the server console for error messages
  5. Verify that your hosting provider allows SMTP connections
  6. Make sure the EMAIL_USER and EMAIL_PASS variables are properly set in the .env file