Product Data Management for engineering teams. Built with Electron, React, and Supabase.
- 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
| Category | Extensions |
|---|---|
| SolidWorks | .sldprt, .sldasm, .slddrw |
| CAD Exchange | .step, .stp, .iges, .igs, .stl |
| Documents | .pdf, .xlsx, .csv |
| Electronics | .sch, .brd, .kicad_pcb |
Download the latest release for your platform from the releases page.
git clone https://github.com/bluerobotics/blue-pdm.git
cd blue-pdm
npm install
npm run build-
Create a Supabase project at supabase.com
-
Set up Google OAuth:
- Go to Authentication → Providers → Google
- Enable Google provider
- Add your Google OAuth credentials (from Google Cloud Console)
- Add
http://localhostto Redirect URLs (for Electron app)
-
Create a storage bucket:
- Go to Storage → New Bucket
- Name it
vault - Set to Private (not public)
-
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
-
Create your organization:
INSERT INTO organizations (name, slug, email_domains) VALUES ('Your Company', 'your-company', ARRAY['yourcompany.com']);
-
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.
-
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).
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.
Local vaults are stored in platform-specific locations:
| Platform | Path |
|---|---|
| Windows | C:\BluePDM\{vault-name} |
| macOS | ~/Documents/BluePDM/{vault-name} |
| Linux | ~/BluePDM/{vault-name} |
- Electron 34
- React 19
- TypeScript
- Tailwind CSS
- Zustand
- Supabase (PostgreSQL, Auth, Storage)
MIT License - see LICENSE for details.
