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.
- 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.
- 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
ProposalβIn ProgressβSubmittedβRevision RequestedβCompleted.
- 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.
- 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.
- Granular control over users, orders, and payments.
- Financial dashboards and reporting (PDF export via WeasyPrint).
- User verification and role-based access control.
| Category | Technologies |
|---|---|
| Backend | Django 6.0+, Python 3.10+ |
| Frontend | HTML5, Tailwind CSS, JavaScript (Vanilla ES6+) |
| Database | PostgreSQL (SQLite for dev) |
| Payments | Razorpay API |
| Authentication | Django Auth + Role-Based Access Control |
| PDF Export | WeasyPrint |
| Deployment | Ready for Render, Heroku, AWS |
β
Post detailed artwork commission requests
β
Set budget and timeline preferences
β
Browse artist portfolios and reviews
β
Receive and review artist proposals
β
Secure payment via Razorpay escrow
β
Track order status in real-time
β
Request revisions from artists
β
Download final artwork after approval
β
Create professional portfolios with past work
β
Discover commission opportunities
β
Submit competitive proposals
β
Upload watermarked previews for review
β
Track earnings and completed orders
β
Manage multiple active commissions
β
Build reputation through reviews
β
Comprehensive dashboard
β
User & artist management
β
Payment and revenue tracking
β
Dispute resolution tools
β
Category and tag management
β
PDF financial reports
- User: Extended Django user with role-based permissions (client, artist, admin)
- Workflow: Commission request lifecycle management
- Proposal: Artist proposals with pricing and timeline
- Order: Binding contract between client and artist
- Execution: Payment and fulfillment tracking
- Dispute: Conflict resolution with resolution history
- CSRF token protection on all forms
- State-machine validation to prevent workflow bypasses
- Escrow-based payment system (funds never directly transferred)
- Role-based access control (RBAC)
- Secure file upload with verification
- SQL injection prevention via Django ORM
- Python 3.10+
- PostgreSQL 12+ (or SQLite for development)
- pip and virtualenv
-
Clone the Repository
git clone https://github.com/AmalSKumar0/Velora.git cd Velora -
Create Virtual Environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
-
Configure Environment
cp .env.example .env # Edit .env with your Razorpay API keys and database config -
Run Migrations
python manage.py migrate
-
Create Superuser
python manage.py createsuperuser
-
Run Development Server
python manage.py runserver
Visit
http://localhost:8000/
REQUEST OPEN
β
ARTIST SUBMITS PROPOSAL
β
CLIENT ACCEPTS PROPOSAL β ORDER CREATED
β
CLIENT PAYS β FUNDS IN ESCROW
β
ARTIST UPLOADS PREVIEW (watermarked)
β
CLIENT REVIEW
ββ APPROVE β FUNDS RELEASED TO ARTIST
ββ REQUEST REVISION β Back to work phase
ββ DISPUTE β Admin resolution
- Order Creation: Client accepts artist's proposal
- Payment Capture: Razorpay captures funds into escrow (status:
held) - Work Phase: Artist works on commission
- Submission: Artist uploads preview with watermark
- Approval: Client reviews and approves
- Release: Funds automatically released to artist (status:
released) - Download: Client can now download final high-resolution artwork
If issues arise:
- Raise Dispute: Either party freezes the workflow
- Admin Review: Admin reviews evidence, timeline, and reason
- Resolution Options:
- Refund Client: Cancel order, return funds via Razorpay
- Release to Artist: Award funds to artist despite disagreement
- Dismiss: Unlock workflow to continue normally
# Requires these environment variables:
RAZORPAY_KEY_ID=xxx
RAZORPAY_KEY_SECRET=xxx
DATABASE_URL=postgresql://...
SECRET_KEY=xxx
ALLOWED_HOSTS=yourdomain.comThe app is pre-configured with:
- WhiteNoise for static file serving
- Gunicorn as WSGI server
- PostgreSQL as primary database
Velora/
βββ core/ # Main Django project config
βββ workflows/ # Core workflow logic
β βββ models.py # Order, Proposal, Execution models
β βββ views.py # API endpoints
β βββ services/ # Business logic
βββ integrations/ # Razorpay & external services
βββ templates/ # HTML templates (Neo-Brutalist design)
βββ static/
β βββ css/ # Tailwind CSS
β βββ js/ # Vanilla JavaScript
βββ management/ # Admin commands
βββ requirements.txt # Dependencies
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Automated payment scheduling (retainers)
- Portfolio analytics and insights
- Referral program for artists
- Mobile-friendly improvements
- Real-time notifications via WebSockets
- AI-powered commission matching
- Subscription tiers for unlimited commissions
- Integration with other payment gateways (Stripe, PayPal)
Amal S Kumar
Full-Stack Developer | Payment Systems Specialist | Django Enthusiast
π§ Email
π Portfolio
πΌ LinkedIn
For questions or issues:
- Open an issue on GitHub
- Check existing documentation in
/docsfolder - Review architecture guide:
documentation/architecture.md
Built with β€οΈ for digital artists and creators
