From 1feb694534c79ee0c40da664a5e2a64e976ad873 Mon Sep 17 00:00:00 2001
From: LeenkxTeam <info@leenkx.com>
Date: Fri, 24 Jan 2025 06:06:28 +0000
Subject: [PATCH] Update README.md

---
 README.md | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 130 insertions(+)

diff --git a/README.md b/README.md
index b9c4a72..41b7004 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,132 @@
 # LNXBOX
 
+### Get the code
+
+```
+$ git clone https://dev.leenkx.com/LeenkxTeam/LNXBOX.git
+$ cd LNXBOX
+$ npm install
+```
+
+### Run the app
+
+```
+$ npm start
+```
+
+### Watch the code
+
+Restart the app automatically every time code changes. Useful during development.
+
+```
+$ npm run watch
+```
+
+### Run linters
+
+```
+$ npm test
+```
+
+### Run integration tests
+
+```
+$ npm run test-integration
+```
+
+The integration tests use Spectron and Tape. They click through the app, taking screenshots and
+comparing each one to a reference. Why screenshots?
+
+* Ad-hoc checking makes the tests a lot more work to write
+* Even diffing the whole HTML is not as thorough as screenshot diffing. For example, it wouldn't
+  catch an bug where hitting ESC from a video doesn't correctly restore window size.
+* Chrome's own integration tests use screenshot diffing iirc
+* Small UI changes will break a few tests, but the fix is as easy as deleting the offending
+  screenshots and running the tests, which will recreate them with the new look.
+* The resulting Github PR will then show, pixel by pixel, the exact UI changes that were made! See
+  https://github.com/blog/817-behold-image-view-modes
+
+For MacOS, you'll need a Retina screen for the integration tests to pass. Your screen should have
+the same resolution as a 2018 MacBook Pro 13".
+
+For Windows, you'll need Windows 10 with a 1366x768 screen.
+
+When running integration tests, keep the mouse on the edge of the screen and don't touch the mouse
+or keyboard while the tests are running.
+
+### Package the app
+
+Builds app binaries for Mac, Linux, and Windows.
+
+```
+$ npm run package
+```
+
+To build for one platform:
+
+```
+$ npm run package -- [platform] [options]
+```
+
+Where `[platform]` is `darwin`, `linux`, `win32`, or `all` (default).
+
+The following optional arguments are available:
+
+- `--sign` - Sign the application (Mac, Windows)
+- `--package=[type]` - Package single output type.
+   - `deb` - Debian package
+   - `rpm` - RedHat package
+   - `zip` - Linux zip file
+   - `dmg` - Mac disk image
+   - `exe` - Windows installer
+   - `portable` - Windows portable app
+   - `all` - All platforms (default)
+
+Note: Even with the `--package` option, the auto-update files (.nupkg for Windows,
+-darwin.zip for Mac) will always be produced.
+
+#### Windows build notes
+
+The Windows app can be packaged from **any** platform.
+
+Note: Windows code signing only works from **Windows**, for now.
+
+Note: To package the Windows app from non-Windows platforms,
+[Wine](https://www.winehq.org/) and [Mono](https://www.mono-project.com/) need
+to be installed. For example on Mac, first install
+[XQuartz](http://www.xquartz.org/), then run:
+
+```
+$ brew install wine mono
+```
+
+(Requires the [Homebrew](http://brew.sh/) package manager.)
+
+#### Mac build notes
+
+The Mac app can only be packaged from **macOS**.
+
+#### Linux build notes
+
+The Linux app can be packaged from **any** platform.
+
+If packaging from Mac, install system dependencies with Homebrew by running:
+
+```
+npm run install-system-deps
+```
+#### Recommended readings to start working in the app
+
+Electron (Framework to make native apps for Windows, OSX and Linux in Javascript):
+https://electronjs.org/docs/tutorial/quick-start
+
+React.js (Framework to work with Frontend UI):
+https://reactjs.org/docs/getting-started.html
+
+Material UI (React components that implement Google's Material Design.):
+https://material-ui.com/getting-started/installation
+
+
+## License
+
+MIT. Copyright (c) [Leenkx Team](https://leenkx.com).