[HN Gopher] Pocketbase: Open-source back end in one file
___________________________________________________________________
Pocketbase: Open-source back end in one file
Author : dgudkov
Score : 525 points
Date : 2024-01-07 06:08 UTC (16 hours ago)
(HTM) web link (pocketbase.io)
(TXT) w3m dump (pocketbase.io)
| BilalBudhani wrote:
| I have been following PocketBase since its early day - what I
| absolutely love about this project is how it actively tries to
| avoid complexity and focuses on simple yet minimalist approach.
| Moreover, the ease of deployment by simply uploading a single
| binary on the server makes it even more attractive.
|
| After they introduced Javascript support in the backend - I feel
| it became a serious contender to challenge Remix, Next.js etc.
| frameworks.
|
| Looking forward to v1
| d1sxeyes wrote:
| I use PocketBase for mostly everything where I need a back end
| now. I came across a situation where I needed to write a custom
| SQL join (technically I could have just fetched all the data
| and done it in Node, I suppose).
|
| I was shocked at how easy it was to write the query even
| inserting URL parameters and selecting based on the
| authenticated user only.
|
| Fully recommend for basically everything. Great app. Not sure
| it would replace Next or Remix, but definitely add to the stack
| to simplify.
| BilalBudhani wrote:
| Interesting! I haven't made anything serious yet with the
| PocketBase (mostly due to lack of time & not anything to do
| with PB).
|
| I'm curious to know what kind of projects did you build using
| PB and how was your development experience?
| d1sxeyes wrote:
| Bits and pieces. A bedtime tracking app for my kid, a
| microblog, a TikTok clone, a budget app, a text-to-speech
| app with translation functionality...
|
| Development experience was outstanding. I primarily use
| SvelteKit and integrate PocketBase for SSR, so I use the
| SDK almost exclusively and it's fantastic. Everything just
| works exactly the way you would expect.
|
| I can't imagine anything easier to implement, and as yet, I
| haven't found any major gaps in what I can do with it,
| normally with OOB functionality.
|
| Development velocity is very high and the developer is
| super responsive on GitHub. The documentation is very good
| and kept up to date pretty well.
|
| My only real concern is that the project has a pretty poor
| bus factor, otherwise, I'm very impressed.
| ilrwbwrkhv wrote:
| One of my production projects with around 20,000 customers
| and 400k arr runs on Pocketbase with zero issues. I cannot
| recommend it enough.
| harha_ wrote:
| _it actively tries to avoid complexity_
|
| Sounds refreshing.
| oschvr wrote:
| Really cool, I'll give it a try
| sonovice wrote:
| Have been using pocketbase in production for a mobile app for a
| couple of month now and so far it was a _very_ pleasent
| experience. Together with the JS SDK it is now my go to backend
| framework for everything where I don't need specialized libraries
| (like ML stuff etc.)
| thangngoc89 wrote:
| I've been using Pocketbase for several projects. While it's a
| delightful experience for solo-dev to quickly finish a project
| from backend to complicated frontend, I wish it has bulk-insert
| out of the box.
| brabel wrote:
| It seems to me that redbean is a much simpler, vastly lighter
| one-file web server + sqlite DB: https://redbean.dev/
|
| As a bonus, the same file runs on basically any OS without any
| dependencies on the local system, not even libc.
| lars_francke wrote:
| To me it seems as if both tools serve a pretty different
| purpose.
|
| Redbean doesn't have authentication or the client SDKs at
| least.
| brabel wrote:
| The self-described purpose is "opensource backend in one
| file". They both offer that.
| keb_ wrote:
| I love redbean, just holding out for ARM support.
| TeddyDD wrote:
| It's like saying nginx is better than superbase/firebase.
| Apples to oranges.
|
| You could replicate PocketBase in Readbean, but you would have
| to implement from scratch: - resources with CRUD API and real
| time subscriptions - admin UI - authz & authn system
| testless wrote:
| I think you meant supabase.com instead of superbase.com.
| brabel wrote:
| I didn't say it's better. Why are people always
| misinterperting what they read (it's like you've never had
| text interpretation classes at school, or logic lessons to
| undestand how to infer implications from logical statements
| correctly)? Please read again: I said it's vastly simpler
| (which may not be better for you!) and lighter (just measure
| it). The comparison is apt for me because the description
| "open-source backend in one file" matches both projects well
| and it's something I'm interested in, with readbean being far
| closer to my alley.
| Philpax wrote:
| Your initial comment presents Redbean as a comparable
| solution, which it's not; they serve very different use
| cases.
|
| Redbean requires you to write server code; Pocketbase does
| not. Redbean does not offer a realtime database,
| authentication, an admin dashboard, integrated file
| storage, or an inbuilt API.
|
| I like Redbean, but it's in a completely different "market
| sector". It's like comparing a kit car to a luxury car:
| yes, they both technically serve the same purpose, but one
| requires much less assembly and offers a much more usable
| experience out of the box.
| brabel wrote:
| They are comparable solutions to the problem "Open-source
| backend in one file". I don't care at all about "realtime
| database, authentication" and whatever, I care about what
| the title of the post says. For that purpose, Redbean is
| a nice alternative.
|
| > It's like comparing a kit car to a luxury car
|
| If all I need is a bicycle, a kit car is already over the
| top but will do. A luxury car makes no sense. You're
| thinking like everyone has the same needs that you have
| or something.
| resoluteteeth wrote:
| I think people are being a bit harsh but your original
| comment (especially starting with "It seems to me" which
| makes it sound like a value judgment) was phrased in a way
| that did sound a _lot_ like you were implying that redbean
| was better for the same requirements, although you didn 't
| actually explicitly say that.
|
| I think you would have gotten a more positive reaction if
| you said something like "As an alternative take on the idea
| of an "open-source backend in one file, redbean is a much
| simpler, vastly lighter one-file web server + sqlite DB:
| https://redbean.dev/" to make redbean isn't necessarily
| intended to be the same type of "open-source backend in one
| file"
|
| Anyway, redbean does look really neat even if it's not
| necessarily totally interchangeable with pocketbase
| yard2010 wrote:
| Fruits can be compared
| rolisz wrote:
| I mostly know Python. Is there something similar in Python? Or
| the backend language is not relevant, because you mostly use this
| from JavaScript anyway?
| eternityforest wrote:
| Packaging this as a Python lib that could run under WSGI/ASGI
| and use all the awesome python libs would be amazing. I wonder
| if that's possible?
| ajayvk wrote:
| I have been building a project https://github.com/claceio/clace
| which aims to make building hypermedia based web applications
| easier. Clace is implemented in go, it uses Starlark (python
| syntax subset) for application configuration. With Clace, the
| apps are implemented using Starlark and (go) html templates,
| HTMX is used for web interface, app developer does not need to
| write any JavaScript.
| 082349872349872 wrote:
| What minimal front-ends are there that one could combine with
| this minimal back-end to provide a minimal end-to-end?
| BilalBudhani wrote:
| I would say
|
| - htmx (https://htmx.org/)
|
| - Alpine.js (https://alpinejs.dev/)
|
| both are minimal and very easy to get started.
| flaviocopes wrote:
| Been enjoying using PocketBase with Astro + htmx + Alpine
| BilalBudhani wrote:
| nice! I'm curious to know why would you need Alpine or Htmx
| if you have one of them in your app? I thought they are
| mutually exclusive.
| flaviocopes wrote:
| htmx = client-server networking Alpine = JS sprinkles
|
| Alpine is for example, I want to show/hide a menu on
| mobile. I want to upload files via drag and drop. I want
| to have a bin icon over an image when I hover with mouse
| to delete it. I want to double click an input field to
| edit it. I want to close an overlay when I click outside
| of it, or when I press "esc".
|
| Also modals, although you can do them in htmx very nicely
| too, so that's borderline.
|
| Anything that involves network, htmx. Things that are
| just frontend, Alpine suits better.
|
| _hyperscript is basically the Alpine equivalent.
|
| It's like the difference between Turbo and Stimulus in
| the Rails world
| BilalBudhani wrote:
| Gotcha! I'm gonna dig more into this stack. Thanks for
| breaking it down for me.
| recursivedoubts wrote:
| we go into detail on this in the client side scripting
| chapter of our book:
|
| https://hypermedia.systems/client-side-scripting/
| synergy20 wrote:
| are you using one of them or both? I'm using htmx and not
| sure if I really need alpine.js yet.
| kekub wrote:
| Depends on what you consider minimal, but I enjoy working with
| PocketBase and VanJS[1]. However there is no component library
| built in (if this is what you were asking for).
|
| [1]: https://vanjs.org/
| mdnahas wrote:
| If you want a front-end for a single-page webapp, I loved
| Svelte. It puts all the HTML, JavaScript/TypeScript, and CSS
| together in the same place. The tutorial is delightful.
|
| BUT, if you need a multi-page webapp, SvelteKit is complicated
| and not well documented.
| account-5 wrote:
| Dart SDK, excellent. Just what I'm looking for.
| WM6v wrote:
| What are realistic bottlenecks to expect from a backend like
| this? Eg. a web app serving users that write posts simultaneously
| blackoil wrote:
| More than one server. Sqlite should be thread safe and simple
| services can scale to thousands of parallal users. If you are
| OK with some downtime every 6 months when server goes down it
| will scale well. Deploy/ rollback will be an effort.
| ozim wrote:
| Downside with separate SQLite databases will be when you want
| to have statistics over many users.
| rudasn wrote:
| I'm in this situation right now. How would one go about
| solving this?
|
| To keep this simple, I'm thinking exporting just the
| necessary data from each db and inserting that to a stats
| db (having a source column to each table, referring to the
| original db). Then load the stats db with Metabase or
| something.
|
| Migrations on the stats db may be a bit of a pain, as well
| as making sure that all data is exported and imported
| correctly every time.
|
| I'm sure there are better ideas.
| jocaal wrote:
| Litestream is a library that allows you to easily create
| backups. You can probably just do analytics queries on
| the backup data.
|
| https://litestream.io/
| djfobbz wrote:
| See this: https://news.ycombinator.com/item?id=26581807
| WM6v wrote:
| Gotcha. And that makes sense for the purpose of the project.
| Should one have multiple instances of sqlite dbs, what
| strategies exist to keep them synced?
| eternityforest wrote:
| Looks like what you hope LibreOffice Base will be, when one first
| years of the existence of those kinds of tools.
|
| Really nice, looks like something I'd love to work with someday!
| saasjosh wrote:
| Cool homepage but I don't even understand what this thing does.
| diggan wrote:
| Are you a developer? Because it seems to be geared towards
| developers. It's something like a all-in-one backend that you
| can use as a starting point and extend if needed.
|
| Personally, I think the website is clear and concise. Doesn't
| even have any marketing filler which is a huge plus in my
| corner.
| addandsubtract wrote:
| It's like a smaller Supabase, which was an open source
| alternative of Firebase. So basically a database,
| authentication, file storage, and backend in one solution.
| ilrwbwrkhv wrote:
| It's substantially better than Supabase and much easier to
| host and deploy.
| mdnahas wrote:
| It is a simple program that (1) hosts a webserver, (2) runs
| server-side code, and (3) hosts a database. It also has built-
| in support for logging in and permissions to data.
|
| Thus, if you want to write a simple website that needs
| permissions, storage, and server-side code, it's a great
| backend solution. The limitation is that it isn't high
| performance.
| Ilasky wrote:
| Been using Pocketbase for almost all of my projects lately. Its
| realtime database is especially nice to introduce multiplayer
| functionality with relative ease.
|
| It plus SvelteKit has been a dream to get up and running using
| the JS SDK.
| overbytecode wrote:
| I'm curious how you're integrating it with Sveltekit? Are you
| using Sveltekit just as a static generator?
| Ilasky wrote:
| Depends upon the project.
|
| For CRUD apps, sveltekits progressive enhancement and form
| actions make it quick to to add simple function to the page.
| You can store the pocketbase instance, pb, in locals and
| reference it all over the application.
|
| For more multiplayer things, sticking a client-side
| subscription to a collection allows updates of elements that
| can be worked with/added/moved around etc.
| doublerabbit wrote:
| Scouring the documentation there's mention of a way to use
| PocketBase without JavaScript or Dart. Are they the only methods?
| diggan wrote:
| It seems to be Golang based from what I can tell? And I'm
| guessing it either exposes a HTTP or WebSocket API, both which
| are usable from any language.
| skottenborg wrote:
| This is correct. It's golang and it exposes a plentiful API.
| eitland wrote:
| TypeScript is support on the frontend for oldtimers like me who
| have used plain JS for far too long and refuse to accept the
| torture of unnecessarily untyped languages any longer.
|
| Also as already mentioned by others there exist web APIs.
| karencarits wrote:
| It is great to see the number of good opensource projects in this
| area. Grist and NocoDB deserve mentions, although more targeted
| towards database management. It is also amazing that they provide
| so simple ways to get started (single file/electron)
|
| - https://github.com/gristlabs
|
| - https://nocodb.com/
| slig wrote:
| Did not know about either of those, thanks. I've been using
| Baserow for small projects that I believe Pocketbase is a way
| better fit.
| jddj wrote:
| I've been using Pocketbase in production for a few months now,
| with alpinejs on the front end.
|
| The development philosophy is on point. It's genuinely pleasant,
| pragmatic software which serves a real purpose and it improves
| weekly without feature creep.
|
| I watch the discussions and issues slowly getting more tiresome
| as it becomes more mainstream and worry that he'll burn out
| trying to keep up with the level of support he's offered until
| now.
|
| I would very strongly encourage anyone using this to generate
| income to support the project on open collective.
| jslakro wrote:
| What other technologies in the stack you have?
| jddj wrote:
| There are two C# services which do some background bits and
| pieces.
|
| This logic could have been put within pocketbase as well, but
| the body of work they depend on was already .net.
|
| Other than that it's just little JavaScript callbacks in the
| back and typescript in the front.
|
| There isn't much missing that you truly need to bolt things
| on for, provided SQLite is appropriate for your usecase.
| bambax wrote:
| First time I hear about this... looks absolutely fantastic! Will
| try.
| xsumirx wrote:
| Didn't know tool like this existed. Thanks for sharing.
| rijavecb wrote:
| Pocketbase is amazing! So far I had a great experience using it
| as a backend/database for the app I'm building where I'm using
| React with Vite for the frontend. I'm using it mainly for auth
| and for keeping track of paid and free accounts. Some things that
| I found rather useful:
|
| - It's super easy to host. I was initially thinking of using
| Appwrite or Supabase but found it a tricky to self-host them,
| especially Supabase. I could spin up Appwrite quickly via
| CapRover, but found it an overkill for what I needed.
|
| - View collections [1] make it easy to return just a subset of
| the data that you need. In my case I'm using a view collection as
| a join for users and paid_users collections, where I just return
| their paid through date.
|
| - The fact that you can extend it with Go or JS [2] should make
| it possible to completely skip having a backend, at least if your
| needs aren't very complex.
|
| I definitely plan to continue using it for some smaller/side
| projects. Currently I'm thinking of trying to use it as CMS for
| an Astro blog and in the future as backend for some browser
| extensions.
|
| [1] - https://pocketbase.io/docs/collections/#view-collection
|
| [2] - https://pocketbase.io/docs/use-as-framework/
| Daynil wrote:
| I feel like super easy to host needs to be re-emphasized. We're
| talking about dropping a single binary into your server and
| you're off to the races. If only more things were so simple.
| imnotreallynew wrote:
| Isn't that how any Go project is put online?
| paulgb wrote:
| The key distinction here seems to be that it uses an in-
| core database (SQLite), whereas a Go project may depend on
| an out-of-core database like Postgres, which would then
| also have to be deployed.
|
| For many projects (especially hobby projects where downtime
| is tolerable), the former is probably quite sufficient.
| tronikel wrote:
| Didnt docker make this easy for all projects?
| noodlesUK wrote:
| Not really because then projects started needing multiple
| containers and orchestration, and might be fussy about the
| order the different services come up.
| serf wrote:
| the +docker step already adds friction, so I can see the
| point.
| pixelatedindex wrote:
| Is that the same concept that Deno uses?
| notyoutube wrote:
| I've skimmed at the docs, and it's not clear to me how it would
| deal with:
|
| * Something like row-level access control, so that people can
| only access the data in tables that belong to them (say clients
| can only view their own purchases, and also not modify them after
| they checked them out).
|
| * Integration with the rest of the world, e.g. sending email,
| acting on triggers, etc.
|
| * Something like CSV export/import.
|
| * Internationalization.
|
| Would that all be possible? Straightforward? Do those all require
| extending (with go or js)?
|
| Looks like a nice tool.
| flaviocopes wrote:
| Check out
|
| API Rules https://pocketbase.io/docs/api-rules-and-
| filters/#api-rules
|
| Hooks https://pocketbase.io/docs/js-overview/
|
| Admin panel has backups for data, and import/export of
| collections schema
| jddj wrote:
| The first point (authn) is inherent to the unextended framework
| via filter rules.
|
| Most of the remainder requires extension other than authz
| emails, but extension at its simplest just means adding a plain
| old JavaScript function to run on a record lifecycle event of
| some kind - typically [before/after] [insert/update/delete] of
| <record>. Various GO APIs are exposed to the JavaScript runtime
| for doing filesystem, cryptography, http, email, etc work.
|
| For i18n you have templates and a database.
| mdnahas wrote:
| I've been developing for PocketBase for 2 months.
|
| As someone else mentioned, API rules can control access to
| rows.
|
| It can send emails. Set timers. And send its own requests to
| other webservers. (I haven't used any of these features.)
| https://pocketbase.io/docs/js-sending-emails/
|
| I had to write my own CSV importer. (I'm hoping to open-source
| it.)
|
| As for internationalization, what specific features did you
| want? That seems more like a front-end feature.
| TruthWillHurt wrote:
| Very cool, but this is a security anti-pattern.
|
| Having the auth, db and file server in the same service.. an
| attacker doesn't even need lateral traversal or privilege
| escalation once inside..
| deberon wrote:
| There's something to be said about drastically reducing your
| threat surface too. Locking down 1 server is easier than
| locking down a fleet. You can still have security in depth
| inside your server.
| punnerud wrote:
| Seems like a JavaScript based version similar to Django (Python)?
| robjan wrote:
| It's more a self-hosted alternative to Firebase written in
| golang
| twsted wrote:
| Pocketbase seems really well done and useful.
|
| I am building something similar but at a lower level and based on
| PostgreSQL.
|
| https://github.com/sted/smoothdb
|
| It aims to be compatible with the PostgREST API.
| igtztorrero wrote:
| Good Golang anda Svelte code organization, I Will take as example
| remram wrote:
| I am a bit confused, is it the backend's backend? E.g. something
| that is used by the HTTP server app, like a DBMS would be?
|
| Or is it actually the backend, e.g. the frontend (browser) talks
| to it directly?
| kisamoto wrote:
| It can be the backend itself if you just need auth (both
| authentication and authorization) and your SQL tables to be a
| REST API. This often suits frontend single page applications in
| JS/TS and Pocketbase also provides a JS SDK to ease this (with
| realtime updates). It's a similar model to Firebase but without
| the lock-in.
|
| However if you want to write more logic you can also import
| Pocketbase as a library and extend it with hooks, custom
| endpoints etc. all written in Go.
|
| Edit: Added more info about using Pocketbase with a JS SPA
| frontend.
| szundi wrote:
| Every tech/stack is a lock-in, you just pay with different
| currencies and get different challanges at different stages
| ilrwbwrkhv wrote:
| You would use it instead of things like Supabase and Appwrite.
| It gives you a server, a db and easy authentication,
| authorization with real-time queries like firebase.
| remram wrote:
| Maybe it's not for me, I really don't know what that means.
| If it only describes itself as "a replacement for <name>" I
| feel like I'm not the target at all.
| szundi wrote:
| Maybe it's for you even if you don't get it just now
| chazeon wrote:
| I feel like this will be super interesting when pairing with
| static site generator such as eleventy. Using static site
| generator is sometimes difficult because of lacking a web backend
| and ghost is too heavy for me.
| Fire-Dragon-DoL wrote:
| Could you explain a bit more this setup? I have been looking
| for a way to have a tool to fill pages for a static site
| generator that's local and then just git push in a simplified
| way.
|
| The idea is to create a website for my mother, without having
| to deal with hosting at all (static github pages).
|
| Does this combination work that way?
| mdnahas wrote:
| No. PocketBase runs on a server. It needs a host.
|
| It is simple, so its single program is (1) a webserver, (2)
| runs server-side code, and (3) hosts a DB. I'm running a
| $12-per-month server on Vultr and its only service is
| PocketBase.
|
| You don't need to host the webpages on PocketBase. If you
| wanted all your webpages to be on Github Pages, you could do
| that.
| fullstackchris wrote:
| Very cool. Reminds me of the encore framework, also written in
| go: https://github.com/encoredev/encore
|
| Need to spend some more time looking into these go based
| frameworks, they seem great for quick prototyping
| ilrwbwrkhv wrote:
| Nope encore is horrible to use in comparison. Pocketbase is
| levels above encore and similar projects.
| zffr wrote:
| What are the pros/cons of this over firebase?
| victorbjorklund wrote:
| Pro: - It will be cheaper when scale - You have full control of
| the data since selfhosted - Easier to extend with custom code
|
| Cons: - you need to take care of all the hosting, backups, etc
| - cant scale to infinity like firebase (but on the other hand
| when you reach that scale youe firebase bill will be huge
| anyway)
| ilrwbwrkhv wrote:
| Out of all the PaaS I tried including Supabase and Appwrite,
| Pocketbase is the best. Great performance, intuitive features,
| actually self hosted and a joy to deploy.
| melicerte wrote:
| I was looking for a frontend I could use out of the box on top of
| a sqlite database to design and store my wine collection (since I
| removed Vivino and its 800+ "partners" it shares my data with).
|
| Looks like a single executable, the admin interface and the
| database I can store on my laptop (and add it to my backup) is
| all I was looking for. Thank you for PocketBase and thank you for
| sharing it.
|
| That's why I always come back to HN :-)
| air7 wrote:
| this is great. What would be the frontend equivalent? A simple,
| no bells and whistles frontend to throw something together
| quickly?
| mdnahas wrote:
| I was happy with Svelte. But it only does single-page apps. But
| it's simple and the tutorial is delightful.
|
| When I moved to multiple pages, I had to use SvelteKit, which
| is complicated and not well documented.
| jadayesnaamsi wrote:
| It is the first time I see that "hook" pattern in a Go API
| backend: `hook.Hook` and `hook.TaggedHook`.
|
| Where does it come from?
|
| Why is it useful here?
|
| What are the alternatives? Advantages/Drawbacks?
|
| Is there an article somewhere, outside of the Pocketbase docs,
| presenting that pattern?
|
| - https://github.com/pocketbase/pocketbase/blob/master/core/ap...
|
| - https://github.com/pocketbase/pocketbase/tree/master/tools/h...
| tamimio wrote:
| I like this for testing and quick/simple database, very useful in
| concept for building a platform for embedded work, where you
| don't need to go down the rabbit hole in the whole full stack
| tech.
| rbosinger wrote:
| I've been using Pocketbase for personal projects on the machine I
| use to self-host services. It's great. You get CRUD and real-time
| stuff for free and I didn't really have to spend much time
| learning to start working with it and having it running in an
| LXC.
| turtlebits wrote:
| I like the idea, but after using it, the query apis aren't
| expressive enough. I wish I could write SQL instead of making 2+
| api calls to get the data I want.
| ako wrote:
| Did you try view collections,
| https://pocketbase.io/docs/collections/#view-collection ?
| dhc02 wrote:
| I'm no expert, but it seems like raw SQL is supported. From the
| docs:
|
| "It also exposes app.Dao().DB() builder that allows executing
| various SQL statements (including raw queries)."
| mdnahas wrote:
| Yes, that's correct. In server-side code, you can write SQL
| queries.
|
| JavaScript API: https://pocketbase.io/docs/js-database/ Go
| API: https://pocketbase.io/docs/go-database/
| tiffanyh wrote:
| So it's the "Supabase of SQLite"?
|
| Aren't there entire classes of problems that shouldn't exist for
| SQLite because it's intended to be an embedded database, as
| opposed to a client/server architecture like Postgres/Supabase?
|
| And as such, I'm confused why this exists.
| mdnahas wrote:
| PocketBase is trying to be a simple webserver, code-running
| backend, and database. I believe the author chose SQLite
| because it is simple. PocketBase isn't trying to have every
| feature nor be high performance.
| tiffanyh wrote:
| Like Althttpd?
|
| That's the web server created by the SQLite team and also
| serves sqlite.org
|
| https://sqlite.org/althttpd/doc/trunk/althttpd.md
| LVB wrote:
| >And as such, I'm confused why this exists.
|
| Beyond the standalone server mode, I'm able to literally import
| this as a library/framework right into my Go app
| (https://pocketbase.io/docs/go-overview/). Having a single
| binary that contains my custom business logic + a very nice
| DB/Auth/Admin/... is a very compelling option.
| stevage wrote:
| It's very common to use SQLite within backends, whenever
| concurrency is not a big issue.
| imperialdrive wrote:
| This looks too good to be true for a project I had in mind--
| kudos!
| Fire-Dragon-DoL wrote:
| I'm not sure I understand what exactly is. I like the tips, but I
| don't understand: is it an app that I can run on my local
| machine?
| simonw wrote:
| It's a binary called "pocketbase" that you can download and run
| on your machine. When you run it, it starts a localhost web
| server. That server includes a web based UI tool that lets you
| create "collections" (effectively database tables) and
| insert/update/delete data in them.
|
| More importantly, it provides a JSON API (and a client library)
| for interacting with those collections.
| puchatek wrote:
| But people build apps on top of it and deploy it to the
| cloud, too, right? Does it then compete with stuff like AWS
| RDS?
| simonw wrote:
| I think it's more like a self-hosted Firebase - you run it
| on a server (with a disk drive that can persist the data)
| to get a hosted API for your apps to talk to.
| stevage wrote:
| If you have ever built a web app backend that consists of a
| database, a REST API for that database, and a web admin
| interface to the database - well, this gives you all of that
| for free, just by running an executable.
| wg0 wrote:
| After ent.io entity framework, that's the other most beautiful
| piece of software that I have seen in Go!
|
| The simplicity is simply mind boggling!
|
| Going to give it a try!
| teknico wrote:
| Its URL is presumably https://entgo.io/ .
| efields wrote:
| The demo is kind of incredible. It's the admin ux of an app we
| built internally over 2ish years.
|
| It's just... right there :)
| tommica wrote:
| How are database migrations handled in this? Ive never understood
| how BaaSes are to be used when I need to add a new column to my
| table and do some inserts into it in the same migration
| jacobdejean wrote:
| A lot of these tools just abstract away migrations. But I do
| know some like Supabase let you clone a copy locally and
| manually perform migrations if you see fit
| mdnahas wrote:
| PocketBase has a pb_migrations/ directory. If you throw a file
| of a certain format, PocketBase will automatically loaded it
| and update the DB.
| jarekceborski wrote:
| Simple is beautiful! I think it could be more than enough for 90%
| or more use cases, and without over-engineering.
| mdnahas wrote:
| I've been developing on PocketBase for 2 months. The system goes
| into production in 1 to 2 months.
|
| I'm exceptionally happy with it. I'm developing an webapp for a
| friend's company and wanted a very simple system to hand-off. The
| whole thing is running with one binary: Pocketbase. It runs a
| webserver, server-side Javascript (compiled TypeScript) code, and
| SQLite database. The single process is hosted on Vultr for $12
| per month. My frontend is written in SvelteKit (static adapter) +
| Svelte + TypeScript.
|
| Pocketbase is well done. The author has been exceptionally
| responsive to my questions. He is fast and clear.
|
| I have had a few minor issues: The documentation has bare spots
| (but is very good for most things). I had to write my own CSV
| loader. (I hope to open-source it.) Writing lots of objects
| through the CRUD interface is slow. (It's possible to write
| faster using server-side code.) Unit testing for the server-side
| JavaScript had to be shoehorned in. And I wish Copilot/ChatGPT
| could answer questions better. But these issues have been minor,
| given all my work on the project.
|
| It has some quirks. There's no way to set the 404 page on the
| webserver. And the binary's location in the filesystem matters.
| It was designed for the author's use and you have to live with
| these choices.
|
| As I said, I've been happy using it. It fit my needs exactly:
| simple and I could code everything in one language, TypeScript.
| Pocketbase is not high-performance, but I didn't need that. I've
| had a few ideas for side projects and, when I'm done this work,
| I'll implement one on Pocketbase because it is that easy.
|
| And, as part of my contract, my friend's company will donate to
| Pocketbase. :)
___________________________________________________________________
(page generated 2024-01-07 23:01 UTC)