Skip to content

Latest commit

 

History

History
149 lines (116 loc) · 5.67 KB

File metadata and controls

149 lines (116 loc) · 5.67 KB
Velora Digital Art Marketplace

Velora - Digital Art Marketplace

A Neo-Brutalist Platform Connecting Clients with Talented Digital Artists

Django Python Tailwind CSS Razorpay


🌟 About The Project

Velora is a fully-featured digital art commission marketplace built on a robust Django backend. It features a striking Neo-Brutalist design system and provides a secure, end-to-end workflow for artists and clients to collaborate on custom artwork. From initial request to final escrow payout, Velora handles the entire lifecycle securely and beautifully.

🚀 Key Achievements & Features

🎨 Seamless Neo-Brutalist Design

  • Transitioned entirely from React to server-side rendered Django HTML templates.
  • Designed an aesthetic interface characterized by stark contrasts, solid black borders, drop shadows, and vibrant accent colors using Vanilla HTML and Tailwind CSS.

💼 Client & Artist Workflows

  • Clients can post detailed commission requests, specify budget constraints, upload references, and browse artist portfolios.
  • Artists have dedicated profiles, can showcase their past work, filter open requests by tag, and submit competitive proposals with delivery timelines.
  • Real-time order tracking: Visual pipelines from ProposalIn ProgressSubmittedRevision RequestedCompleted.

🛡️ Secure Escrow & Payments

  • Fully integrated with Razorpay.
  • Buyer Protection: When a proposal is accepted, the client's funds are captured and held securely in Escrow.
  • Funds are only released to the artist after the client explicitly reviews the watermarked preview and approves the final high-resolution delivery.
  • Comprehensive security implementations preventing CSRF attacks and state-machine bypass vulnerabilities.

⚖️ Dispute Management System

  • If an order goes wrong, either the client or artist can freeze the workflow by raising a dispute.
  • An advanced administrative resolution engine allows admins to:
    • Review the dispute reason, escrow details, and submission timeline.
    • Refund the Client: Cancels the order and returns funds via Razorpay.
    • Release to Artist: Bypasses the client and releases funds to the artist.
    • Dismiss Case: Unfreezes the workflow to continue normally.

📊 Admin Tools

  • Granular control over users, orders, and payments.
  • Generation of detailed PDF Financial Reports directly from the dashboard using WeasyPrint.

🔑 Secure Password Reset (OTP-based)

  • Asynchronous OTP Delivery: Sends high-security 6-digit verification codes using Celery and Redis asynchronously, ensuring zero frontend form submission latency.
  • Frontend Match & Security Validation: Features instant match verification for password fields and a clean toggle to show/hide passwords using Lucide icons.
  • Interactive UI: Custom OTP numeric verification layout to enter codes seamlessly.

📚 Documentation

For a deeper technical dive into the architecture and state machines, check out the documentation:


🛠️ Technology Stack

Category Technology
Backend Framework Django, Python
Frontend Styling Tailwind CSS, HTML5, Vanilla JavaScript
Database MySQL
Payment Gateway Razorpay SDK
Report Generation WeasyPrint
Task Queue & Cache Celery, Redis

💻 Getting Started

Follow these steps to run Velora locally on your machine.

Prerequisites

  • Python 3.x
  • MySQL Server
  • Redis Server (for Celery background tasks)

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/velora.git
    cd velora
  2. Install dependencies:

    pip install -r requirements.txt
  3. Environment Setup: Create a .env file in the root directory containing your credentials:

    SECRET_KEY=your_django_secret
    DEBUG=True
    DBUser=root
    DBPass=yourpassword
    RAZORPAY_KEY_ID=your_razorpay_key
    RAZORPAY_KEY_SECRET=your_razorpay_secret
    
    # SMTP Settings (for Email OTP)
    smtp_server=smtp.gmail.com
    smtp_port=587
    email_id=your_email@gmail.com
    password_email=your_app_specific_password
    
    # Celery & Redis Settings
    CELERY_BROKER_URL=redis://127.0.0.1:6379/0
    CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/0
  4. Database Migrations:

    python manage.py makemigrations
    python manage.py migrate
  5. Start the Services and Development Server:

    First, start Redis:

    redis-server

    In a separate terminal, start the Celery worker:

    celery -A artwork_system worker --loglevel=info

    Then, start the Django server:

    python manage.py runserver

    Navigate to http://127.0.0.1:8000/ in your browser.


Built with precision and style.