- Overview
- What This Project Does
- Project Structure
- Current Status
- Technology Stack
- Installation & Setup
- How to Use
- File & Folder Functionality
- Available Tools
- Development Guide
- Architecture Overview
- Future Plans
DeveloperTools is a comprehensive suite of web-based utilities designed specifically for developers and technical professionals. Think of it as a Swiss Army knife for everyday development tasks - all running entirely in your web browser without any server-side processing.
- 🔒 Privacy-First: All processing happens locally in your browser - your data never leaves your machine
- ⚡ Lightning Fast: No server round-trips mean instant results
- 📱 Responsive: Works beautifully on desktop, tablet, and mobile devices
- 🎨 Modern UI: Clean, professional interface with dark/light theme support
- 🆓 Free & Open: No sign-ups, no tracking, no cost
Imagine you're a developer working on a project. You frequently need to:
- Validate JSON data from APIs
- Encode/decode Base64 strings for authentication
- Generate UUIDs for database records
- Decode JWT tokens to inspect claims
- Convert colors between different formats
Instead of searching for separate online tools (which may have privacy concerns), DeveloperTools provides all these utilities in one place, running entirely offline once loaded.
- You receive a JWT token from an API
- Open DeveloperTools in your browser
- Click on "JWT Decoder" tab
- Paste the token
- Instantly see the decoded header and payload
- No data sent to any server!
Here's how the project is organized (explained for everyone):
DeveloperTools/
├── index.html # Root landing page (redirects to app)
├── Readme.md # This comprehensive documentation
│
├── app/ # Main application folder
│ ├── index.html # Main application entry point
│ ├── assets/ # Static resources
│ │ └── icons/ # Icons and images
│ │
│ ├── scripts/ # All JavaScript code
│ │ ├── main.js # Application bootstrap & initialization
│ │ ├── router.js # URL routing and navigation system
│ │ ├── tools-registry.js # Central tool configuration & management
│ │ │
│ │ ├── ui/ # User interface components
│ │ │ ├── tabs.js # Tab navigation system
│ │ │ └── toasts.js # Notification system
│ │ │
│ │ └── utils/ # Utility functions (helpers)
│ │ ├── clipboard.js # Copy to clipboard functionality
│ │ ├── dom.js # DOM manipulation helpers
│ │ ├── download.js # File download utilities
│ │ ├── storage.js # Browser storage (localStorage) management
│ │ └── sub-tabs.js # Sub-tab navigation within tools
│ │
│ ├── styles/ # CSS stylesheets
│ │ ├── base.css # Base styles and resets
│ │ ├── theme.css # Theme variables (colors, spacing)
│ │ └── subtabs.css # Sub-tab specific styles
│ │
│ └── tools/ # App-specific tool implementations
│ └── json-validator/ # JSON tool (app version)
│ ├── tool.css
│ ├── tool.html
│ └── tool.js
│
└── tools/ # Individual tool modules
├── base64/ # Base64 encoder/decoder
│ ├── tool.css # Tool-specific styles
│ ├── tool.html # Tool UI template
│ └── tool.js # Tool logic and functionality
│
├── color-utilities/ # Color converter (HEX/RGB/HSL)
├── csv-json/ # CSV ↔ JSON converter (planned)
├── diff-viewer/ # Text/JSON comparison tool
│ ├── tool.css
│ ├── tool.js
│ └── lib/
│ └── diff-engine.js # Diff algorithm implementation
├── epoch-converter/ # Unix timestamp converter (planned)
├── hash-generator/ # Hash generator (planned)
├── json-validator/ # JSON validator & beautifier
├── jwt-decoder/ # JWT token decoder
├── url-encoder-decoder/ # URL encoder/decoder
└── uuid-generator/ # UUID generator
Root Level:
index.html- When someone visits the site, this redirects them to the main appReadme.md- You're reading it! Complete project documentation
app/ folder: This is where the main application lives. Think of it as the "shell" that holds everything together.
index.html- The main page with the header, tabs, and footerscripts/- All the JavaScript that makes the app workstyles/- All the CSS that makes it look prettytools/- Some tools that are integrated directly into the app
tools/ folder: Each tool is self-contained in its own folder. This modular design means:
- Tools can be developed independently
- Easy to add new tools
- Can be reused in other projects
- Each tool has its own HTML (structure), CSS (style), and JS (behavior)
The following tools are fully functional and ready to use:
-
JSON Validator & Beautifier ✨
- Validate JSON syntax with detailed error messages
- Beautify/format JSON with customizable indentation
- Minify JSON to reduce size
- File upload support
- Real-time character and line counting
-
Base64 Encoder/Decoder 🔐
- Encode text to Base64
- Decode Base64 to text
- Encode files to Base64 (any file type)
- URL-safe Base64 encoding option
- Drag & drop file support
- Progress indicator for large files
-
URL Encoder/Decoder 🔗
- Encode URLs and query parameters
- Decode percent-encoded URLs
- Support for both encodeURI and encodeURIComponent
- Special character handling
- Examples and use cases included
-
UUID Generator 🆔
- Generate v4 (random) UUIDs
- Bulk generation (up to 1000 at once)
- UUID validation
- Multiple format options (uppercase, lowercase, braces)
- Copy individual or all UUIDs
-
JWT Decoder 🎫
- Decode JWT tokens
- View header and payload
- Timestamp conversion
- Validation status check
- No verification (client-side only)
-
Color Utilities 🎨
- Convert between HEX, RGB, and HSL
- Color picker integration
- Contrast ratio checker for accessibility
- Real-time preview
- WCAG compliance indicators
-
Diff Viewer 🔍
- Compare text side-by-side
- JSON diff with formatting
- Highlight additions, deletions, and changes
- Line-by-line comparison
- Supports large text files
These tools are defined in the registry but not yet implemented:
- Hash Generator (#️⃣) - Generate MD5, SHA-1, SHA-256, SHA-512 hashes
- Epoch/Time Converter (⏰) - Convert Unix timestamps to readable dates
- CSV ↔ JSON Converter (📊) - Convert between CSV and JSON formats
- Total Tools Defined: 10
- Functional Tools: 7
- In Development: 3
- Completion: ~70%
This project is built using modern web technologies, making it accessible and easy to understand:
- HTML5 - Structure and semantics
- CSS3 - Styling with CSS Variables for theming
- Vanilla JavaScript (ES6+) - No frameworks! Pure JavaScript for maximum performance
This project intentionally avoids frameworks like React or Vue because:
- Simplicity - Easier to understand for beginners
- Performance - No framework overhead
- Independence - No dependencies to maintain or update
- Learning - Great way to understand core web technologies
- Portability - Can run anywhere without build steps
- ES6 Modules (for organization)
- Async/Await (for asynchronous operations)
- Classes and Objects (for structure)
- LocalStorage API (for data persistence)
- File API (for file handling)
- Clipboard API (for copy functionality)
- DOM API - Manipulating the page
- LocalStorage - Saving user preferences and tool states
- Clipboard API - Copy to clipboard functionality
- File API - Reading uploaded files
- History API - Browser navigation with hash routing
- CSS Custom Properties - Dynamic theming
Option 1: Use Online (Easiest)
Simply open app/index.html in any modern web browser. That's it!
Option 2: Run Locally
- Download or clone this repository
- Navigate to the
DeveloperToolsfolder - Open
app/index.htmlin your web browser - No server required! All tools work offline
Supported Browsers:
- ✅ Chrome/Edge (Recommended) - Version 88+
- ✅ Firefox - Version 78+
- ✅ Safari - Version 14+
- ✅ Opera - Version 74+
- ❌ Internet Explorer (not supported)
Prerequisites:
- A text editor (VS Code, Sublime Text, etc.)
- A web browser
- Basic knowledge of HTML/CSS/JavaScript
- (Optional) A local web server for testing
Quick Start:
# Clone the repository
git clone <repository-url>
# Navigate to the project
cd DeveloperTools
# Open in your browser
open app/index.html
# Or use a simple HTTP server (optional but recommended)
# Using Python 3:
python -m http.server 8000
# Using Node.js (if you have http-server installed):
npx http-server -p 8000
# Then visit: http://localhost:8000/app/-
Opening the Application
- Open
app/index.htmlin your web browser - You'll see a beautiful homepage with all available tools
- Open
-
Selecting a Tool
- Click on any tool card on the homepage, OR
- Use the navigation tabs at the top
- Use the search bar (Ctrl/Cmd + K) to find tools quickly
-
Using a Tool Each tool has a similar interface:
- Input Panel (Left): Where you enter or upload your data
- Output Panel (Right): Where results are displayed
- Action Buttons: Process, Copy, Download, Clear
-
Common Actions
- Copy: Click the copy button to copy results to clipboard
- Download: Save results as a file
- Clear: Reset the tool to start fresh
- Upload: Drag & drop files or click to browse
Example 1: Validating JSON from an API
1. Copy JSON response from your API
2. Click "JSON Validator & Beautifier" tab
3. Paste JSON into the input area
4. Click "Validate JSON"
5. See validation result or error details
6. If valid, switch to "Beautifier" to format it nicely
7. Click "Copy" to copy the formatted JSON
Example 2: Generating UUIDs for Database
1. Click "UUID Generator" tab
2. Select how many UUIDs you need (e.g., 10)
3. Choose format (lowercase, uppercase, etc.)
4. Click "Generate UUIDs"
5. Click "Copy All" to copy all UUIDs
6. Paste into your database script
Example 3: Decoding a JWT Token
1. Copy JWT token from your application
2. Click "JWT Decoder" tab
3. Paste token into the input field
4. Automatically see decoded header and payload
5. Review claims and expiration date
- Ctrl/Cmd + K: Focus search bar
- Escape: Clear search or close dialogs
- Arrow Keys: Navigate between tabs (when not in input fields)
- Ctrl/Cmd + /: Focus search (alternative)
- 🌓 Theme Toggle: Click the theme button in the header to switch between light/dark modes
- 💾 Auto-Save: Your last used tool is remembered when you return
- 📱 Mobile Friendly: Works great on phones and tablets
- 🔒 Privacy: All data stays in your browser - nothing is sent to any server
- ⚡ Fast: Process large files instantly (everything runs locally)
Let me explain what each file and folder does in simple terms:
- Purpose: Landing page that automatically redirects users to the main app
- Why it exists: Provides a clean entry point and fallback if JavaScript fails
- What it does: Uses both JavaScript and meta refresh to redirect to
app/index.html
- Purpose: Complete project documentation
- What's inside: Everything you need to know about the project
- Who it's for: Developers, users, and contributors
- Purpose: The main application page
- What's inside:
- Header with logo, search, and theme toggle
- Tab navigation for tools
- Main content area where tools are loaded
- Footer with links
- How it works: Loads all CSS and JavaScript files, provides the shell for tools
- Purpose: Static resources like images and icons
- Contents: Icon files used throughout the app
- Usage: Referenced by CSS and HTML for visual elements
- Purpose: Application entry point and initialization
- What it does:
- Bootstraps the entire application
- Initializes all modules (theme, navigation, router)
- Sets up event listeners
- Loads tools from registry
- Manages application state
- Key functions:
initializeApp()- Starts everythingloadTool()- Loads and mounts a specific tooltoggleTheme()- Switches between light/dark themeshandleSearch()- Filters tools based on search
- Purpose: Hash-based routing system for navigation
- What it does:
- Listens for URL hash changes (#tool=json-validator)
- Loads appropriate tool when URL changes
- Updates browser history
- Handles browser back/forward buttons
- Why it's important: Allows bookmarking specific tools and browser navigation
- Key functions:
navigate()- Change to a different toolloadTool()- Load and mount a tool modulehandleHashChange()- React to URL changes
- Purpose: Central registry of all available tools
- What it does:
- Defines all tools (name, icon, description, path)
- Manages enabled/disabled state
- Provides search and filter capabilities
- Dynamically loads tool modules
- Key data: Array of tool configurations with metadata
- Key functions:
getAll()- Get all toolsgetEnabled()- Get only enabled toolssearch()- Search tools by name/description/tagsloadTool()- Dynamically load tool JavaScript
- Purpose: Tab navigation system
- What it does:
- Renders tool tabs in the navigation
- Handles tab selection and active state
- Provides keyboard navigation
- Integrates with search functionality
- Key functions:
init()- Initialize tab systemrender()- Create tab elementsselectTab()- Activate a specific tabhandleSearch()- Filter tabs based on search
- Purpose: Notification system for user feedback
- What it does:
- Shows temporary messages (success, error, info, warning)
- Auto-dismisses after a delay
- Supports actions and persistent notifications
- Prevents duplicate notifications
- Usage:
Toasts.success('Copied!')orToasts.error('Failed') - Key functions:
show()- Display a toastsuccess(),error(),warning(),info()- Convenience methodsremove()- Dismiss a toastloading()- Show loading indicator
- Purpose: Handle copy-to-clipboard operations
- What it does:
- Uses modern Clipboard API when available
- Falls back to execCommand for older browsers
- Integrates with toast notifications
- Provides helper functions for adding copy buttons
- Key functions:
copy()- Copy text to clipboardcopyWithToast()- Copy with automatic notificationaddCopyButton()- Add copy button to any element
- Purpose: DOM manipulation helpers
- What it does:
- Simplifies common DOM operations
- Provides jQuery-like shortcuts
- Handles element creation, selection, events
- Key functions:
qs()- querySelector shortcutqsa()- querySelectorAll shortcutel()- Create elementon()- Add event listenerclear()- Remove all child elements
- Purpose: File download functionality
- What it does:
- Creates downloadable files from text/data
- Triggers browser download
- Supports various file types
- Key functions:
download()- Download text as filedownloadBlob()- Download binary datadownloadJSON()- Download JSON file
- Purpose: LocalStorage management
- What it does:
- Saves user preferences (theme, last tool)
- Stores tool states and settings
- Handles serialization/deserialization
- Provides migration support
- Key functions:
get(),set()- Basic storage operationsgetLastTool(),setLastTool()- Remember last toolgetPreferences()- User preferencesgetToolState()- Save/restore tool state
- Purpose: Sub-tab navigation within tools
- What it does:
- Manages tabs inside individual tools
- Handles tab switching animation
- Used by tools with multiple modes (JSON tool has Validator/Beautifier/Minifier)
- Key functions:
init()- Initialize sub-tab systemswitchTab()- Change active sub-tab
- Purpose: Base styles and CSS resets
- What's inside:
- CSS reset for consistent cross-browser rendering
- Base typography and spacing
- Layout structures (grid, flexbox)
- Common component styles (buttons, inputs, panels)
- Responsive design breakpoints
- Purpose: Theme variables and color schemes
- What's inside:
- CSS custom properties (variables) for colors
- Light theme colors
- Dark theme colors
- Auto theme (based on system preference)
- Transition effects for theme switching
- How it works: Changes
:rootvariables to switch themes instantly
- Purpose: Styles for sub-tab components
- What's inside:
- Tab button styles
- Active/inactive states
- Tab content panel styles
- Animations for tab switching
Each tool follows the same structure for consistency:
base64/
├── tool.css # Tool-specific styles
├── tool.html # Tool UI template
└── tool.js # Tool logic and functionality
tool.js - JavaScript Module:
- Defines the tool's behavior
- Exports
mount()andunmount()functions - Handles user interactions
- Processes input and generates output
- Integrates with utilities (clipboard, storage, etc.)
tool.html - HTML Template:
- Defines the tool's structure
- Contains input/output panels
- Includes buttons and controls
- Uses semantic HTML
tool.css - Stylesheet:
- Tool-specific styling
- Overrides or extends base styles
- Ensures consistent look with the app
- Responsive adjustments
- What it does: Validates, beautifies, and minifies JSON
- Features:
- Syntax validation with error line numbers
- Beautify with custom indentation (2 spaces, 4 spaces, tabs)
- Minify to reduce file size
- File upload support
- Character and line counting
- Use cases: Debugging API responses, formatting configuration files
- What it does: Encode/decode Base64
- Features:
- Text encoding/decoding
- File encoding (any type)
- URL-safe encoding option
- Drag & drop support
- Progress indicator for large files
- Use cases: Email attachments, data URIs, authentication tokens
- What it does: URL percent-encoding/decoding
- Features:
- encodeURI and encodeURIComponent modes
- Decode malformed URLs
- Examples and use cases
- Validation status
- Use cases: Query parameters, URL building, form data
- What it does: Generate UUIDs (v4)
- Features:
- Bulk generation (1-1000)
- Multiple formats (uppercase, lowercase, braces, no hyphens)
- UUID validation
- Copy individual or all
- Use cases: Database primary keys, unique identifiers, session tokens
- What it does: Decode JWT tokens
- Features:
- Header and payload decoding
- Timestamp conversion
- Claims inspection
- No signature verification (client-side only)
- Use cases: Debugging authentication, inspecting token claims
- What it does: Color format conversion
- Features:
- HEX ↔ RGB ↔ HSL conversion
- Color picker
- Contrast ratio checker
- WCAG accessibility compliance
- Use cases: Design systems, accessibility testing, CSS development
- What it does: Compare text and JSON
- Features:
- Side-by-side comparison
- Line-by-line diff
- Highlight additions/deletions/changes
- JSON-aware comparison
- Use cases: Code review, comparing configurations, finding changes
-
Initialization Flow:
User opens app/index.html → Loads CSS files (base, theme, subtabs) → Loads JavaScript files (utils, ui, registry, router, main) → main.js initializes everything → Router checks URL hash → Loads appropriate tool or shows home -
Tool Loading Process:
User clicks tool or navigates via URL → Router.navigate() is called → Router.loadTool() fetches tool module → Tool's mount() function is called → Tool HTML/CSS injected into container → Tool event listeners set up → Tool state restored from localStorage (if any) -
Data Flow:
User Input → Tool processes locally (JavaScript) → Result displayed immediately → State saved to localStorage (optional) → User can copy/download result
- Module Pattern: Each tool is a self-contained module
- Observer Pattern: Event listeners for user interactions
- Singleton Pattern: Global utilities (DOM, Clipboard, Storage)
- Factory Pattern: Tool registry creates tool instances
- Strategy Pattern: Different encoding/decoding strategies in tools
-
No Framework:
- Pros: Lightweight, fast, easy to understand
- Cons: More manual DOM manipulation
-
Hash Routing:
- Pros: Works without server, enables bookmarking
- Cons: Not as elegant as pushState
-
LocalStorage for State:
- Pros: Persist user preferences, fast access
- Cons: Limited storage, no encryption
-
Inline Tool Loading:
- Pros: Avoids CORS issues, works offline
- Cons: Tools defined in tools-registry.js
-
Create Tool Folder:
mkdir -p tools/my-new-tool cd tools/my-new-tool -
Create Tool Files:
tool.js- Main logictool.html- UI template (optional)tool.css- Styles (optional)
-
Implement tool.js:
const Tool_my_new_tool = { mount: async (container) => { // Create and insert your UI container.innerHTML = ` <div class="my-tool"> <h2>My New Tool</h2> <!-- Your tool UI here --> </div> `; // Set up event listeners // Initialize tool }, unmount: async () => { // Clean up (remove listeners, etc.) } }; window.Tool_my_new_tool = Tool_my_new_tool;
-
Register in tools-registry.js:
{ id: 'my-new-tool', name: 'My New Tool', description: 'Does something amazing', icon: '🎯', modulePath: '../tools/my-new-tool/tool.js', category: 'utilities', tags: ['new', 'tool', 'amazing'], disabled: false }
-
Load tool script in app/index.html:
<script src="../tools/my-new-tool/tool.js"></script>
-
Test your tool:
- Open app/index.html
- Navigate to your tool
- Test all functionality
- Use ES6+ features (const/let, arrow functions, async/await)
- Follow consistent naming: camelCase for functions, PascalCase for classes
- Comment complex logic
- Keep functions small and focused
- Use meaningful variable names
- Handle errors gracefully
Before submitting changes:
- Tool loads without errors
- All features work as expected
- Responsive design (mobile/tablet/desktop)
- Works in Chrome, Firefox, Safari
- No console errors
- Proper error handling
- Accessibility (keyboard navigation, screen readers)
- LocalStorage integration (if needed)
- Implement Hash Generator tool
- Implement Epoch/Time Converter tool
- Implement CSV ↔ JSON Converter tool
- Add PWA support (offline mode, install prompt)
- Improve accessibility (ARIA labels, better keyboard navigation)
- Add more keyboard shortcuts
- Add more tools (Markdown Editor, Regex Tester, etc.)
- Implement tool favorites/bookmarks
- Add tool usage statistics
- Export/import tool configurations
- Add multi-language support (i18n)
- Improve performance for large files
- Plugin system for community-contributed tools
- Cloud sync for preferences (optional)
- Collaboration features (share tool state via URL)
- Browser extension version
- Desktop app version (Electron)
- Mobile app versions
Contributions are welcome! Here's how you can help:
- Report Bugs: Open an issue with details
- Suggest Features: Describe what you'd like to see
- Submit Pull Requests: Fork, develop, test, submit
- Improve Documentation: Fix typos, add examples
- Share Feedback: Let us know what you think
This project is open source and available under the MIT License.
- Built with ❤️ for developers
- Inspired by various online developer tools
- Thanks to all contributors and users
For questions, suggestions, or feedback:
- Open an issue on GitHub
- Submit a pull request
- Star the project if you find it useful!
Happy Coding! 🚀
Last Updated: November 19, 2025 Version: 1.0.0 Status: Active Development