A powerful, browser-based Progressive Web App (PWA) for creating and managing red team attack diagrams. Built with React Flow, this application provides an intuitive interface for visualizing attack paths, tactics, and techniques with zero backend dependencies. Install it like a native app and run it completely offline.
Live Demo: red.michaelnieto.com
- Full-Featured Diagram Editor: Powered by React Flow with smooth interactions
- Custom Node Creation: Add nodes with custom labels, colors, and icons
- Choose from 36+ professional icons (Shield, Network, Terminal, Cloud, etc.)
- Full color customization with color picker
- Any custom label text for your attack stages
- Flexible Node Types: Create any attack stage nodes you need (Initial Access, C2, Lateral Movement, Execution, Privilege Escalation, Objective, or custom stages)
- Auto-Save: Diagrams automatically persist to browser localStorage
- Import/Export: Save and load diagrams as JSON files
- Multiple Diagrams: Create and manage multiple attack scenarios
- Custom Icons: 36+ professional icons to choose from for each node (Shield, Network, Terminal, Target, Key, Database, Server, Cloud, and more)
- Custom Colors: Full color picker for node customization
- Background Themes: Multiple built-in backgrounds (abstract, mountains, nature, night city)
- Neon Mode: Toggle cyberpunk-style neon aesthetics
- Font Customization: Adjust font family and size
- Dark/Light Mode: Seamless theme switching
- Progressive Web App (PWA): Install as a native app on desktop or mobile
- Fully Offline-Capable: Works 100% offline after installation - perfect for air-gapped environments
- Attachment Management: Add files, links, and notes to nodes
- Presentation Mode: Clean view for presenting diagrams
- Responsive Design: Works on desktop and mobile devices
- No Backend Required: Complete client-side application with localStorage and IndexedDB
- Auto-Updates: Service worker automatically updates to latest version
- Frontend Framework: React 18.3 with TypeScript
- Build Tool: Vite
- PWA Support: vite-plugin-pwa + Workbox
- Diagramming: React Flow 11
- UI Components: Radix UI + shadcn/ui
- Styling: Tailwind CSS with custom design system
- State Management: React hooks + Context API
- Local Storage: IndexedDB for diagram persistence
- Routing: React Router v6
- Icons: Lucide React
- Forms: React Hook Form + Zod validation
- Utilities: date-fns, clsx, tailwind-merge
- Node.js 18.x or higher
- npm or bun package manager
-
Clone the repository
git clone <YOUR_GIT_URL> cd <YOUR_PROJECT_NAME>
-
Install dependencies
npm install # or bun install -
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:8080
The app can be installed as a Progressive Web App for offline use:
Desktop (Chrome, Edge, Brave):
- Visit the app in your browser
- Look for the install icon (โ) in the address bar
- Click "Install" to add it as a native app
- Access from your Start Menu or Applications folder
Mobile (iOS Safari):
- Visit the app in Safari
- Tap the Share button
- Select "Add to Home Screen"
- Tap "Add" to install
Mobile (Android Chrome):
- Visit the app in Chrome
- Tap the menu (โฎ)
- Select "Install app" or "Add to Home Screen"
- Tap "Install"
Once installed, the app works completely offline with all features available.
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLint
src/
โโโ components/ # React components
โ โโโ ui/ # shadcn/ui components
โ โโโ AddNodeDialog.tsx
โ โโโ DiagramEditor.tsx
โ โโโ Toolbar.tsx
โ โโโ ...
โโโ hooks/ # Custom React hooks
โโโ nodes/ # React Flow custom nodes
โโโ pages/ # Route pages
โโโ types/ # TypeScript type definitions
โโโ utils/ # Utility functions
โ โโโ indexedDB.ts # Database operations
โ โโโ storage.ts # LocalStorage helpers
โ โโโ validation.ts # Schema validation
โโโ App.tsx # Main app component
โโโ index.css # Global styles & design system
โโโ main.tsx # Application entry point
The easiest way to deploy this project:
- Open your Lovable Project
- Click the Publish button (top right on desktop, bottom right on mobile)
- Your app is live instantly!
Custom Domain Setup:
- Navigate to Project โ Settings โ Domains
- Click "Connect Domain"
- Follow the instructions to connect your custom domain (e.g., red.michaelnieto.com)
- Requires a paid Lovable plan
-
Install gh-pages
npm install -D gh-pages
-
Add deploy scripts to package.json
"scripts": { "predeploy": "npm run build", "deploy": "gh-pages -d dist" }
-
Deploy
npm run deploy
-
Enable GitHub Pages
- Go to repository Settings โ Pages
- Select
gh-pagesbranch - Your app will be live at
https://[username].github.io/[repo-name]/
-
Install Vercel CLI
npm install -g vercel
-
Deploy
vercel
Or connect your GitHub repository at vercel.com for automatic deployments.
-
Build the project
npm run build
-
Deploy via Netlify CLI
npm install -g netlify-cli netlify deploy --prod --dir=dist
Or drag and drop the
distfolder to Netlify Drop.
Build the project and upload the dist folder to any static file hosting service:
npm run buildThe dist folder contains all static files ready for deployment to:
- AWS S3 + CloudFront
- Google Cloud Storage
- Azure Static Web Apps
- Any web server (Apache, Nginx, etc.)
- Add Nodes: Click the "+" button or use the toolbar to add attack stage nodes
- Connect Nodes: Drag from one node's edge to another to create connections
- Customize:
- Double-click nodes to edit labels and descriptions
- Choose custom icons from the icon picker
- Add attachments, links, and notes
- Style: Toggle neon mode, change backgrounds, and adjust fonts
- Save: Your diagram auto-saves to the browser
- Export: Download as JSON for backup or sharing
Delete- Remove selected nodes/edgesCtrl/Cmd + Z- Undo (via browser)Ctrl/Cmd + C/V- Copy/paste nodes
- Use different node colors to represent different threat actors or attack phases
- Add detailed descriptions and attachments to document TTPs
- Use presentation mode for clean, distraction-free views
- Export regularly to backup your diagrams
- Import diagrams to share with your team
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
Found a bug or have a feature request? Please open an issue on GitHub with:
- Clear description of the problem/feature
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Screenshots if applicable
- Follow the existing code style
- Write meaningful commit messages
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
What this means:
- โ Commercial use allowed
- โ Modification allowed
- โ Distribution allowed
- โ Private use allowed
- โ No liability
- โ No warranty
Michael Nieto
Red team professional and security tool developer. This tool was created to streamline the process of documenting and visualizing attack paths during security assessments.
- LinkedIn: linkedin.com/in/nietomichael
- Website: michaelnieto.com
Need help or have questions?
- Documentation: Check this README and the in-app Help page
- Issues: Open an issue on GitHub
- Discussions: Join conversations in the repository's Discussions tab
- LinkedIn: Connect with me for questions or collaboration
Built with:
- React Flow - Powerful diagram library
- shadcn/ui - Beautiful component system
- Radix UI - Unstyled, accessible components
- Lucide Icons - Elegant icon set
- Lovable - AI-powered development platform
โญ Star this repo if you find it useful!
Made with โค๏ธ for the red team community




