{"id":13741147,"url":"https://github.com/sillsdev/pdfdroplet","last_synced_at":"2025-12-30T03:43:45.823Z","repository":{"id":13053828,"uuid":"58595905","full_name":"sillsdev/pdfdroplet","owner":"sillsdev","description":"Library and GUI for imposition of PDF pages (e.g. 2-up)","archived":false,"fork":false,"pushed_at":"2024-08-06T21:40:34.000Z","size":3875,"stargazers_count":6,"open_issues_count":0,"forks_count":7,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-11-15T11:36:21.088Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://software.sil.org/pdfdroplet/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sillsdev.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-12T01:15:22.000Z","updated_at":"2024-08-14T07:43:32.000Z","dependencies_parsed_at":"2024-08-07T00:17:35.040Z","dependency_job_id":"1abfe2d5-dc25-49c8-855b-2fee8f3925f9","html_url":"https://github.com/sillsdev/pdfdroplet","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fpdfdroplet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fpdfdroplet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fpdfdroplet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sillsdev%2Fpdfdroplet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sillsdev","download_url":"https://codeload.github.com/sillsdev/pdfdroplet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253153163,"owners_count":21862318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T04:00:56.027Z","updated_at":"2025-12-30T03:43:45.819Z","avatar_url":"https://github.com/sillsdev.png","language":"C#","readme":"PdfDroplet is a simple little windows app which only does one thing: it takes your PDF and gives you a new one, with the pages combined and reordered, ready for saving and printing as booklets.\n\n# Application Requirements\n\n- Windows\n- [.NET SDK 8.0](https://dotnet.microsoft.com/download)\n- Microsoft Edge WebView2 Runtime (normally installed automatically with Edge; installers should ship it as well).\n\n# Development\n\n## Prerequisites\n\n- [Node.js 18+](https://nodejs.org/) for the React/Vite frontend build\n\n## Quick Start\n\n### Basic Workflow (Backend Only)\n\nIf you're only working on the .NET backend code:\n\n1. Open `PdfDroplet.sln` in Visual Studio\n2. Press F5 to build and run\n\nThe solution will automatically:\n\n- Install npm dependencies (first time)\n- Build the frontend with Vite\n- Launch the application\n\n### Frontend Development Workflow\n\nIf you're working on the frontend (React/TypeScript):\n\n1. **Start the Vite dev server** (one-time per session):\n\n   ```bash\n   cd browser\n   npm install    # First time only\n   npm run dev\n   ```\n\n   This starts a development server at `http://localhost:5173` with hot module replacement (HMR). You'll get UI in your browser that is just faking the back end.\n\n2. Optionally **Run the application** from Visual Studio (F5)\n\n3. **Make changes** to your React/TypeScript code - they will appear instantly without rebuilding!\n\nThe application automatically detects when the Vite dev server is running and uses it instead of the built files. You'll see this message in the console:\n\n```\n✓ Connected to Vite dev server at http://localhost:5173 - Hot reload enabled!\n```\n\nWhen the dev server is running, the `browser` project skips the `npm run build` step, making your builds much faster.\n\n## Project Structure\n\nThe solution contains two projects:\n\n- **`dotnet`** (`src/DotNet.csproj`) - The main .NET WinForms application\n- **`browser`** (`browser/browser.proj`) - The React/Vite frontend build system\n\nThe `dotnet` project depends on `browser`, which handles:\n\n- Installing npm dependencies\n- Detecting if Vite dev server is running\n- Building the frontend with Vite (when dev server is not running)\n- Copying built assets to the output directory\n\n## Building from Command Line\n\n```bash\n# Build everything\ndotnet build PdfDroplet.sln\n\n# Build and run\ndotnet run --project src/DotNet.csproj\n\n# Clean all build artifacts (including frontend)\ndotnet clean PdfDroplet.sln\n```\n\n## Frontend Testing\n\nAll frontend npm scripts live in the `browser/` workspace. Run them from that directory:\n\n```bash\ncd browser\nnpm run test:e2e    # End-to-end tests with Playwright\n```\n\n### Disable Analytics\n\nWe don't want developer and tester runs (and crashes) polluting our statistics. For debug builds, the program will not send analytics. But if you are testing a release version, please first set this environment variable:\n\n```\nSIL_FEEDBACK=off\n```\n\n## License\n\nThis project is licensed under the MIT License.\n\nCopyright © SIL Global 2012-2025\n","funding_links":[],"categories":["Software"],"sub_categories":["Utilities"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsillsdev%2Fpdfdroplet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsillsdev%2Fpdfdroplet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsillsdev%2Fpdfdroplet/lists"}