[HN Gopher] Show HN: Mathesar - open-source collaborative UI for...
___________________________________________________________________
Show HN: Mathesar - open-source collaborative UI for Postgres
databases
Hi HN! We just released the public alpha version of Mathesar
(https://mathesar.org/, code:
https://github.com/centerofci/mathesar). Mathesar is an open
source tool that provides a spreadsheet-like interface to a
PostgreSQL database. I was originally inspired by wanting to build
something like Dabble DB. I was in awe of their user experience for
working with relational data. There's plenty of "relational
spreadsheet" software out there, but I haven't been able to find
anything with a comparable UX since Twitter shut Dabble DB down.
We're a non-profit project. The core team is based out of a US
501(c)(3). Features: * _Built on Postgres_ : Connect to an
existing Postgres database or set one up from scratch. * _Utilizes
Postgres Features_ : Mathesar's UI uses Postgres features. e.g.
"Links" in the UI are foreign keys in the database. * _Set up Data
Models_ : Easily create and update Postgres schemas and tables. *
_Data Entry_ : Use our spreadsheet-like interface to view, create,
update, and delete table records. * _Data Explorer_ : Use our Data
Explorer to build queries without knowing anything about SQL or
joins. * _Schema Migrations_ : Transfer columns between tables in
two clicks in the UI. * _Custom Data Types_ :: Custom data types
for emails and URLs (more coming soon), validated at the database
level. Links: CODE: https://github.com/centerofci/mathesar LIVE
DEMO: https://demo.mathesar.org/ DOCS: https://docs.mathesar.org/
COMMUNITY: https://wiki.mathesar.org/en/community WEBSITE:
https:/mathesar.org/ SPONSOR US:
https://github.com/sponsors/centerofci or
https://opencollective.com/mathesar
Author : kgodey
Score : 100 points
Date : 2023-03-02 18:34 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| cadbox1 wrote:
| Nice work! It looks like Sequel Pro for Postgres.
|
| This might be the first free, user-friendly interface for
| Postgres out there. Closest would be TablePlus but it's paid.
| phamilton wrote:
| https://github.com/beekeeper-studio/beekeeper-studio is pretty
| decent.
| [deleted]
| minusf wrote:
| tableplus is freemium like. in the free version can have 2 tabs
| open. it also works with way more than postgres.
| kgodey wrote:
| Thank you! I was pretty surprised that nothing like Mathesar
| existed already.
|
| Unlike SequelPro and TablePlus, we're a web application
| (although we do want to do a desktop version eventually). And
| Mathesar works even if you don't have an existing DB to connect
| to - you can set up a DB from scratch during installation.
| kgodey wrote:
| Our live demo is having trouble keeping up with traffic; we're
| spinning up a load balancer right now and the server will be down
| temporarily. I'll edit this post when it's fixed.
|
| EDIT: demo server is back up.
| hummus_bae wrote:
| [dead]
| jtr1 wrote:
| This is super cool! I really dig the way airtable makes
| relational databases accessible to non-developers, but I've been
| looking for open source alternatives. Going to give this a spin
| this weekend :)
| seancolsen wrote:
| Thanks! We have taken a lot of inspiration from Airtable -- but
| we've deliberately avoided calling ourselves an "Open Source
| Airtable alternative" because we are actually trying to stay
| more true to the concept of "relational data" than Airtable
| does. Airtable sweeps a lot under the rug. Primary keys and
| foreign keys are heavily abstracted in Airtable, giving rise to
| some surprising behavior for anyone more accustomed to actual
| databases.
|
| In Mathesar, we want the abstractions to be as thin as
| possible, while still giving non-technical users the capability
| to model and edit their data. You can point Mathesar and an
| existing Postgres database and, as long as all the foreign keys
| are in place, you should be able to use it a lot like Airtable.
| But when you set up a new relationship between tables, you'll
| find that it works very differently in Mathesar than in
| basically any other spreadsheet-database hybrid tool.
|
| One-to-many relationships use a foreign key column in one table
| (instead of in two tables in Airtable). Many-to-many
| relationships use two FK columns in a join table (instead of by
| showing a column in each of the two related tables). All of the
| data is kept normalized. That normalization can make it hard to
| work with the data though! So we are developing a robust
| graphical query builder (called the "Data Explorer") which lets
| you to see data joined across multiple tables.
| metasj wrote:
| The schema migrations are a delight. And I appreciate the
| shoutout to Dabble! Thanks for working on this + congrats on the
| release.
|
| An optimized hosted version with permalinks to Explorer views
| would open access to even more users.
| bitwize wrote:
| Love the reference to GalaxyQuest. (Mathesar was the Thermian
| leader.)
| iambcam wrote:
| I'm sorry if this question is stupid, I'm still learning a little
| about technology. The little bit of knowledge I have tells me
| that my product team shouldn't directly access the same
| production database as my application. The idea for this product
| would be to create a copy of my production base and give access
| to it through this tool? Wouldn't the cost of this replica be too
| expensive?
| mistersys wrote:
| In my experience in tech, most teams directly access and
| manipulate production frequently. Bigger companies usually have
| restrictions on this but in the start up world not so much.
| vladsanchez wrote:
| So happy to realize your stack includes Python, Postgres,
| Typescript and Svelte because I once flirted with such idea for a
| personal project. I'm inspired.
| vhanda wrote:
| If I may ask, have you found using a Typed language such as
| Typescript has changed your tendency to use Python for other
| tasks, given that it isn't typed? [0]
|
| [0] - I understand that types can be added on top, but I never
| found the integration to work that well with mypy when I last
| tried it many years ago.
| jamesfmilne wrote:
| I started using type annotations heavily in my Python code
| recently, and coupled with IDEs like VSCode and PyCharm that
| leverage the typing, and the underlying tools like
| pyright/pylance, it's a game changer.
|
| I wouldn't try and write a decent-sized Python project
| without typing now.
| seancolsen wrote:
| Yeah, interesting question! Our [team][0] is eight people who
| would probably give eight different answers. We've had some
| [debate][1] about whether or not to use types in Python, and
| eventually we settled on _not_ using them. However we _do_
| use TypeScript. That makes our team a bit stratified across
| these different typing paradigms. This stratification seems
| to work okay though because each engineer 's role is focused
| on either front-end work in TypeScript or back-end work in
| Python (without types). The front end people tend to like
| types, and the back end people tend not to.
|
| Personally, I love types! (Can you tell that I'm on the front
| end team??) I used mypy extensively at my last job and liked
| it okay, but mypy is just not as nice as TypeScript. It's
| come a long way, but it can still be pretty cumbersome.
| TypeScript on the other hand is fantastic. I'm certainly
| never going back to JavaScript. But to get back to your
| original question: yes, for me using TypeScript _has_ changed
| my tendency to use Python for other tasks. I just don 't want
| to use Python as much. For backend work, I'd reach either for
| TypeScript, or for Rust. But keep in mind I'm just a front
| end dev! :)
|
| [0]: https://mathesar.org/about.html [1]:
| https://github.com/centerofci/mathesar/discussions/913
| erinnh wrote:
| Lots of stuff has changed for typed Python over the last few
| years. (starting with 3.7, but picking up with 3.8)
| vladsanchez wrote:
| I haven't because I'm Python biased. ;) However, for Web I've
| found myself leaning to TypeScript for type-safety and DX
| reasons.
|
| Have you ever tried [Pydantic](https://docs.pydantic.dev)!?
| It may be what you need for type safety / data validation.
| westurner wrote:
| JSONLD types are specified with @type, and the range of a
| @type attribute includes rdfs:Class.
|
| icontract and pycontracts ( _Design-by-Contract_
| programming) have runtime type and constraint checking;
| data validation. Preconditions, Command, Postconditions
| (assertions, assertions of invariance after command
| C_funcname executed) https://github.com/Parquery/icontract
|
| pydantic_schemaorg: https://github.com/lexiq-
| legal/pydantic_schemaorg
|
| > _Pydantic_schemaorg contains all the models defined by
| schema.org. The pydantic classes are auto-generated from
| the schema.org model definitions that can be found
| onhttps://schema.org/version/latest/schemaorg-current-
| https.js... _ [ https://github.com/schemaorg/schemaorg/tree
| /main/data/releas... ]
| debarshri wrote:
| Interesting how there are some airtable inspired UI elements
| combined with postgres.
|
| Super interesting, will definitely use it.
|
| PS. I would recommend making the demo account ready-only.
| seancolsen wrote:
| (Mathesar core team member here.) Thanks for the kind words!
| Our demo server actually spins up a unique database for each
| session, giving you the capability to make changes to the
| database and try Mathesar's features to the fullest extent.
| Your changes are only visible to you unless you send the link
| to someone else.
| debarshri wrote:
| Could you elaborate that a bit?
|
| That sounds interesting too.
| kgodey wrote:
| Yes! We have set up a Postgres template database[1] with
| our demo data sets. When a user logs in, we create a new
| database based on the template database and associate the
| database with the session key set up for that login. So
| every session is associated with a different database and
| we have some Django middleware that routes you to the URL
| associated with your session's database. If you log out and
| log back in (thus ending your session), you'll be routed to
| a brand new database.
|
| However, all databases are accessible to the demo user, so
| if you send a link to someone else, they will see your
| database (since the URL includes the database identifier).
|
| You can see our code for it here:
| https://github.com/centerofci/mathesar/tree/develop/demo
|
| [1] https://www.postgresql.org/docs/current/manage-ag-
| templatedb...
| debarshri wrote:
| Thanks!
| [deleted]
| [deleted]
___________________________________________________________________
(page generated 2023-03-02 23:00 UTC)