Skip to content

AbstrektGG/UserManager

Repository files navigation

UserManager — IT Admin Atlas

A desktop application for IT administrators and managed service providers to manage users, groups, folder permissions, licenses, and assets across multiple client environments. Built with Electron + React, it runs fully offline with no internet connection required.

A separate read-only customer build can be distributed to clients, giving them a live view of their IT environment without the ability to make changes.


Features

🗂️ Overview Dashboard

  • At-a-glance stats for users, assets, and licenses
  • Warranty alerts — expired and expiring within 90 days
  • Checklist activity summary (admin only)
  • Knowledge base article count
  • Global search across all entities with click-to-navigate
  • Per-database toggle to show/hide Assets and Knowledge Base tabs

👤 Users

  • Searchable, sortable user list with hide-disabled toggle
  • Add user dialog with compound email input (known domain selector with New… option)
  • Optional onboarding checklist auto-launched on user creation
  • User detail panel — name, email, role, location, start date, notes
  • Enable / disable users
  • Shared mailbox support
  • Group membership management (add/remove with inline search picker)
  • License assignments
  • Computed folder access and shared mailbox access (derived from group memberships)
  • Hidden from customer flag per user
  • Right-click context menu with bulk enable/disable, add to group, delete
  • Simulate Access Changes mode (customer build) — explore what access a user would have with different group memberships without saving

🛡️ Groups

  • Searchable list with category filter tabs
  • Group detail panel — name, category, email, description
  • Inline member add picker with multi-select, search, and confirm
  • Right-click context menu — add members, delete

📁 Folders

  • Folder tree with permission editor per folder
  • Bulk permission panel for managing access across many folders at once
  • Inheritable permissions from parent folders

🔑 Licenses

  • License cards with name, assigned/total count, and expiry date
  • Expired badge on overdue licenses
  • Auto-save inline editing
  • Member management — inline multi-select picker with search, alphabetically sorted
  • Member search on existing assignments
  • Hidden from customer flag per license

🖥️ Assets (optional, enabled per database)

  • Asset list with type filter
  • Asset detail — serial number, brand, model, IP address, OS, location, warranty end date
  • Service/maintenance log
  • Disable, decommission, and delete actions
  • Warranty expiry tracking surfaced on the dashboard

✅ Checklists (admin only)

  • Template builder with ordered, editable steps
  • Run checklists — track per-step completion with per-step notes
  • Overall run notes
  • Cancel in-progress runs
  • Completed and cancelled run history
  • Pop-out window per active run
  • Onboarding checklist auto-launched from Add User dialog

📚 Knowledge Base (optional, enabled per database)

  • Upload and manage knowledge articles and reference files

⚙️ App-wide

  • Multi-database — manage multiple client environments from one installation
  • Dual mode — full admin build and read-only customer build from the same codebase
  • Auto-save — field changes are debounced and saved automatically
  • Undo / Change log — recent changes can be undone; full history panel
  • Audit log — per-database record of all modifications
  • Recycle bin — recover recently deleted items
  • Global search — unified search from the dashboard, navigates directly to any record
  • Animated tab ribbon — active tab expands to show label; inactive tabs collapse to icon only
  • Pop-out windows — checklists open in separate OS windows, closed automatically when the main window closes
  • Per-database settings — Assets and Knowledge Base tabs can be enabled/disabled independently per client database

Data Management

Export CSV

Exports four human-readable CSV files that can also be re-imported:

File Contents
Groups.csv Name, Category, Email, Description
Licenses.csv Name, Total Seats, Expiry Date
Folders.csv Name, Parent Folder, Inherits Permissions, Permissions
Users.csv Full Name, Email, Role, Status, Type, Groups, Licenses

Import CSV

Imports one or more of the above files. The import dialog enforces the correct order (Groups → Licenses → Folders → Users) automatically. Import is additive only — it creates new records and does not update or delete existing ones.

Backup & Restore

  • Backup — saves a full timestamped JSON snapshot of the database ({suffix}-backup-YYYY-MM-DD_HHmm.json)
  • Restore — completely overwrites the current database from a backup file. Shows a confirmation warning before proceeding.

Export for Customer

Exports the current database as a distributable JSON file ({suffix}-db.json) for use with the customer read-only build.


Requirements

  • Node.js v18 or later
  • npm (included with Node.js)
  • Windows x64 (build target — development can run on any platform)

Getting Started

1. Clone and install

git clone <repo-url>
cd admin-atlas-flow
npm install

2. Run in development

npm run electron:dev

This builds the React app with Vite and launches Electron immediately. No separate dev server is needed — Electron loads directly from the built dist/ folder.

3. Build a distributable

# Admin / full version
npm run electron:build

# Read-only customer version
npm run electron:build:customer

Output is placed in release/ as both a folder and a .zip archive ready to distribute.


Data Storage

All data is stored locally as JSON files in the same directory as the application executable (when packaged), or in a dev-data/ folder at the project root during development.

Each client database is a single file named db-{suffix}.json. Checklist data is stored separately as {suffix}--{name}.json files. No internet connection, cloud account, or database server is required.


Project Structure

admin-atlas-flow/
├── electron/
│   ├── main.cjs          # Electron main process, IPC handlers, file I/O
│   └── preload.cjs       # Secure bridge between main and renderer
├── src/
│   ├── api/              # base44 data layer (entity CRUD)
│   ├── components/
│   │   ├── assets/       # Assets tab
│   │   ├── checklists/   # Checklists tab + pop-out window
│   │   ├── dashboard/    # Overview dashboard
│   │   ├── folders/      # Folders tab + permission editor
│   │   ├── groups/       # Groups tab
│   │   ├── knowledge/    # Knowledge base tab
│   │   ├── layout/       # TopRibbon navigation
│   │   ├── licenses/     # Licenses tab
│   │   ├── shared/       # SlidePanel, SearchableList, TagList, ImportDialog
│   │   ├── ui/           # shadcn/ui components
│   │   └── users/        # Users tab + detail panel + add dialog
│   ├── context/          # DatabaseContext
│   ├── hooks/            # useAutoSave, useDbSettings
│   ├── lib/              # appMode (admin vs customer), utilities
│   ├── pages/            # Dashboard page (root route)
│   └── utils/            # refreshBus, changeLog, csvExportImport
├── package.json
└── vite.config.js

Tech Stack

Layer Technology
Desktop shell Electron 34
UI framework React 18 + Vite 6
Styling Tailwind CSS 3 + shadcn/ui
Icons lucide-react
Date handling date-fns
Toasts Sonner
Data storage Local JSON files (no database server)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages