Skip to content

ArjunBiswas-99/DeveloperTools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeveloperTools - Professional Developer Utilities Suite

📖 Table of Contents


🎯 Overview

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.

Key Highlights:

  • 🔒 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

💡 What This Project Does

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.

Simple Example:

  1. You receive a JWT token from an API
  2. Open DeveloperTools in your browser
  3. Click on "JWT Decoder" tab
  4. Paste the token
  5. Instantly see the decoded header and payload
  6. No data sent to any server!

📁 Project Structure

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

Understanding the Structure:

Root Level:

  • index.html - When someone visits the site, this redirects them to the main app
  • Readme.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 footer
  • scripts/ - All the JavaScript that makes the app work
  • styles/ - All the CSS that makes it look pretty
  • tools/ - 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)

🚦 Current Status

✅ Fully Implemented & Working

The following tools are fully functional and ready to use:

  1. 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
  2. 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
  3. 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
  4. 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
  5. JWT Decoder 🎫

    • Decode JWT tokens
    • View header and payload
    • Timestamp conversion
    • Validation status check
    • No verification (client-side only)
  6. Color Utilities 🎨

    • Convert between HEX, RGB, and HSL
    • Color picker integration
    • Contrast ratio checker for accessibility
    • Real-time preview
    • WCAG compliance indicators
  7. Diff Viewer 🔍

    • Compare text side-by-side
    • JSON diff with formatting
    • Highlight additions, deletions, and changes
    • Line-by-line comparison
    • Supports large text files

🚧 Planned (Coming Soon)

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

📊 Project Statistics

  • Total Tools Defined: 10
  • Functional Tools: 7
  • In Development: 3
  • Completion: ~70%

🛠️ Technology Stack

This project is built using modern web technologies, making it accessible and easy to understand:

Frontend Technologies:

  • HTML5 - Structure and semantics
  • CSS3 - Styling with CSS Variables for theming
  • Vanilla JavaScript (ES6+) - No frameworks! Pure JavaScript for maximum performance

Why No Frameworks?

This project intentionally avoids frameworks like React or Vue because:

  1. Simplicity - Easier to understand for beginners
  2. Performance - No framework overhead
  3. Independence - No dependencies to maintain or update
  4. Learning - Great way to understand core web technologies
  5. Portability - Can run anywhere without build steps

Key JavaScript Features Used:

  • 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)

Browser APIs Used:

  • 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

�� Installation & Setup

For End Users (Just Want to Use It):

Option 1: Use Online (Easiest) Simply open app/index.html in any modern web browser. That's it!

Option 2: Run Locally

  1. Download or clone this repository
  2. Navigate to the DeveloperTools folder
  3. Open app/index.html in your web browser
  4. 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)

For Developers (Want to Contribute):

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/

🎮 How to Use

Basic Usage:

  1. Opening the Application

    • Open app/index.html in your web browser
    • You'll see a beautiful homepage with all available tools
  2. 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
  3. 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
  4. 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 Workflows:

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

Keyboard Shortcuts:

  • 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)

Tips & Tricks:

  • 🌓 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)

📂 File & Folder Functionality

Let me explain what each file and folder does in simple terms:

Root Files

index.html

  • 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

Readme.md

  • Purpose: Complete project documentation
  • What's inside: Everything you need to know about the project
  • Who it's for: Developers, users, and contributors

app/ Folder (Main Application)

app/index.html

  • 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

app/assets/

  • Purpose: Static resources like images and icons
  • Contents: Icon files used throughout the app
  • Usage: Referenced by CSS and HTML for visual elements

app/scripts/ Folder (JavaScript Logic)

app/scripts/main.js

  • 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 everything
    • loadTool() - Loads and mounts a specific tool
    • toggleTheme() - Switches between light/dark themes
    • handleSearch() - Filters tools based on search

app/scripts/router.js

  • 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 tool
    • loadTool() - Load and mount a tool module
    • handleHashChange() - React to URL changes

app/scripts/tools-registry.js

  • 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 tools
    • getEnabled() - Get only enabled tools
    • search() - Search tools by name/description/tags
    • loadTool() - Dynamically load tool JavaScript

app/scripts/ui/ Folder (UI Components)

app/scripts/ui/tabs.js

  • 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 system
    • render() - Create tab elements
    • selectTab() - Activate a specific tab
    • handleSearch() - Filter tabs based on search

