Mixfolio is a Universal Asset Manager and Creative OS. It is a "Second Brain" for your creative work, unifying your images, videos, code, prompts, and docs into one powerful, 5-table Supabase engine.
Welcome to the official setup guide for Mixfolio. This guide will walk you through setting up your local development environment, connecting to your Supabase instance, and preparing your "Creative OS."
Prerequisites
Node.js (v18.0.0 or higher)
npm, yarn, pnpm, or bun
A Supabase account (free tier is sufficient for initial launch)
Basic knowledge of React and Next.js/Vite
Step 1: Clone the Repository
Step 2: Set up Supabase Data
Mixfolio relies on a highly interconnected 5-table architecture. You need to create a project and set up the schema.
Navigate to the SQL Editor and paste the contents of schema.sql.
Ensure all Foreign Keys are mapped correctly with CASCADE for deletions and SET NULL for templates.
Go to "Authentication" -> "Policies" and ensure Enable read access for all users is active on all 5 tables so the public can see your portfolio.
Step 3: The Storage Bucket (Crucial)
Your database only stores text links. The actual images need a physical warehouse.
Go to the Storage tab (the folder icon) in Supabase.
Click "New bucket" and name it exactly artwork (all lowercase).
Crucial: Toggle the "Public bucket" switch to ON. If this is OFF, your images will be invisible to visitors.
Step 4: The Dummy Data (The Sandbox)
Before connecting a visual UI builder like Figma Make, you must have dummy data. If your tables are empty, the UI will crash trying to fetch foreign keys.
In the templates table, insert one row: Name = "Standard", active_specs = ["Software", "Tools"].
In the entities table, insert one row: Title = "Test Project", Slug = "test-project", template_id = 1.
Step 5: Configure Environment Variables
Step 6: Run the Development Server
);
const AdvancedConcepts = () => (
Mixfolio is a "Portfolio on Steroids." It moves beyond a static gallery into an interactive, app-like experience designed to maximize engagement and monetize your assets instantly.
1. The Triple-State Logic (The Core Filter)
Every asset in Mixfolio is governed by three primary boolean flags. This transforms the platform from a simple website into a Universal Asset Manager:
is_managed (The Private State): The asset is in your personal library. It’s used for archiving, organizing, and work-in-progress. It acts as your private "Second Brain."
is_project (The Showcase State): The asset is visible in your public portfolio grid. It’s designed to build your brand and professional clout.
is_product (The Commercial State): The asset is listed in the Shop section. It automatically activates the paywall logic for linked files.
2. The Magic Switcher (Interaction)
Problem: Traditional portfolios force users to scroll through 5 separate images to see color variations of the same logo or design.
Solution: You show one main image. Below it, there is a row of clean, interactive circles (UI dots) representing different versions. Clicking a "Gold" circle instantly swaps the main image to the Gold version smoothly.
3. The Asset Vault (Micro-Transactions)
We don't put a paywall on the whole project; we put it on the specific files.
You can make the PNG free (for clout and sharing) but keep the SVG or Source File premium (for professional use). The system automatically checks the is_premium status of a file to decide whether to show a download icon or a checkout button.
4. The God-Mode Admin (Efficiency)
Goal: Upload a complex project with 10 colors and 30 file formats in under 2 minutes.
Solution: A template-based admin panel. Instead of manually typing out "Software," "Resolution," and "Time Spent" every time, you select a "Rulebook" template. The UI dynamically generates the exact input fields needed based on a JSONB configuration.
5. Advanced Features (Deep Dive)
Deep Linking Variation System: Each color version is its own "state." The URL changes when a user clicks a color circle (e.g., mixfolio.com/logo?color=gold). This allows you to send a link to a client that opens directly to the version you want them to see.
SEO-Friendly Slug System: Clean, readable URLs automatically generated from project titles using regex logic, avoiding messy database IDs.
);
const SystemArchitecture = () => (
Mixfolio's architecture bridges the gap between complex relational databases and seamless frontend interactions.
1. Frontend Logic
Swappable Cover Concept: The site reads the variations table. It maps out the hex_color codes into clickable circles. Clicking one instantly replaces the main_image_url with that variation's preview_image_url without refreshing the page.
Contextual Sidebar: The site looks at the project's template_id. If it's a "Standard" template, it knows to only pull "Software" and "Resolution" from the specs_pool table, ignoring irrelevant data like "Video FPS."
2. Backend Logic
JSONB Trick: In the templates table, the active_specs column is a jsonb type (storing data like ["Software", "Tools"]). This allows the Admin Panel code to instantly read that list and generate dynamic input boxes on the fly without complex database joins.
Direct-to-Storage Uploading: The Admin Panel bypasses the database for heavy lifting. It sends the physical file (.jpg, .png) to the public artwork bucket, grabs the generated URL, and pastes that text link into the table.
CASCADE: We set deletion rules for variations, files, and specs to CASCADE. If you delete a core Project, the database automatically hunts down and deletes every color circle, download link, and technical spec associated with it. Zero ghost data.
SET NULL: We set the deletion rule for the Template connection to SET NULL. If you decide you don't like the "Icons" template anymore and delete it, you don't want your Project to be deleted too! The project stays alive but just loses its "Template" instructions.
4. Security & Permissions Logic
Read-Only Public Access: We wrote SELECT policies for all 5 tables targeting the public role. Your frontend website is allowed to read the data and draw the screen, but random visitors cannot overwrite your database.
);
const DatabaseArchitecture = () => (
The Mixfolio database is built on a 5-table relational structure designed for maximum automation and clean data management. Here is the exact ELI5 breakdown of every table.
1. entities Table (The Grandparent)
The core record for every project or asset. The absolute heart of the project. If this doesn't exist, nothing else can exist.
Column
Settings
ELI5 Purpose
id
int8, Primary, Identity ON
The "Social Security Number" for every project. Auto-counts 1, 2, 3.
title
text, Not Null
Project name. A project without a name is just a ghost.
slug
text, Unique, Not Null
The URL-friendly name (e.g., my-cool-logo).
main_image_url
text, Not Null
The "Front Door" image link from your storage bucket.
is_managed
bool, Default: false
Visible only to the owner (Private Archive).
is_project
bool, Default: false
Puts this on the Portfolio home page.
is_product
bool, Default: false
Puts this in the Shop.
template_id
int8, Nullable
Links to rulebook (FK). Set Null on delete.
2. variations Table (The Children)
This is where you store the different versions of a project, like the Gold, Silver, or Sketch versions. It powers the Magic Switcher.
id
int8, Primary, Identity ON
entity_id
The "Glue". Connects to entities.id. Action: CASCADE.
name
text (e.g., "Deep Space Blue")
hex_color
text, Nullable. The color code for your UI circles.
preview_image_url
text. The image that pops up when this variation is selected.
3. files_and_formats Table (The Vault)
The "Delivery Room". Stores the actual downloadable files. This enables your "Add to Cart" or "Download" checkbox logic.
variation_id
The "Glue". Connects to variations.id. Action: CASCADE.
file_url
text. Link to the file in your Supabase bucket.
format_type
text. Extension (e.g., "SVG", "PNG", "PDF").
is_premium
bool, Default: false. If true, shows a "Buy" button instead of "Download".
4. specs_pool Table (The Details)
Your technical "Backpack". Stores dry facts like "Software Used" or "Resolution".
entity_id
The "Glue". Connects to entities.id. Action: CASCADE.
label
text. The "Question" (e.g., "Software").
value
text. The "Answer" (e.g., "Figma").
is_hidden
bool, Default: false. Toggle to hide a stat without deleting it.
5. templates Table (The Rulebook)
Your "God-Mode" control center. Master instructions for your uploads.
name
text. Preset name (e.g., "For Fun", "Client Project").
active_specs
jsonb. The "Swiss Army Knife" array: ["Software", "Resolution"].
default_layout
text, Nullable. Tells the website how to arrange images (e.g., "Grid").
);
const UIUXSpecs = () => (
The visual language of Mixfolio draws heavy inspiration from top-tier creative tools like Midjourney, Framer, and Freepik. It is built as a Pro-Tool, not just a blog.
1. Masonry Intelligence
Aspect Ratio Intelligence: The grid does not crop images into boring squares. It reads the metadata and places assets in a dense, Pinterest-style layout based on their native ratio (1:1, 16:9, 9:16, 2:3, etc.).
Multi-Select Filter Chips: Located at the top, these pill-shaped toggles allow users to combine filters. For example, selecting "Motion" + "Free" will instantly filter the entities table for assets where type=video AND is_product=false.
2. The Detail Workspace
Clicking an asset opens a multi-pane overlay that functions like a workspace.
The Viewport: A large, central area for the asset against a deep #0f0f0f background.
The Dynamic Sidebar (The "Backpack"): The right 30% acts as the control panel. It fetches data from specs_pool. If it's an AI project, it shows the Prompt and Seed. If it's a coding project, it shows the Language and Framework.
3. Floating Toolbars & Inputs
Adaptive Actions: Contextual menus that float over the preview (e.g., "Use as Style," "Copy Prompt," "Download Source") with subtle glassmorphism (backdrop-blur) effects.
Color Visualization: The hex_color input in the Admin Panel isn't just a text box; it renders a visual Color Picker UI so you can see the exact shade.
Toggle Switches:is_project, is_product, and is_premium shouldn't be boring dropdowns—they need to be slick iOS-style toggle switches for fast, frictionless editing.
4. Global Navigation & Interactions
Inspired by Freepik's pro-tool layout, the navigation is a collapsible vertical bar on the far left. Users can "pin" their most-used categories. The entire UI relies on smooth spring animations for opening/closing panels.
);
const WorkflowsLogic = () => (
Mixfolio utilizes a phased, systematic approach to data management to prevent "prompt bloat" and ensure the database stays perfectly clean.
1. The "God-Mode" Admin Workflow
Uploading a massive project with 3 colors and 2 files each generates 14 database rows instantly linked together safely. The workflow follows 4 steps:
Select Template: Choose the rulebook (e.g., "UI Kit").
Basic Info: Fill out Title, Description. Slug auto-generates. Upload the main cover.
Variations & Files: Add the Hex Colors. Drag and drop source files (SVG, PNG). Flip the is_premium switches.
Specs: Fill in the dynamically generated fields dictated by the Template's JSON array.
2. Direct-to-Storage Workflow
The Admin Panel doesn't save images directly into the PostgreSQL tables. It sends the physical file (.jpg, .png) to the public artwork Supabase bucket, grabs the public URL that Supabase generates, and pastes that text link into the entities or variations table.
3. Slugification
To ensure clean URLs for SEO (e.g. /logo-design-for-startup instead of messy database IDs), a robust slugify utility runs on the Title input automatically:
4. Data Management Patterns (Cascade)
By utilizing Foreign Keys with ON DELETE CASCADE, we automate housekeeping. If you decide a project is "old" and delete it from the Admin Panel, the system automatically hunts down and deletes all 10 color variations, all 30 download files, and all 5 tech specs linked to it.
);
const ImplementationRoadmap = () => (
Building Mixfolio requires a strictly phased, modular approach. Giving an AI builder a giant "God-Prompt" will result in a buggy mess. This roadmap isolates the 5 different tables into 4 sprints.
Sprint 1: The Core Foundation (Projects & Storage)
The Goal: Build a page to create, edit, and delete entries in the entities table.
Key Tasks: Input fields for title, slug. A drag-and-drop box that sends files to the artwork bucket and saves the URL. Toggles for is_project and is_product.
Success Check: Can I upload a title and a cover image and see it appear in Supabase?
Sprint 2: The Variation Engine (Colors & Versions)
The Goal: Connect the variations table to each project.
Key Tasks: Use the entity_id to "glue" a variation to its parent. Add a Hex Color Picker and a secondary uploader for the preview image.
Success Check: Can I add a "Gold" version and a "Sketch" version to Project A?
Sprint 3: The Asset Delivery (Downloads & Formats)
The Goal: Connect the files_and_formats table to the variations.
Key Tasks: An interface to upload specific files and label them (SVG/PNG). A switch for is_premium (Buy vs Free). Links to variation_id.
Success Check: If I delete a Variation, do all its linked files disappear too (Cascade rule)?
Sprint 4: Technical Specs & Rules (The Finishing Touches)
The Goal: Link templates and specs_pool.
Key Tasks: A dropdown to choose the layout template. A way to add "Label: Software" and "Value: Figma" pairs linked by entity_id.
Success Check: Does the project show the correct technical specs based on the chosen template?
);
const ProjectVision = () => (
"Most portfolios are dead ends. Most digital shops are clinical. Mixfolio is the bridge."
The Philosophy: A Creative Second Brain
Mixfolio was born from a simple frustration: Creative professionals have to split their identity across platforms. You put your pretty pictures on Behance. You put your source files on Gumroad. You write your case studies on Medium.
This fragmentation destroys context. Mixfolio is not just a custom portfolio or a shop. It is a Universal Asset Manager designed to house everything you ever created: Photos, Videos, GIFs, Motions, Code snippets, Texts, AI Prompts, and Docs.
A "Creative OS"
Mixfolio isn't a theme; it's an operating system for your creative assets.
Asset Centralization: Every logo, script, 3D model, and UI kit lives in one tightly linked PostgreSQL database.
Frictionless Distribution: When someone sees a beautiful 3D icon you rendered, that is the exact moment of highest intent. The distance between "Wow, that looks cool" and "I want the SVG" is exactly one click.
Professional Perception: The Magic Switcher, Floating Toolbars, and immersive dark-mode UI signal high value, allowing creators to charge premium rates for their assets.
);
const PRD = () => (
Document Info
ProductMixfolio OS
StatusIn Development
Target LaunchQ3
LeadProduct Team
Product Overview
A self-hosted, headless CMS and frontend explicitly designed for digital creators to showcase multi-variant assets and monetize specific file formats seamlessly.
Target Users
The Asset Creator: 3D artists, UI designers, and illustrators with high-volume, multi-format outputs.
The Hybrid Engineer: Developers who create both visual templates and premium code snippets.
Success Metrics (KPIs)
Upload Time
< 2 minutes for a complex 3-variant project via Admin.
Lighthouse Score
90+ Performance (critical for visual heavy sites).
Conversion Rate
Increase asset sales by 15% vs separate storefronts.
Technical Constraints
Must operate entirely within the Supabase Free Tier limits for initial deployment (500MB DB space, 1GB Storage). Asset optimization before upload to the artwork bucket is mandatory.