You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rio is a full-stack Figma plugin that supercharges the design workflow with conversational AI generation, JSON-based design import/export, a personal UI component library, and persistent design versioning. It is backed by a production-grade Node.js API with Stripe billing, Google OAuth, and multi-provider AI support.
Base URL (dev): http://localhost:5000
Base URL (prod): https://task-creator-api.onrender.com
Authentication — /auth
Method
Path
Description
GET
/auth/google
Initiate Google OAuth
GET
/auth/google/callback
OAuth redirect callback
GET
/auth/poll
Plugin polls for JWT after browser auth
GET
/auth/me
Return current user profile
AI Design — /api/designs
Method
Path
Description
POST
/api/designs/generate-from-conversation
Generate design from chat prompt
POST
/api/designs/edit-with-ai
Modify selected design with AI
POST
/api/designs/generate-based-on-existing
Generate variant of existing selection
POST
/api/designs/generate-prototype
Generate prototype connections
Design Versions — /api/designs
Method
Path
Description
POST
/api/designs
Save current design as version
GET
/api/designs
List all versions for user
GET
/api/designs/:id
Get a specific version
DELETE
/api/designs/:id
Delete a version
UI Library — /api/ui-library
Method
Path
Description
POST
/api/ui-library/projects
Create project
GET
/api/ui-library/projects
List projects
DELETE
/api/ui-library/projects/:id
Delete project
GET
/api/ui-library/projects/:id/components
List components in project
POST
/api/ui-library/components
Create component
POST
/api/ui-library/components/upload-image
Upload S3 preview image
DELETE
/api/ui-library/components/:id
Delete component
Payments — /api/payments
Method
Path
Description
POST
/api/payments/create-checkout
Stripe one-time checkout session
POST
/api/payments/webhook
Stripe webhook handler
GET
/api/payments/balance
User's current points balance
GET
/api/payments/history
Payment transaction history
GET
/api/payments/packages
Available point packages
GET
/api/payments/poll/:sessionId
Poll payment completion
Subscriptions — /api/subscriptions
Method
Path
Description
POST
/api/subscriptions/create-checkout
Subscription checkout session
POST
/api/subscriptions/cancel
Cancel active subscription
GET
/api/subscriptions/status
Current subscription & usage
GET
/api/subscriptions/plans
Available plans and pricing
AI Models — /api/ai-models
Method
Path
Description
GET
/api/ai-models
List all available AI models
Client Errors — /api/errors
Method
Path
Description
POST
/api/errors
Log a client-side error
All protected routes require Authorization: Bearer <jwt> header.
Interactive API docs available at /api-docs when the server is running.
Authentication
Google OAuth — user opens the plugin, clicks "Sign in with Google", browser tab opens and completes OAuth flow.
JWT — after OAuth the server issues a 30-day JWT.
Plugin polling — the plugin's main thread calls GET /auth/poll repeatedly until a token is returned, then stores it in figma.clientStorage.
API requests — the React UI's useApiClient hook reads the stored token and injects it as a Bearer header on every request.
Environment Variables
Backend — backend/.env
# ServerNODE_ENV=developmentPORT=5000# DatabaseDATABASE_URL=postgresql://postgres:root@localhost:5432/design_versions_db# Google OAuthGOOGLE_CLIENT_ID=your_google_client_idGOOGLE_CLIENT_SECRET=your_google_client_secretGOOGLE_CALLBACK_URL=http://localhost:5000/auth/google/callback# JWTJWT_SECRET=your_jwt_secret_change_in_production# StripeSTRIPE_SECRET_KEY=sk_test_...STRIPE_WEBHOOK_SECRET=whsec_...STRIPE_PRICE_STARTER=price_...STRIPE_PRICE_PRO=price_...STRIPE_PRICE_SUB_BASIC=price_...STRIPE_PRICE_SUB_PREMIUM=price_...# AWS S3AWS_ACCESS_KEY_ID=your_keyAWS_SECRET_ACCESS_KEY=your_secretAWS_REGION=us-east-1AWS_S3_BUCKET=your_bucket_name# AI ProvidersOPENAI_API_KEY=sk-...CLAUDE_API_KEY=sk-ant-...GEMINI_API_KEY=...MISTRAL_API_KEY=...HAMGINGFACE_API_KEY=...POE_API_KEY=...# Trello (optional)TRELLO_API_KEY=...TRELLO_TOKEN=...TRELLO_BOARD_ID=...
Figma Plugin — figma-plugin/.env
BACKEND_URL=http://localhost:5000
For production, set BACKEND_URL in figma-plugin/.env.production.
Development Setup
Prerequisites
Node.js 18+ (LTS)
PostgreSQL 14+
Figma Desktop App
Stripe CLI (for webhook testing)
1. Clone the repository
git clone https://github.com/Rezkaudi/task-creator.git
cd task-creator
2. Backend
cd backend
npm install
# Copy and fill in environment variables
cp .env.example .env
# Run database migrations
npm run migration:run
# Start development server
npm run dev
The API will be available at http://localhost:5000.
Swagger docs: http://localhost:5000/api-docs.
3. Figma Plugin
cd figma-plugin
npm install
# Development build (watches for changes)
npm run dev
# OR production build
npm run build
4. Load the plugin in Figma
Open the Figma Desktop App.
Go to Plugins → Development → Import plugin from manifest…
Select figma-plugin/manifest.json.
Run the plugin — it will connect to your local backend.