An Electron application for importing CSV member data into Fabman.
- CSV file upload with drag & drop support
- Automatic field matching - intelligently maps CSV columns to Fabman fields
- Interactive field mapping interface with visual feedback
- Data preview with pagination
- Package assignment - optional package assignment to imported members
- Key management - support for various key types (EM4102, NFCA, NFCB, etc.)
- Direct import to Fabman API
- Node.js v14 or higher
- npm v6 or higher
- Fabman account with admin/owner privileges
- Valid Fabman API key
-
Clone the repository
git clone <repository-url> cd fabman-import
-
Install dependencies
npm install
Start development server with hot CSS reload:
npm run devOr start just the Electron app:
npm run startBuild for current platform:
npm run buildPlatform-specific builds:
npm run build:win # Windows portable executable
npm run build:mac # macOS portable application
npm run build:linux # Linux AppImageBuild outputs are created in the dist/ directory.
- Click the ℹ️ icon next to "Fabman API Key" for step-by-step instructions
- Enter your Fabman API key
- Click "Connect to Fabman" to load your accounts
- Drag & drop a CSV file onto the upload area, or
- Click "Upload a file" to browse for your CSV
- The tool automatically parses and analyzes your data
- Automatic matching runs immediately after upload
- Review mappings - green highlights indicate successful matches
- Manual adjustment - change any incorrect mappings using the dropdowns
- Key type selection - if mapping a key field, select the appropriate key type
- Select a package to assign to all imported members
- Leave blank for no package assignment
- Click "Generate Preview" to see how your data will be imported
- Review the first 10 rows (click "Load all X rows" to see everything)
- Click "Import Data" to start the import process
Your CSV must contain these fields (exact names may vary):
- First Name (firstName, first, given name, etc.)
- Last Name (lastName, last, surname, family name, etc.)
- Email Address (email, emailAddress, mail, etc.)
- Member Number (memberNumber, id, number, etc.)
- Phone (phone, telephone, mobile, etc.)
- Address (address, street, etc.)
- City (city, town, locality, etc.)
- ZIP/Postal Code (zip, postal, postcode, etc.)
- Country Code (country, countryCode, nation, etc.)
- Region/State (region, state, province, etc.)
- Notes (notes, comments, description, etc.)
- Key (key, rfid, card, token, etc.)
The application uses electron-builder for packaging:
Fabman Import Tool-1.0.0-portable.exe- Portable executable (no installation required)
Fabman Import Tool-1.0.0-mac.zip- Portable application bundle
Fabman Import Tool-1.0.0.AppImage- Universal Linux application
All build settings are configured in package.json under the "build" section.
- No data storage - All data is processed in memory only
- No API key persistence - API keys are not saved between sessions
- Session-only operation - All data is cleared when the app closes
- Electron - Cross-platform desktop framework
- Alpine.js - Reactive JavaScript framework
- Tailwind CSS - Utility-first CSS framework
- PapaParse - CSV parsing library
- electron-builder - Application packaging
fabman-import/
├── src/
│ ├── main.js # Electron main process
│ ├── renderer.js # Application logic & Alpine.js
│ ├── index.html # Main UI
│ ├── styles.css # Tailwind source
│ └── output.css # Compiled Tailwind CSS
├── assets/
│ ├── icon.ico # Windows icon
│ ├── icon.icns # macOS icon
│ ├── icon.png # Linux icon
│ └── icon-1024.png # Source icon
├── dist/ # Build outputs
├── package.json # Dependencies & build config
└── README.md
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.
Built with ❤️ for the Fabman community

