68 lines
1.9 KiB
Markdown
68 lines
1.9 KiB
Markdown
# hyprcrd — Electron Desktop App
|
|
|
|
Wraps the PHP backend in an Electron shell. A static PHP binary is bundled
|
|
per platform so users don't need PHP installed.
|
|
|
|
## How it works
|
|
|
|
1. On launch, the app starts PHP's built-in server on a random port (`127.0.0.1`)
|
|
2. `router.php` replaces Apache's `.htaccess` rewrite rules
|
|
3. A `BrowserWindow` loads `http://127.0.0.1:<port>/`
|
|
4. On quit, the PHP process is killed cleanly
|
|
|
|
Data is stored in `data/hyprcrd.db` (SQLite), relative to the project root
|
|
(dev) or inside the app's `resources/` directory (packaged).
|
|
|
|
## Development
|
|
|
|
```bash
|
|
cd electron
|
|
npm install
|
|
npm start # launches the app using system or bundled PHP
|
|
```
|
|
|
|
Requires PHP 8.1+ with `pdo_sqlite` and `zip` extensions — either on
|
|
the system PATH or as a static binary in `php-bin/<platform>/`.
|
|
|
|
## Bundling PHP
|
|
|
|
Static PHP binaries are not checked into git. Fetch them before building:
|
|
|
|
```bash
|
|
./fetch-php.sh # downloads ~20MB per platform from static-php-cli
|
|
```
|
|
|
|
Or place them manually (see `php-bin/README.md` for sources):
|
|
|
|
php-bin/linux/php
|
|
php-bin/darwin/php
|
|
php-bin/win32/php.exe
|
|
|
|
The app prefers the bundled binary. If none is found, it falls back to
|
|
system PHP. If neither exists, a dialog tells the user what to install.
|
|
|
|
## Building distributables
|
|
|
|
```bash
|
|
npm run dist
|
|
```
|
|
|
|
Uses `electron-builder`. Output:
|
|
|
|
| Platform | Format | Location |
|
|
|----------|----------|-------------------|
|
|
| macOS | `.dmg` | `dist/` |
|
|
| Windows | NSIS | `dist/` |
|
|
| Linux | AppImage | `dist/` |
|
|
|
|
## File structure
|
|
|
|
```
|
|
electron/
|
|
main.js Electron main process — spawns PHP, creates window
|
|
preload.js Exposes window.hyprcrdElectron (platform, isElectron)
|
|
router.php PHP built-in server router (replaces .htaccess)
|
|
fetch-php.sh Downloads static PHP binaries for all platforms
|
|
php-bin/ Platform-specific PHP binaries (gitignored)
|
|
```
|