zwischenparkung

This commit is contained in:
th committed 2026-04-12 16:09:34 +02:00
1 parent 22a43fdef7
commit ee192a15e7
15 files changed
+5365 -9

No files matched your search

+67
View File
@@ -0,0 +1,67 @@
# 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)
```