A unified rapid prototyping tool that supports multiple programming languages. Currently supports JavaScript/TypeScript and PHP, with architecture designed for easy addition of more languages in the future.
- Multi-language Support: Switch between JavaScript/TypeScript and PHP seamlessly
- Language-specific Package Management:
- NPM for JavaScript/TypeScript
- Composer for PHP
- Language-aware Snippets: Snippets are organized by language with appropriate file extensions
- Monaco Editor: Full-featured code editor with syntax highlighting and IntelliSense
- Magic Comments: Inline value inspection using comments (e.g.,
// $variable) - Auto-run: Automatically execute code on changes (configurable)
- Multiple Tabs: Work on multiple files simultaneously
fastTinker/
├── src/
│ ├── main.js # Electron main process with multi-language execution
│ └── preload.js # Preload script for secure IPC
├── scripts/
│ └── renderer.js # Renderer process (UI logic with language switching)
├── styles/
│ └── main.css # Application styles
├── index.html # Main HTML file with language selector
├── package.json # Project configuration
└── README.md # This file
The original implementations are preserved as separate repositories for reference:
- File extensions:
.js,.ts - Package manager: NPM
- Default runtime: Node.js
- File extensions:
.php - Package manager: Composer
- Default runtime: PHP CLI
- Select Language: Use the dropdown in the tab bar to switch between JavaScript/TypeScript and PHP
- Write Code: Start coding in the editor
- Run Code: Press
Ctrl+Enter(orCmd+Enteron Mac) or click the Run button - Install Packages: Go to Settings > Packages section and install packages for the current language
- Save Snippets: Use the Snippets panel to save and load code snippets
# Install dependencies
npm install
# Run in development mode
npm start
# Build for distribution
npm run buildThe architecture is designed to easily add new languages. To add a new language:
- Update
LANGUAGESobject insrc/main.jswith language configuration - Add language-specific execution handler in
src/main.js - Add language option to the selector in
index.html - Update default content in
scripts/renderer.jsinitializeEditor()function
MIT