Skip to content

bluerobotics/blueShape

Repository files navigation

BluePDM

Product Data Management for engineering teams. Built with Electron, React, and Supabase.

BluePDM Screenshot

Version Build Downloads License

Features

  • Check In / Check Out with exclusive file locking
  • Version control with full history and rollback
  • File state management (WIP, In Review, Released, Obsolete)
  • SolidWorks integration with thumbnail previews
  • Where-used analysis for tracking assembly references
  • Cloud sync via Supabase with real-time collaboration
  • Offline mode for local-only workflows

Supported Formats

Category Extensions
SolidWorks .sldprt, .sldasm, .slddrw
CAD Exchange .step, .stp, .iges, .igs, .stl
Documents .pdf, .xlsx, .csv
Electronics .sch, .brd, .kicad_pcb

Installation

Download the latest release for your platform from the releases page.

Building from Source

git clone https://github.com/bluerobotics/blue-pdm.git
cd blue-pdm
npm install
npm run build

Supabase Setup

  1. Create a Supabase project at supabase.com

  2. Set up Google OAuth:

    • Go to Authentication → Providers → Google
    • Enable Google provider
    • Add your Google OAuth credentials (from Google Cloud Console)
    • Add http://localhost to Redirect URLs (for Electron app)
  3. Create a storage bucket:

    • Go to Storage → New Bucket
    • Name it vault
    • Set to Private (not public)
  4. Run the database schema:

    • Go to SQL Editor in your Supabase dashboard
    • Copy and run the contents of supabase/schema.sql
    • This creates all tables, triggers, and storage policies
  5. Create your organization:

    INSERT INTO organizations (name, slug, email_domains)
    VALUES ('Your Company', 'your-company', ARRAY['yourcompany.com']);
  6. Link existing users (if you signed into Supabase before running the schema):

    INSERT INTO users (id, email, full_name, org_id)
    SELECT au.id, au.email, au.raw_user_meta_data->>'full_name', o.id
    FROM auth.users au
    LEFT JOIN organizations o ON split_part(au.email, '@', 2) = ANY(o.email_domains)
    WHERE NOT EXISTS (SELECT 1 FROM users u WHERE u.id = au.id);

    New users signing in after this will be auto-linked by the trigger.

  7. Verify setup:

    SELECT tgname FROM pg_trigger WHERE tgname = 'on_auth_user_created';  -- Should return 1 row
    SELECT * FROM users;  -- Should show your user with org_id set

Vaults can be created through the app (Settings → Organization).

Configuration (Optional)

For development, create a .env file:

VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key

For production builds, users configure Supabase credentials through the app's setup screen on first launch.

File Storage

Local vaults are stored in platform-specific locations:

Platform Path
Windows C:\BluePDM\{vault-name}
macOS ~/Documents/BluePDM/{vault-name}
Linux ~/BluePDM/{vault-name}

Tech Stack

  • Electron 34
  • React 19
  • TypeScript
  • Tailwind CSS
  • Zustand
  • Supabase (PostgreSQL, Auth, Storage)

License

MIT License - see LICENSE for details.


Blue Robotics

About

Experimental open-source mechanical CAD project

Resources

License

Stars

Watchers

Forks

Packages

No packages published