{"id":16648599,"url":"https://github.com/clach04/sqlshite","last_synced_at":"2026-01-17T03:46:56.847Z","repository":{"id":219203668,"uuid":"748449879","full_name":"clach04/SQLshite","owner":"clach04","description":"🗄💩 A terrible SQLite Web UI","archived":false,"fork":false,"pushed_at":"2024-08-06T13:35:22.000Z","size":353,"stargazers_count":0,"open_issues_count":35,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-09T17:17:33.113Z","etag":null,"topics":["database","form","json","jsonforms","sql","sqlite","sqlite-database","sqlite3","sqlite3-database","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clach04.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2024-01-26T01:43:51.000Z","updated_at":"2024-08-06T13:35:25.000Z","dependencies_parsed_at":"2024-02-01T05:24:05.180Z","dependency_job_id":"28d3b5c9-d10d-413f-9c2c-4799deb7df5d","html_url":"https://github.com/clach04/SQLshite","commit_stats":null,"previous_names":["clach04/sqlshite"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clach04%2FSQLshite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clach04%2FSQLshite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clach04%2FSQLshite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clach04%2FSQLshite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clach04","download_url":"https://codeload.github.com/clach04/SQLshite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247362794,"owners_count":20926839,"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":["database","form","json","jsonforms","sql","sqlite","sqlite-database","sqlite3","sqlite3-database","web"],"created_at":"2024-10-12T09:04:57.160Z","updated_at":"2026-01-17T03:46:56.814Z","avatar_url":"https://github.com/clach04.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"-*- coding: utf-8 -*-\n\n# SQLshite\n\n🗄💩 A terrible SQLite Web UI\n\nHome page https://github.com/clach04/SQLshite/\n\nNot ready for general consumption, right now only browsing/viewing SQLite3 databases/tables is supported (and then barely).\n\n  * [Overview](#overview)\n  * [Alternatives](#alternatives)\n  * [Getting Started](#getting-started)\n    + [From a source code checkout](#from-a-source-code-checkout)\n      - [Usage](#usage)\n  * [Design](#design)\n    + [URLs](#urls)\n      - [URLs TODO / TBD](#urls-todo---tbd)\n  * [Questions](#questions)\n    + [Datatypes](#datatypes)\n\n\u003csmall\u003e\u003ci\u003e\u003ca href='http://ecotrust-canada.github.io/markdown-toc/'\u003eTable of contents generated with markdown-toc\u003c/a\u003e\u003c/i\u003e\u003c/small\u003e\n\n\n## Overview\n\nAim is a simple UI, that works on mobile for quick search.\nFocused on single table work, rather than fk/pk relationship display. this is mostly implemented, without write (INSERT, DELETE, UPDATE) support (and with UI/UX blemishes). Use cases, less than 100k rows, that would have previously been suitable for use with tools like [Pilot-DB](https://pilot-db.sourceforge.net/), MobileDB, JFile, HanDBase, [Easy Database for Android](https://play.google.com/store/apps/details?id=com.dsiastur.easy_database), etc.\n\nPrimary aim:\n\n  * no security - did you pay attention to the name of this project? (Limit to localhost, use a reverse-proxy over https)\n  * Simple SQL queries (TODO determine transaction model - autocommit is the current plan)\n  * view/edit record, using [jsonschema](https://json-schema.org/) / jsonforms (unlike above where transaction model is unclear, autocommit on save)\n\t  * https://www.google.com/search?q=jsonform\n\t  * TODO research Python libs\n          * https://github.com/RussellLuo/jsonform\n          * https://github.com/python-jsonschema/jsonschema\n\t  * https://github.com/jsonform/jsonform/ -  Bootstrap 3 (end of support as of 2019, https://blog.getbootstrap.com/2019/07/24/lts-plan/#:~:text=Starting%20today%2C%20Bootstrap%203%20will,security%20updates%2C%20and%20documentation%20updates.) https://getbootstrap.com/docs/3.3/\n\t\t* https://jsonform.github.io/jsonform/playground/index.html\n\t\t* https://jsonform.github.io/jsonform/\n\t  * https://github.com/eclipsesource/jsonforms - React, Angular and/or Vue\n\t\t* https://jsonforms.io/examples/basic\n\t\t* https://jsonforms.io/\n  * quick search, with add (either on no match or no good match) using search term as initial value\n\t  * searching either a defined column, the first column, or all columns\n\n## Alternatives\n\n  * https://github.com/mgramin/awesome-db-tools#gui\n\nLocal\n\n  * GUI https://github.com/sqlitebrowser/sqlitebrowser?tab=readme-ov-file#what-it-is\n  * https://github.com/dbcli/litecli\n\nWeb\n\n  * https://github.com/coleifer/sqlite-web\n  * https://github.com/jeffknupp/sandman2\n  * https://github.com/cs91chris/flask_autocrud\n  * https://github.com/mathesar-foundation/mathesar (only one DBMS supported)\n  * https://github.com/vrana/adminer\n  * https://github.com/dbgate/dbgate\n  * https://github.com/pocketbase/pocketbase\n  * https://github.com/mvbasov/sqliteboy\n  * https://github.com/gitvipin/sql30\n\n## Getting Started\n\n### From a source code checkout\n\n    python -m pip install -r requirements.txt\n    # TODO requirements_optional.txt\n    #python -m pip install -e .\n\n#### Usage\n\n\tpython -m sqlshite.web.wsgi\n\tpython -m sqlshite.web.wsgi config.json\n\nWhere `config.json` contains:\n\n\t{\n\t\t\"databases\": {\n\t\t\t\"memory\": \":memory:\",\n\t\t\t\"mydb\": \"mydb.sqlite3\"\n\t\t}\n\t}\n\nThen open:\n\n  * http://localhost:8777/d/\n  * http://localhost:8777/d/memory/ - etc.\n\n\n## Design\n\n### URLs\n\nThat have been implemented\n\n\thttp://localhost/ - browse databases\n\thttp://localhost/d - browse databases\n\n\thttp://localhost/d/DATABASE_NAME - browse tables\n\thttp://localhost/d/DATABASE_NAME/sql - issue SQL queries\n\thttp://localhost/d/DATABASE_NAME/rescan - rescan metadata\n\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME?q=SEARCH_TERM - quick search the first string column with automatic (pre and post) wild card\n\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/jsonform.json - schema in jsonform - format\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/rows - view (TODO cleanup and maybe edit for desktop view) rows in table\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/add - add TODO actually INSERT into table\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/rowid - currently dumps schema and value\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/view/rowid - view\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/view/rowid/view.json - jsonform with schema and data only\n\n#### URLs TODO / TBD\n\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME - browse table (rows)?\n\nTBD\n\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/schema.json - schema in jsonform - format\n\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME?rowid=A - view? where rowid is sqlite specific rowid?\n\n    Where PRIMARY_KEY is not rowid (but it could be...)\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/PRIMARY_KEY - edit/view?\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/row/PRIMARY_KEY - view?\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/view/PRIMARY_KEY - view?\n\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/edit/PRIMARY_KEY - edit existing?\n need to use hidden field for PK (compound pk?) in case pk is updated. Potentially use readonly (especially for view)\n\thttp://localhost/d/DATABASE_NAME/TABLE_NAME/edit/PRIMARY_KEY/jsonform.json - schema+data in jsonform - format with data\n\n\n## Questions\n\n  * Datatype support. date/datetime\n  * how to handle add and edit errors, to avoid data loss:\n      * from database\n      * network?\n      * temp store in local storeage until get confirmation back?\n\n### Datatypes\n\n    SQL             Python\n    TIMESTAMP       DateTime\n    bool/boolean    bool\n    varchar         string\n    string          string\n    int             integer\n    real            float\n\nTODO consider Decimal support.\nTODO consider datetime as a mapping.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclach04%2Fsqlshite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclach04%2Fsqlshite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclach04%2Fsqlshite/lists"}