{"id":51298863,"url":"https://github.com/martijndeb/liteadmin","last_synced_at":"2026-07-05T22:00:31.611Z","repository":{"id":368333593,"uuid":"1284287818","full_name":"martijndeb/liteadmin","owner":"martijndeb","description":"A hostable SQLite browser and editor like phpMyAdmin, but for SQLite.","archived":false,"fork":false,"pushed_at":"2026-07-04T18:05:18.000Z","size":13086,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-04T21:14:22.221Z","etag":null,"topics":["admin-panel","dba","sql","sqlite"],"latest_commit_sha":null,"homepage":"https://martijndeb.github.io/liteadmin/","language":"JavaScript","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/martijndeb.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-29T17:57:41.000Z","updated_at":"2026-07-04T17:54:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/martijndeb/liteadmin","commit_stats":null,"previous_names":["martijndeb/liteadmin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/martijndeb/liteadmin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijndeb%2Fliteadmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijndeb%2Fliteadmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijndeb%2Fliteadmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijndeb%2Fliteadmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martijndeb","download_url":"https://codeload.github.com/martijndeb/liteadmin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijndeb%2Fliteadmin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35170542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"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":["admin-panel","dba","sql","sqlite"],"created_at":"2026-06-30T17:02:47.900Z","updated_at":"2026-07-05T22:00:31.311Z","avatar_url":"https://github.com/martijndeb.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LiteAdmin\n\nA hostable SQLite browser and editor like phpMyAdmin, but for SQLite. Standalone,\nno build step, no toolchain. Just serve the `src/` folder with PHP.\n\nBuilt with the assistance of AI, and a lot of love for SQLite ❤️.\n\n## Features\n\n**Connect \u0026 browse**\n- Login-protected, session + CSRF secured communication\n- Server databases via `proxy.php` (PDO/SQLite), local databases via in-browser sql.js (WASM)\n- Recent databases list (server **and** local), re-openable via the File System Access API\n- **JSON-aware** cells (click to pretty-view) and a validating JSON editor for JSON columns\n\n**Schema \u0026 structure**\n- Create databases; create **tables, views and virtual tables** with builders\n- Editable structure: rename table, add/rename/drop column, add/drop index\n- Per-table metrics (rows, columns, indexes, foreign keys) and per-table `ANALYZE`/`REINDEX`\n- **Column/table profiler** (distinct, nulls, min/max/avg per column)\n- **Compare** two tables, or two server databases, and generate **migration SQL**\n- Export the **schema** (DDL) or generate an **OpenAPI/Swagger** spec for the tables\n\n**SQL \u0026 performance**\n- Monaco SQL editor with autocomplete; run / run-as-script (wrappable in a transaction)\n- **Query analyzer**: EXPLAIN QUERY PLAN tree, full-bytecode EXPLAIN, performance hints\n  with **\"Fix this for me\"** actions, single/covering **index suggestions** (one-click apply),\n  auto-analyze on run, and a query **benchmark**\n\n**Maintenance \u0026 operations**\n- **Maintenance** dialog (integrity check, FK check, optimize, analyze, reindex,\n  vacuum, WAL checkpoint) with a run log, plus quick one-click maintenance buttons\n- **WAL / auto-vacuum** toggles that reflect the live database state\n- Shows the **journal mode** (WAL badge) and **loaded SQLite extensions** on open\n- All multi-statement operations run inside a **transaction** (atomic, rollback on error)\n\n**Interface**\n- Material Design via BeerCSS; auto/light/dark theme; **user-pickable accent colour**;\n  subtle theme-aware gradients; responsive; keyboard accessible; Atkinson Hyperlegible font\n- Multilingual UI — **English, Dutch, German, Frisian, Swedish** — with browser\n  auto-detection and a language picker in Preferences\n\n## Requirements\n\n- PHP 8.0+ with `pdo_sqlite` and `session` extensions (PHP 8.4+ to load SQLite extensions)\n- Any web server that can serve PHP (Apache, nginx + php-fpm, or `php -S` for testing)\n\n## Install\n\n1. Serve the `src/` directory as the document root.\n2. Open the site. On first run **no password is set**, so LiteAdmin asks you to choose one\n   (this requires `config.json` to be writable). The username is `admin` by default.\n3. Change the password later via **Preferences → Change password**.\n\nFor a quick local try-out:\n\n```\ncd src\nphp -S 127.0.0.1:8000\n```\n\n\u003e The built-in PHP server is for development only; it ignores `.htaccess` and will\n\u003e expose `config.json`. Use a real web server in production.\n\n## Configuration — `src/config.json`\n\n```json\n{\n  \"app\":    { \"name\": \"LiteAdmin\", \"lang\": \"en\", \"max_rows\": 1000, \"buffer_rows\": 200 },\n  \"auth\":   { \"username\": \"admin\", \"password_hash\": \"\" },\n  \"session\":{ \"timeout\": 3600 },\n  \"create_dir\": \"databases\",\n  \"databases\": {\n    \"sample\": { \"label\": \"Sample Database\", \"path\": \"databases/sample.sqlite\", \"readonly\": false }\n  }\n}\n```\n\n- `auth.password_hash` — an empty value triggers the first-run setup screen. The setup and\n  the **Change password** feature write the bcrypt hash back to `config.json`, so the file\n  must be **writable** by the web server for those to work (a warning is shown otherwise).\n- `databases` — the allow-list of server databases. `path` is relative to `src/`.\n  Set `readonly: true` to forbid writes.\n- `create_dir` — folder where new server databases are created and auto-discovered\n  (managed databases). Set to `null` to disable creating server databases.\n- `app.lang` — default UI language (`en`, `nl`, `de`, `fy`, `sv`). Users can override it\n  with the language picker; on first visit the browser language is auto-detected.\n- **SQLite extensions** (optional, server only, PHP 8.4+ with `Pdo\\Sqlite`): load shared\n  libraries on connect. `extensions` at the top level is loaded for **every** server database\n  (defaults like `vec0`); a per-database `extensions` array adds more for just that one. Bare\n  names (e.g. `vec0`) resolve under `ext_dir`; values with a slash are relative to `src/`, and\n  absolute paths are used as-is. The platform suffix (`.so`/`.dylib`/`.dll`) may be omitted.\n  Paths only come from this file (never the client), and the loaded/failed state is shown on the\n  database's **Database** tab. Example:\n\n```json\n{\n  \"ext_dir\": \"ext\",\n  \"extensions\": [\"vec0\"],\n  \"databases\": {\n    \"vectors\": { \"label\": \"Vectors\", \"path\": \"databases/vectors.sqlite\", \"extensions\": [\"fts5_ext\"] }\n  }\n}\n```\n\n- Generate a new password hash:\n\n```\nphp -r 'echo password_hash(\"your-password\", PASSWORD_DEFAULT), \"\\n\";'\n```\n\n## Translating\n\nLiteAdmin ships with **English, Dutch, German, Frisian and Swedish** (`src/i18n/*.json`).\nThe UI auto-detects the browser language on first visit and can be changed any time via the\nlanguage picker in Preferences; `app.lang` in `config.json` sets the default.\n\nTo add a language: copy `src/i18n/en.json` to `src/i18n/\u003ccode\u003e.json`, translate the values\n(keep the keys), then add the code to `SUPPORTED` and a display name to `LANG_NAMES` in\n`src/js/i18n.js`. All locale files share the same key set.\n\n## License\n\nReleased under the [MIT License](LICENSE). Vendored libraries in `src/vendor/` keep their\nown respective licenses.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartijndeb%2Fliteadmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartijndeb%2Fliteadmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartijndeb%2Fliteadmin/lists"}