app/scripts/ui/toasts.js

  • 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!') or Toasts.error('Failed')
  • Key functions:
    • show() - Display a toast
    • success(), error(), warning(), info() - Convenience methods
    • remove() - Dismiss a toast
    • loading() - Show loading indicator

app/scripts/utils/ Folder (Utility Functions)

app/scripts/utils/clipboard.js

  • 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 clipboard
    • copyWithToast() - Copy with automatic notification
    • addCopyButton() - Add copy button to any element

app/scripts/utils/dom.js

  • Purpose: DOM manipulation helpers
  • What it does:
    • Simplifies common DOM operations
    • Provides jQuery-like shortcuts
    • Handles element creation, selection, events
  • Key functions:
    • qs() - querySelector shortcut
    • qsa() - querySelectorAll shortcut
    • el() - Create element
    • on() - Add event listener
    • clear() - Remove all child elements

app/scripts/utils/download.js

  • 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 file
    • downloadBlob() - Download binary data
    • downloadJSON() - Download JSON file

app/scripts/utils/storage.js

  • 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 operations
    • getLastTool(), setLastTool() - Remember last tool
    • getPreferences() - User preferences
    • getToolState() - Save/restore tool state

app/scripts/utils/sub-tabs.js

  • 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 system
    • switchTab() - Change active sub-tab

app/styles/ Folder (CSS Styling)

app/styles/base.css

  • 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

app/styles/theme.css

  • 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 :root variables to switch themes instantly

app/styles/subtabs.css

  • Purpose: Styles for sub-tab components
  • What's inside:
    • Tab button styles
    • Active/inactive states
    • Tab content panel styles
    • Animations for tab switching

tools/ Folder (Individual Tool Modules)

Each tool follows the same structure for consistency:

Tool Structure Example: tools/base64/

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() and unmount() 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

Individual Tools Explained

tools/json-validator/

  • 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

tools/base64/

  • 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

tools/url-encoder-decoder/

  • 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

tools/uuid-generator/

  • 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

tools/jwt-decoder/

  • 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

tools/color-utilities/

  • 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

tools/diff-viewer/

  • 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

🏗️ Architecture Overview

How the Application Works

  1. 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
    
  2. 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)
    
  3. Data Flow:

    User Input
    → Tool processes locally (JavaScript)
    → Result displayed immediately
    → State saved to localStorage (optional)
    → User can copy/download result
    

Design Patterns Used

  1. Module Pattern: Each tool is a self-contained module
  2. Observer Pattern: Event listeners for user interactions
  3. Singleton Pattern: Global utilities (DOM, Clipboard, Storage)
  4. Factory Pattern: Tool registry creates tool instances
  5. Strategy Pattern: Different encoding/decoding strategies in tools

Key Design Decisions

  1. No Framework:

    • Pros: Lightweight, fast, easy to understand
    • Cons: More manual DOM manipulation
  2. Hash Routing:

    • Pros: Works without server, enables bookmarking
    • Cons: Not as elegant as pushState
  3. LocalStorage for State:

    • Pros: Persist user preferences, fast access
    • Cons: Limited storage, no encryption
  4. Inline Tool Loading:

    • Pros: Avoids CORS issues, works offline
    • Cons: Tools defined in tools-registry.js

👨‍💻 Development Guide

Adding a New Tool

  1. Create Tool Folder:

    mkdir -p tools/my-new-tool
    cd tools/my-new-tool
  2. Create Tool Files:

    • tool.js - Main logic
    • tool.html - UI template (optional)
    • tool.css - Styles (optional)
  3. 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;
  4. 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
    }
  5. Load tool script in app/index.html:

    <script src="../tools/my-new-tool/tool.js"></script>
  6. Test your tool:

    • Open app/index.html
    • Navigate to your tool
    • Test all functionality

Code Style Guidelines

  • 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

Testing Checklist

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)

🔮 Future Plans

Short-term Goals

  • 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

Medium-term Goals

  • 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

Long-term Goals

  • 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

🤝 Contributing

Contributions are welcome! Here's how you can help:

  1. Report Bugs: Open an issue with details
  2. Suggest Features: Describe what you'd like to see
  3. Submit Pull Requests: Fork, develop, test, submit
  4. Improve Documentation: Fix typos, add examples
  5. Share Feedback: Let us know what you think

📄 License

This project is open source and available under the MIT License.


🙏 Acknowledgments

  • Built with ❤️ for developers
  • Inspired by various online developer tools
  • Thanks to all contributors and users

📞 Contact

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