{"id":18838627,"url":"https://github.com/beeware/briefcase-macos-app-template","last_synced_at":"2025-08-04T06:15:32.609Z","repository":{"id":51268828,"uuid":"216302637","full_name":"beeware/briefcase-macOS-app-template","owner":"beeware","description":"A template for generating macOS app projects with Briefcase","archived":false,"fork":false,"pushed_at":"2025-07-19T11:21:38.000Z","size":178656,"stargazers_count":28,"open_issues_count":1,"forks_count":19,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-07-19T16:11:58.130Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beeware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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,"zenodo":null},"funding":{"github":["freakboy3742"],"custom":["http://beeware.org/bee/join"]}},"created_at":"2019-10-20T03:34:45.000Z","updated_at":"2025-07-19T11:31:44.000Z","dependencies_parsed_at":"2023-10-24T23:26:48.124Z","dependency_job_id":"42cc6032-dc52-452a-ba37-3df7f7c85c06","html_url":"https://github.com/beeware/briefcase-macOS-app-template","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/beeware/briefcase-macOS-app-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeware%2Fbriefcase-macOS-app-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeware%2Fbriefcase-macOS-app-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeware%2Fbriefcase-macOS-app-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeware%2Fbriefcase-macOS-app-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beeware","download_url":"https://codeload.github.com/beeware/briefcase-macOS-app-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beeware%2Fbriefcase-macOS-app-template/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268657536,"owners_count":24285521,"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","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-08T02:40:08.171Z","updated_at":"2025-08-04T06:15:32.597Z","avatar_url":"https://github.com/beeware.png","language":"Python","funding_links":["https://github.com/sponsors/freakboy3742","http://beeware.org/bee/join"],"categories":[],"sub_categories":[],"readme":"# Briefcase macOS App Template\n\n\nA [Cookiecutter](https://github.com/cookiecutter/cookiecutter/) template\nfor building Python apps that will run under macOS.\n\n## Using this template\n\nThe easiest way to use this project is to not use it at all - at least,\nnot directly. [Briefcase](https://github.com/beeware/briefcase/) is a\ntool that uses this template, rolling it out using data extracted from a\n`pyproject.toml` configuration file.\n\nHowever, if you *do* want use this template directly...\n\n1.  Install\n    [Cookiecutter](https://github.com/cookiecutter/cookiecutter). This\n    is a tool used to bootstrap complex project templates:\n\n        $ pip install cookiecutter\n\n2.  Run `cookiecutter` on the template:\n\n        $ cookiecutter https://github.com/beeware/briefcase-macOS-app-template\n\n    This will ask you for a number of details of your application,\n    including the name of your application (which should be a\n    valid PyPI identifier), and the Formal Name of your application\n    (the full name you use to describe your app). The remainder of these\n    instructions will assume a name of `my-project`, and a formal name\n    of `My Project`.\n\n3.  [Obtain a Python Apple support package for\n    macOS](https://github.com/beeware/Python-Apple-support), and extract\n    it into the `My Project/My Project.app/Contents/Resources/Suppoort`\n    directory generated by the template.\n\n4.  Obtain a stub binary, and add it as a file named `My Project` in the\n    `My Project/My Project.app/Contents/MacOS/` directory generated by\n    the template. The [stub\n    project](https://github.com/beeware/briefcase-macOS-Xcode-template/tree/main/stub)\n    in the [Briefcase macOS Xcode\n    template](https://github.com/beeware/briefcase-macOS-Xcode-template)\n    generates two stub binaries - one for GUI apps, and one for console\n    apps; copy the appropriate executable from that project into your\n    app template.\n\n5.  Add your code to the template, into the\n    `My Project/My Project.app/Contents/Resources/app` directory. At the\n    very minimum, you need to have an `app/\u003capp name\u003e/__main__.py` file\n    that defines an entry point that will start your application.\n\n    If your code has any dependencies, they should be installed into the\n    `My Project/My Project.app/Contents/Resources/app_packages`\n    directory.\n\nIf you've done this correctly, a project with a formal name of\n`My Project`, with an app name of `my-project` should have a directory\nstructure that looks something like:\n\n    My Project/\n        My Project.app/\n            Contents/\n                MacOS/\n                    My Project\n                Resources/\n                    app/\n                        README\n                        my_project/\n                            __init__.py\n                            __main__.py\n                    app_packages/\n                        README\n                        ...\n                    Support/\n                        ...\n                        VERSIONS\n                    my-project.icns\n                Info.plist\n        installer/\n            resources/\n                welcome.html\n            scripts/\n                postinstall\n            Distribution.xml\n        Entitlements.plist\n        briefcase.toml\n\nThe `My Project.app` directory should identify as an macOS application\nthat can be started by clicking on the application icon in Finder. It\ncan also be distributed as a standalone package.\n\nBefore you can run the app, you will need to sign any binary files,\nframeworks and embedded apps in the `My Project.app` folder, as well as\nthe `My Project.app` folder itself. The `Entitlements.plist` file should\nbe a good starting point for the entitlements required to sign the app.\n\n## Next steps\n\nOf course, running Python code isn't very interesting by itself - you\nwon't be able to do any console input or output, because a macOS app\ndoesn't display a console.\n\nTo do something interesting, you'll need to work with the native macOS\nsystem libraries to draw widgets and respond to user input. The [Rubicon\nObjective C](https://github.com/beeware/rubicon-objc) bridging library\ncan be used to interface with the macOS system libraries. Alternatively,\nyou could use a cross-platform widget toolkit that supports macOS (such\nas [Toga](https://github.com/beeware/toga)) to provide a GUI for your\napplication.\n\nIf you have any external library dependencies (like Toga, or anything\nother third-party library), you should install the library code into the\n`app_packages` directory. This directory is the same as a\n`site_packages` directory on a desktop Python install.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeware%2Fbriefcase-macos-app-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeeware%2Fbriefcase-macos-app-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeeware%2Fbriefcase-macos-app-template/lists"}