{"id":22220545,"url":"https://github.com/drawbotics/quote-builder","last_synced_at":"2025-03-25T07:41:30.955Z","repository":{"id":37217338,"uuid":"157099574","full_name":"Drawbotics/quote-builder","owner":"Drawbotics","description":"Desktop app to create quotes","archived":false,"fork":false,"pushed_at":"2022-12-10T16:43:29.000Z","size":9064,"stargazers_count":1,"open_issues_count":32,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-30T07:12:35.897Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/Drawbotics.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}},"created_at":"2018-11-11T16:43:30.000Z","updated_at":"2021-03-19T13:46:25.000Z","dependencies_parsed_at":"2023-01-26T09:31:27.202Z","dependency_job_id":null,"html_url":"https://github.com/Drawbotics/quote-builder","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawbotics%2Fquote-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawbotics%2Fquote-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawbotics%2Fquote-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drawbotics%2Fquote-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Drawbotics","download_url":"https://codeload.github.com/Drawbotics/quote-builder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245422922,"owners_count":20612725,"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-12-02T23:09:02.911Z","updated_at":"2025-03-25T07:41:30.933Z","avatar_url":"https://github.com/Drawbotics.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"assets/icons/icon.png\" width=200 /\u003e\n\n# Quote Builder\nAlso known as Quote De Porc, it's an `electron` app to build client price offers (quotes). Targets Mac OS, since everyone here uses Macs. See the [data](docs/data.md) doc to learn about the app more in detail.\n\n### Installation (for an end user)\n**NOTE** This process is also documented in more detail in the [Notion document](https://www.notion.so/drawbotics/Quote-de-Porc-de54dd0780f04f2db5c6762f3b8d787b) about Quote De Porc.\n1. Go to the \"releases\" page and download the `QuoteDP-mac.zip` file.\n2. Unzip the file and you should find the `QuoteDP` app in the folder; copy this app to your `Applications` directory.\n3. Fire up the app\n4. (later) While using the app, you might get a notification that a new version is available. Before that happens, the system will ask you for your password since the update will replace the app file in the Application directory.\n\n### To develop\nTo get started with developing it's very straightforward. Before anything, clone the repo.\nYou will find a `.env.template` file, which you need to duplicate and rename to `.env`. The following env vars are necessary:\n- `WEBPACK_PORT`: up to you\n- `APP_ENV`: should be `development`\n- `CERTIFICATE_IDENTITY`: used for packaging and publishing, see [here](#to-build-for-production) for more info about it.\n\n```\nnpm install\n```\nThen\n```\nnpm run webpack-server\n```\nTo run the development server. In a separate process, run\n```\nnpm start\n```\nTo begin the electron app. If the `npm start` command starts electron before the dev server, CMD+r to refresh the page and load the bundle. Reloading only works in development, which is why it is disabled in production.\n\n### To build for production\nWe need to generate the bundles in the `dist` folder and the final packaged app in the `builds` folder. This is all taken care of with the command:\n```\nnpm run package\n```\n**NOTE** Here you need to have the `CERTIFICATE_IDENTITY` env var set to sign the application. Signing is necessary to have the automatic updates. See [here](docs/signing-certificates.md) how to generate your own signing certificate on your computer. We can use the Mac Developer certificate (used to distribute development builds) as a signing certificate since we're not distributing our app through the App Store.\n\n**NOTE (bis)** The signing command sometimes fails when new files such as images etc are introduced, so it's a good idea to run `xattr -rc .` to remove all the unsupported file attributes in the project before running the package command.\n\nA free (i.e. not registered to the Apple Developer Program) certificate for Mac apps should have this format: `Mac Developer: [apple_id] ([certificate_id])` where `certificate_id` is a 10 character sequence of capital letters and numbers. This is the value you should assign to `CERTIFICATE_IDENTITY`.\n\nThis step will generate the following things in the `builds`:\n- `QuoteDP-darwin-x64`: is the folder containing the packaged .app (this is what's being signed)\n- `QuoteDP.dmg`: the installer for the app. We don't currently use this but it's being generated just in case.\n- `QuoteDP-mac.zip`: this is the file that will be added to the Github release, and which will be used to get new updates automatically\n\n\n### To publish\nTo publish a new version of this app follow these steps:\n\n0. Before building the app as described above, you should have bumped the version in the `package.json`. This is important as it's through the package versions that we know if a new update is available\n1. Create a new tag with `git tag v[new-version]` which should follow the `version` value in the `package.json` e.g. `v1.2.3`.\n2. Push tags with `git push --tags`\n3. Go on Github and in the \"releases\" page click on \"Draft a new release\"\n4. For the tag version choose the tag you just pushed\n5. The release title should follow the tag version without the `v`, e.g. `1.2.3`. In the description put any new significant feature/bug fix that should be documented\n6. Upload the `QuoteDP-mac.zip` generated during the last build (this is downloaded when the app detects a new version)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrawbotics%2Fquote-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrawbotics%2Fquote-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrawbotics%2Fquote-builder/lists"}