{"id":13570762,"url":"https://github.com/simonw/datasette-app","last_synced_at":"2025-05-12T18:55:14.258Z","repository":{"id":45028800,"uuid":"399308604","full_name":"simonw/datasette-app","owner":"simonw","description":"The Datasette macOS application","archived":false,"fork":false,"pushed_at":"2024-08-27T21:14:34.000Z","size":405,"stargazers_count":120,"open_issues_count":33,"forks_count":7,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-10-18T07:53:45.554Z","etag":null,"topics":["datasette"],"latest_commit_sha":null,"homepage":"https://datasette.io/desktop","language":"JavaScript","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/simonw.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":"2021-08-24T02:21:37.000Z","updated_at":"2024-10-15T10:42:33.000Z","dependencies_parsed_at":"2024-08-27T22:46:04.247Z","dependency_job_id":"f7194618-8dc8-4a9b-a40a-4dbd2d57f9fc","html_url":"https://github.com/simonw/datasette-app","commit_stats":{"total_commits":163,"total_committers":2,"mean_commits":81.5,"dds":"0.012269938650306789","last_synced_commit":"0369322103e655135af624319b626b21d3ec85c4"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonw%2Fdatasette-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonw%2Fdatasette-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonw%2Fdatasette-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonw%2Fdatasette-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonw","download_url":"https://codeload.github.com/simonw/datasette-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253804745,"owners_count":21967050,"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":["datasette"],"created_at":"2024-08-01T14:00:54.796Z","updated_at":"2025-05-12T18:55:14.235Z","avatar_url":"https://github.com/simonw.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Datasette Desktop\n\nA macOS desktop application that wraps [Datasette](https://datasette.io/). See [Building a desktop application for Datasette](https://simonwillison.net/2021/Aug/30/datasette-app/) for background on this project.\n\n## Installation\n\nGrab the latest release from [the releases page](https://github.com/simonw/datasette-app/releases). Download `Datasette.app.zip`, uncompress it and drag `Datasette.app` to your `/Applications` folder - then double-click the icon.\n\nThe first time you launch the app it will install the latest version of Datasette, which could take a little while. Subsequent application launches will be a lot quicker.\n\n## Application features\n\n- Includes a full copy of Python which stays separate from any other Python versions you may have installed\n- Installs the latest Datasette release the first time it runs\n- The application can open existing SQLite database files or read CSV files into an in-memory database\n- It can also create a new, empty SQLite database file and create tables in that database by importing CSV data\n- By default the server only accepts connections from your computer, but you can use \"File -\u003e Access Control -\u003e Anyone on my networks\" to make it visible to other computers on your network (or devices on your [Tailscale](https://tailscale.com/) network).\n- Datasette plugins can be installed using the \"Install Plugin\" menu item\n\n## How it works\n\nThe app consists of two parts: the Electron app, and a custom Datasette plugin called [datasette-app-support](https://github.com/simonw/datasette-app-support).\n\nYou can install a development version of the app like so:\n\n    # Clone the repo\n    git clone https://github.com/simonw/datasette-app\n    cd datasette-app\n    \n    # Download standalone Python\n    ./download-python.sh\n    \n    # Install Electron dependencies and start it running:\n    npm install\n    npm start\n\nWhen the app first starts up it will create a Python virtual environment in `~/.datasette-app/venv` and install both Datasette and the `datasette-app-support` plugin into that environment.\n\nTo run the Electron tests:\n\n    npm test\n\nThe Electron tests may leave a `datasette` process running. You can find the process ID for this using:\n\n    ps aux | grep xyz\n\nThen use `kill PROCESS_ID` to terminate it.\n\n![datasette-app](https://user-images.githubusercontent.com/9599/131289203-18186b26-49a4-46e9-8925-b9e4745f3252.png)\n\n## How to develop plugins\n\nYou can develop new Datasette plugins directly against your installation of Datasette Desktop. The [Writing Plugins](https://docs.datasette.io/en/stable/writing_plugins.html) documentation mostly applies as-is, but the one extra thing you will need to do is to install an editable version of your plugin directly into the virtual environment used by Datasette Desktop.\n\nTo do this, first create a new plugin in a folder called `datasette-your-new-plugin` with a `setup.py`, as described in the plugin documentation. The easiest way to do that is using the [datasette-plugin cookiecutter template](https://github.com/simonw/datasette-plugin).\n\nThen `cd` into that directory and run the following:\n\n    ~/.datasette-app/venv/bin/pip install -e .\n\nThis will install the plugin into your Datasette Desktop environment, such that any edits you make to the files in that directory will be picked up the next time the embedded Datasette server is restarted.\n\nYou can restart the server either by quitting and restarting the Datasette Desktop application, or by enabling the Debug menu (\"Datasette -\u003e About Datasette -\u003e Enable Debug Menu\") and then using \"Debug -\u003e Restart Server\".\n\n## Release process\n\nTo ship a new release, increment the version number in `package.json` and then [create a new release](https://github.com/simonw/datasette-app/releases/new) with a matching tag.\n\nThen [run a deploy](https://github.com/simonw/datasette.io/actions/workflows/deploy.yml) of [datasette.io](https://datasette.io/) to update the latest release link that is displayed on the [datasette.io/desktop](https://datasette.io/desktop) page.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonw%2Fdatasette-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonw%2Fdatasette-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonw%2Fdatasette-app/lists"}