Files
site_backend/README.md

4.4 KiB

Zoneco ORG Backend API

A professional Django REST Framework backend for Zoneco ORG with PostgreSQL database.

Features

  • Contact Us API: Handle contact form submissions with name, email/phone, description, and category
  • Composition API: Manage compositions with name, description, and image
  • Campaign API: Manage campaigns with name, description, start/end times, and image
  • RESTful API: Full CRUD operations for all models
  • CORS Enabled: Configured for frontend integration
  • Image Upload: Support for image uploads with proper media handling
  • Admin Panel: Django admin interface for managing data

Database Configuration

  • Database Name: Zoneco_ORG
  • User: postgres
  • Password: postgres
  • Host: localhost
  • Port: 5432

Installation

  1. Install Python dependencies:

    pip install -r requirements.txt
    
  2. Create PostgreSQL database:

    CREATE DATABASE "Zoneco_ORG";
    
  3. Run migrations:

    python manage.py makemigrations
    python manage.py migrate
    
  4. Create superuser (optional):

    python manage.py createsuperuser
    
  5. Run development server:

    python manage.py runserver
    

The API will be available at http://localhost:8000/api/

API Endpoints

Contact Us

  • GET /api/contact-us/ - List all contacts
  • POST /api/contact-us/ - Create new contact (public)
  • GET /api/contact-us/{id}/ - Get specific contact
  • PUT /api/contact-us/{id}/ - Update contact (authenticated)
  • PATCH /api/contact-us/{id}/ - Partial update (authenticated)
  • DELETE /api/contact-us/{id}/ - Delete contact (authenticated)
  • GET /api/contact-us/by_category/?category={category} - Filter by category

Compositions

  • GET /api/compositions/ - List all compositions
  • POST /api/compositions/ - Create new composition (authenticated)
  • GET /api/compositions/{id}/ - Get specific composition
  • PUT /api/compositions/{id}/ - Update composition (authenticated)
  • PATCH /api/compositions/{id}/ - Partial update (authenticated)
  • DELETE /api/compositions/{id}/ - Delete composition (authenticated)

Campaigns

  • GET /api/campaigns/ - List all campaigns
  • POST /api/campaigns/ - Create new campaign (authenticated)
  • GET /api/campaigns/{id}/ - Get specific campaign
  • PUT /api/campaigns/{id}/ - Update campaign (authenticated)
  • PATCH /api/campaigns/{id}/ - Partial update (authenticated)
  • DELETE /api/campaigns/{id}/ - Delete campaign (authenticated)
  • GET /api/campaigns/active/ - Get active campaigns
  • GET /api/campaigns/upcoming/ - Get upcoming campaigns
  • GET /api/campaigns/ended/ - Get ended campaigns

Models

ContactUs

  • name (CharField): Name of the contact
  • email_or_phone (CharField): Email or phone number
  • description (TextField): Message description
  • category (CharField): Category (همکاری, فروش, پشتیبانی, درخواست مشاور, سایر)
  • created_at (DateTimeField): Creation timestamp
  • updated_at (DateTimeField): Last update timestamp

Composition

  • name (CharField): Name of the composition
  • description (TextField): Description
  • image (ImageField): Composition image
  • created_at (DateTimeField): Creation timestamp
  • updated_at (DateTimeField): Last update timestamp

Campaign

  • name (CharField): Campaign name
  • description (TextField): Campaign description
  • start_time (DateTimeField): Campaign start time
  • end_time (DateTimeField): Campaign end time
  • image (ImageField): Campaign image
  • created_at (DateTimeField): Creation timestamp
  • updated_at (DateTimeField): Last update timestamp

Admin Panel

Access the Django admin panel at http://localhost:8000/admin/ after creating a superuser.

CORS Configuration

CORS is configured to allow requests from:

  • http://localhost:5173 (Vite default)
  • http://localhost:3000
  • http://127.0.0.1:5173
  • http://127.0.0.1:3000

Media Files

Uploaded images are stored in the media/ directory:

  • Composition images: media/compositions/
  • Campaign images: media/campaigns/

Development Notes

  • The backend uses Django REST Framework for API endpoints
  • PostgreSQL is used as the database
  • Image uploads are handled via multipart/form-data
  • All models include proper indexing for performance
  • Serializers include validation and proper error handling
  • Viewsets provide both public read access and authenticated write access