diff --git a/README.md b/README.md index 4ca3262..a68a56b 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,42 @@ # Phonograph -Phonograph is a friendly, collaborative data platform for nerds of all stripes, -built around PostgreSQL. +Phonograph is a friendly, collaborative data platform for nerds of all stripes. +It's for teams who wish they used Postgres, but actually use: -Contemporary browser-centric platforms like Airtable open new frontiers for data -engineering, but they suffer from limitations that conventional databases have -long since addressed: relational data models are an afterthought; row-level -security is missing; third party integrations must be implemented piecemeal for -lack of a standardized API. Phonograph addresses these shortfalls by -implementing an accessible front-end interface backed by an existing, mature -database management system. +- Airtable +- Google Sheets +- Excel +- `inventory_export-2026-02-15_v3-FINAL.csv` -![Screenshot of multi-cursor editing, as well as a dropdown menu with a highlighted option labeled "PostgreSQL credentials"](./docs/screenshot_multi_cursor.png) +Phonograph is built on top of Postgres, exposing a curated subset of features +and adds a familiar user interface for developers and end users alike. -# Browser Compatibility Note +# Demo -[CSS anchor positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning) -is a relatively new API, and Phonograph uses it extensively. Browser support is -now fairly good, but -[Firefox users in particular](https://bugzilla.mozilla.org/show_bug.cgi?id=1988225) -should upgrade to version 147 or newer for best experience. +Try the hosted demo at [phono.dev](https://phono.dev)! + +# Features and Design + +- Leverages Postgres RBAC for robust authorization, including RLS (planned), + while adding support for invite-by-email and a familiar permissions model for + collaboration. +- Integrates with effectively any third party software with a Postgres driver. +- Powerful user interface inspired by your favorite text editor features, like + multi-cursor editing. +- Write filters and generated column specs (planned) as PostgreSQL—made + possible by a custom SQL parser with support for advanced syntax like + `column = ANY(array)`. + +![Screenshot of a spreadsheet-like user interface. A sidebar lists "Tables" and "Portals", and a table on the right displays URL, numeric, and single-select data.](./docs/screenshot_collab.png) + +![Screenshot of a terminal overlayed above another page listing credentials and associated permissions. The terminal runs `psql` and displays a query running on the data from the previous screenshot.](./docs/screenshot_psql.png) + +# An Experiment from Second System Technologies + +Phonograph is a proof-of-concept built by Second System Technologies, to solve +real world problems, and its bones are built to scale. It's a work in progress, +which means that some expected features are missing and we have yet to sand out +many rough edges. # Development Quickstart @@ -39,39 +56,3 @@ external OAuth2 provider is required to manage authentication. # The Phonograph Authorization Model Refer to documentation in [docs/auth.md](./docs/auth.md). - -# Copyright and License - -All original source code in this repository is copyright (C) 2025 Second System -Technologies LLC and distributed under the terms in -[the "LICENSE" file](./LICENSE). Certain third-party assets within -[the "static" directory](./static) may be governed by different licenses, for -example the Open Font License or MIT License, as stated by their original -authors. Copies of each relevant license have been included alongside these -files as needed. - -# LLM Code Policy - -Large language model code generation is permitted sparingly in very limited -cases, for example for completing clearly defined transformations which span -multiple files and are not supported by conventional code actions. All code -generated by LLMs is considered reflective of its author, and authors are -expected to thoroughly and frequently review before committing affected work. - -As of this writing, models display a strong bias towards patterns which are well -represented in public open source projects. This can cause them to tend towards -suboptimal one-size-fits-most or simply outdated coding practices in certain -circumstances. LLM assistance should be sufficiently constrained to avoid -allowing outputs to dictate or implicitly guide significant design decisions. - -Furthermore, current language models broadly behave adversarily, in the sense -that they are optimized to make perceiving model outputs versus non-model -outputs as difficult as possible. This can make generated code uniquely -challenging to review effectively. In this context, non-trivial business logic, -particularly logic with security implications, may not be implemented with -direct assistance from LLM tools. - -Examples of LLM-assisted changes in practice: - -- Replacing SVG icons with similar webfont icons from a different icon pack. - (Revision `ztrnxzqv` (Git `a8dd49f7`)) diff --git a/docs/screenshot_collab.png b/docs/screenshot_collab.png new file mode 100644 index 0000000..a201546 Binary files /dev/null and b/docs/screenshot_collab.png differ diff --git a/docs/screenshot_multi_cursor.png b/docs/screenshot_multi_cursor.png deleted file mode 100644 index df168c6..0000000 Binary files a/docs/screenshot_multi_cursor.png and /dev/null differ diff --git a/docs/screenshot_psql.png b/docs/screenshot_psql.png new file mode 100644 index 0000000..70b3b26 Binary files /dev/null and b/docs/screenshot_psql.png differ