first commit
This commit is contained in:
commit
507b0ceb1e
141
README.md
Normal file
141
README.md
Normal file
@ -0,0 +1,141 @@
|
||||
# Hydra Browser
|
||||
|
||||
A visual web browser that displays websites in draggable windows on a canvas, with visual wire connections showing your browsing trail. Built with Electron.
|
||||
|
||||
## Features
|
||||
|
||||
- **Visual Canvas Interface**: Browse websites in floating windows on an infinite canvas
|
||||
- **Draggable Windows**: Move browser windows freely around the canvas
|
||||
- **Wire Connections**: Visual links between parent and child windows (future: click interception)
|
||||
- **CORS Bypass**: Built-in proxy server to load any website
|
||||
- **Dark Theme**: Modern, developer-friendly UI
|
||||
|
||||
## Installation
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
1. Start the application:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
2. Enter a URL in the input field (e.g., `https://example.com`)
|
||||
3. Click "Go" or press Enter
|
||||
4. The website will load in a new window on the canvas
|
||||
5. Drag windows by their title bar
|
||||
6. Close windows with the red close button
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
- **Cmd/Ctrl + T**: Focus URL input
|
||||
- **Cmd/Ctrl + W**: Close active window
|
||||
- **ESC**: Clear URL input
|
||||
|
||||
## Architecture
|
||||
|
||||
### Components
|
||||
|
||||
- **Main Process** (`src/main/index.js`): Electron app initialization and lifecycle
|
||||
- **Proxy Server** (`src/server/proxy.js`): Express server to bypass CORS restrictions
|
||||
- **Renderer Process** (`src/renderer/`): UI and application logic
|
||||
- `index.html`: Main UI structure
|
||||
- `app.js`: Application initialization and event handling
|
||||
- `canvas-manager.js`: Manages canvas, windows, and wire connections
|
||||
- `window-manager.js`: Individual browser window logic
|
||||
- `styles.css`: UI styling
|
||||
|
||||
### How It Works
|
||||
|
||||
1. **Proxy Server**: Runs on `localhost:3001` and fetches web content to bypass CORS
|
||||
2. **Electron Window**: Displays the canvas interface
|
||||
3. **Browser Windows**: Each website is loaded in an iframe within a draggable window
|
||||
4. **Wire Rendering**: SVG paths connect parent and child windows
|
||||
|
||||
## Development
|
||||
|
||||
Run in development mode with DevTools:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
hydra/
|
||||
├── package.json
|
||||
├── README.md
|
||||
└── src/
|
||||
├── main/
|
||||
│ └── index.js # Electron main process
|
||||
├── server/
|
||||
│ └── proxy.js # Proxy server
|
||||
└── renderer/
|
||||
├── index.html # Main UI
|
||||
├── app.js # Application logic
|
||||
├── canvas-manager.js # Canvas management
|
||||
├── window-manager.js # Window management
|
||||
└── styles.css # Styling
|
||||
```
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
- **Link Interception**: Automatically open clicked links in new connected windows
|
||||
- **Multiple Windows**: Better support for managing many windows simultaneously
|
||||
- **Canvas Pan/Zoom**: Navigate large browsing trails
|
||||
- **Session Persistence**: Save and restore browsing sessions
|
||||
- **Window Minimize/Maximize**: Full window management
|
||||
- **Bookmarks**: Quick access to favorite sites
|
||||
- **History**: Track browsing history
|
||||
- **Search**: Find windows by URL or title
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Port 3001 already in use
|
||||
If the proxy server fails to start, another process may be using port 3001. Either:
|
||||
- Stop the conflicting process
|
||||
- Change the port in `src/server/proxy.js` and `src/renderer/window-manager.js`
|
||||
|
||||
### Websites not loading
|
||||
Some websites have strict security policies that prevent them from being embedded:
|
||||
- Try the desktop version of the site
|
||||
- Some sites block iframes entirely (banking sites, social media)
|
||||
- Check the browser console for specific errors
|
||||
|
||||
### Performance issues
|
||||
- Limit the number of open windows (5-10 recommended)
|
||||
- Close unused windows
|
||||
- Some websites are resource-intensive
|
||||
|
||||
## Console Debugging
|
||||
|
||||
Open DevTools (View > Toggle Developer Tools) and use these commands:
|
||||
|
||||
```javascript
|
||||
// Open a URL programmatically
|
||||
app.openURL('https://example.com')
|
||||
|
||||
// Close active window
|
||||
app.closeActiveWindow()
|
||||
|
||||
// Cascade all windows
|
||||
app.cascadeAllWindows()
|
||||
|
||||
// Close all windows
|
||||
app.closeAllWindows()
|
||||
|
||||
// Get canvas manager
|
||||
app.getCanvasManager()
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
## Credits
|
||||
|
||||
Built with Electron, Express, and modern web technologies.
|
||||
Loading…
Reference in New Issue
Block a user