Deployed Link: https://taskhub-ai-visual.vercel.app/
(NOTE: Deployed on Vercel+Docker+Render but Render sleeps backend frequently, especially ML due to heavy loading which might cause issues and Railway is paid for deployment.)
Video: Demostration video
TaskHub is a full-stack task management platform that combines workflow management with an AI-powered Product Photography Studio.
Admins can assign product photography tasks to users, while users generate professional AI-enhanced product images and submit them for review. The platform supports role-based access control, email notifications, asynchronous image generation, task review workflows, and analytics.
- Create product photography tasks
- Upload product reference images
- Assign tasks to users
- Accept submissions
- Request revisions
- View all users and tasks
- Receive submission notifications
- Receive assigned tasks
- View personal task dashboard
- Generate AI product images
- Regenerate images as needed
- Task To-do List
- Submit completed work
- Receive acceptance or revision notifications
Each task requires generation of 8 images:
| Type | Count |
|---|---|
| White Background | 1 |
| Theme-Based Backgrounds | 2 |
| Creative Backgrounds | 2 |
| Model Wearing (Front) | 1 |
| Model Wearing (Side) | 1 |
| Model Wearing (Close-up) | 1 |
| Total | 8 |
- Pure white (#FFFFFF)
- E-commerce ready
- Clean product extraction
Examples:
- Luxury marble surface
- Velvet premium display
- High-end showroom environment
Examples:
- Luxury interior scenes
- Natural outdoor settings
- Editorial-style compositions
- Front view
- 45ยฐ side view
- Close-up product shot
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Frontend: Next.js in TS โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Flask Backend โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โโโโโโโโโโดโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Supabase โ โ Redis Queue โ
โ PostgreSQLโ โ + Celery โ
โโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโ
โ AI Processing โ
โ Pipeline โ
โโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโ
โ Image Storage โ
โโโโโโโโโโโโโโโโโโโ
- Admin creates a task
- Product image uploaded with reference
- Task assigned to the user
- User receives email notification
- User generates AI variations
- Images stored and tracked
- User submits task
- Admin receives notification
- Admin accepts or requests revision
- Next.js
- TypeScript
- Tailwind CSS
- Flask
- Celery
- Redis
- Docker
- Supabase PostgreSQL
- Google OAuth 2.0
- GitHub OAuth 2.0
- Resend
- Background Removal
- Product Extraction
- Prompt Engineering
- Image Generation Pipeline using stability AI, Cloudflare AI
Stores platform users and authentication details.
| Field | Type |
|---|---|
| id | UUID |
| TEXT | |
| full_name | TEXT |
| role | TEXT |
| provider | TEXT |
| created_at | TIMESTAMP |
| updated_at | TIMESTAMP |
Stores assigned photography tasks.
| Field | Type |
|---|---|
| id | UUID |
| task_title | TEXT |
| product_name | TEXT |
| product_image_url | TEXT |
| gender | TEXT |
| assigned_user_id | UUID |
| admin_id | UUID |
| status | TEXT |
| revision_count | INT4 |
| created_at | TIMESTAMP |
| updated_date | TIMESTAMP |
Stores AI-generated outputs.
| Field | Type |
|---|---|
| id | UUID |
| task_id | UUID |
| image_url | TEXT |
| prompt_used | TEXT |
| image_type | TEXT |
| created_at | TIMESTAMP |
pending
โ
assigned
โ
in_progress
โ
submitted
โ
accepted
Revision workflow:
submitted
โ
revision_requested
โ
in_progress
The uploaded product image is isolated from its background using automated background removal techniques.
The system extracts:
- Product category
- Product colors
- Product characteristics
Dynamic prompts are created using:
- Product metadata
- Image type
- Desired angle
- Quality constraints
The AI pipeline generates:
- White background image
- Theme variation #1
- Theme variation #2
- Creative variation #1
- Creative variation #2
- Model front view
- Model side view
- Model close-up
Generated outputs and metadata are stored and linked to the associated task in Cloudinary.
POST /api/auth/signup
POST /api/auth/login
POST /api/auth/forgot-password
POST /api/auth/oauth/callback
GET /api/auth/me
GET /api/auth/users
POST /api/auth/logoutPOST /api/tasks
GET /api/tasks
PATCH /api/tasks/:task_id/status
GET /api/tasks/dashboard-stats
GET /api/tasks/my-tasks
GET /api/tasks/:task_id
POST /api/tasks/:id/assign
PUT /api/tasks/:id/accept
PUT /api/tasks/:id/request-revision
PUT /api/tasks/:id/start
DELETE /api/tasks/:id
POST /api/tasks/:id/submitGET /api/ai/tasks/:task_id/generations
GET /api/ai/jobs/:id/status
DELETE /api/ai/generations/:gen_id
POST /api/ai/tasks/:task_id/generate
POST /api/ai/generategit clone https://github.com/yourusername/taskhub.git
cd taskhubcd backend
python -m venv venv
source venv/bin/activate
# Windows:
# venv\Scripts\activate
pip install -r requirements.txt
python app.pycd taskhub-frontend
npm install
npm run devredis-servercelery -A workers.celery_app worker --loglevel=info
celery -A workers.celery_app.celery worker --loglevel=info -P geventgunicorn "app:create_app()"Create a .env file using .env.example.
# /taskhub/backend
# Flask
FLASK_ENV=
# Redis (Celery)
REDIS_URL=
SECRET_KEY=
# Supabase
SUPABASE_URL=
SUPABASE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_JWT_SECRET=
RESEND_API_KEY=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
# Replicate (SDXL / FLUX)
REPLICATE_API_TOKEN=
CLOUDFLARE_API_KEY=
CLOUDFLARE_ACCOUNT_ID=
STABILITY_API_KEY=
FRONTEND_URL=
# taskhub/frontend
NEXT_PUBLIC_SUPABASE_ANON_KEY=
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_API_URL=The project currently uses SQL schema files.
database.py
routes/
Run the schema file against PostgreSQL or Supabase before starting the application.
taskhub/
โโโ taskhub-frontend/
โ โโโ app/
โ โโโ components/
โ โโโ lib/
โ โโโ providers/
โ โโโ public/
โโโ backend/
โ โโโ routes/
โ โโโ utils/
โ โโโ tasks/
โ โโโ workers/
โ โโโ ml/
โ โโโ app.py
โ โโโ config.py
โ โโโ decorators.py
โ โโโ database.py
โ โโโ Dockerfile
โโโ .env.example
โโโ README.md
- AI-generated outputs may vary depending on image quality.
- Product preservation depends on the capabilities of underlying AI providers.
- Highly reflective jewelry can be challenging.
- Model-wearing generations may introduce minor visual inconsistencies.
- Processing time depends on queue load and AI provider response times.
- Automated quality scoring
- Batch generation
- Fine-tuned product-preservation models
- Multi-product scene generation
- Versioned image history
- Advanced analytics