I'm building something different: a real home for your people, on your server. Honest, simple, and yours forever. No landlords allowed.
Back to work 🍿
I fleshed out app settings a bit more. I added default values, you can now cancel changes, reset, and if you save a change, it's saved directly to the db. Much better 😙
#javascript #dev #webdev #buildinpublic #UX #community
Back to work 🍿
I fleshed out app settings a bit more. I added default values, you can now cancel changes, reset, and if you save a change, it's saved directly to the db. Much better 😙
#javascript #dev #webdev #buildinpublic #UX #community
The idea is simple. You do the vast majority of config in an admin interface.
#javascript #dev #buildinpublic #webdev #UI #admin
The idea is simple. You do the vast majority of config in an admin interface.
#javascript #dev #buildinpublic #webdev #UI #admin
Doing it programmatically means there's a "general" max width for display images (based on user's screen dimensions * DPR). This avoids useless bandwidth
Plus, there's UI elements that have known dimensions
#dev #buildinpublic #javascript #performance
Doing it programmatically means there's a "general" max width for display images (based on user's screen dimensions * DPR). This avoids useless bandwidth
Plus, there's UI elements that have known dimensions
#dev #buildinpublic #javascript #performance
You're probably seen this pattern before. Resize and transform images on the fly with query params
Watch a 700KB image shrink to 20KB when we pass the right params we need (for its place in the UI) to the image server
#javascript #dev #buildinpublic #performance
You're probably seen this pattern before. Resize and transform images on the fly with query params
Watch a 700KB image shrink to 20KB when we pass the right params we need (for its place in the UI) to the image server
#javascript #dev #buildinpublic #performance
Wired up some db collections and some UI
It was much easier to get into because the design patterns from the forum page translate well here. I've always been a fan of emerging patterns in place of extensive planning
#javascript #dev #buildinpublic #ui
Wired up some db collections and some UI
It was much easier to get into because the design patterns from the forum page translate well here. I've always been a fan of emerging patterns in place of extensive planning
#javascript #dev #buildinpublic #ui
I feel like I got a lot of the ideas down. More importantly, the shell is there to continue when I get back to it.
I'm moving on to chat next
#dev #ui #javascript #forum #buildinpublic #webdev
I feel like I got a lot of the ideas down. More importantly, the shell is there to continue when I get back to it.
I'm moving on to chat next
#dev #ui #javascript #forum #buildinpublic #webdev
What info is actually useful once you do all the filtering?
I mostly care about three things
The title
When it was last active (relative to my time)
and how many people replied to it
the rest is... noise
#forum #UX #dev #javascript #buildinpublic
What info is actually useful once you do all the filtering?
I mostly care about three things
The title
When it was last active (relative to my time)
and how many people replied to it
the rest is... noise
#forum #UX #dev #javascript #buildinpublic
You have all kinds of inputs to add let the user control the URL, then you show a single list that incorporates that URL
The URL is shareable and the list is live because you sub with the same filters
#javascript #UI #buildinpublic #dev #forum
You have all kinds of inputs to add let the user control the URL, then you show a single list that incorporates that URL
The URL is shareable and the list is live because you sub with the same filters
#javascript #UI #buildinpublic #dev #forum
There's still a lot of stuff to iron out, but I'm really liking how everything is locked to the URL.
#community #forum #dev #javascript #buildinpublic #webdev #UI
There's still a lot of stuff to iron out, but I'm really liking how everything is locked to the URL.
#community #forum #dev #javascript #buildinpublic #webdev #UI
It's mostly drill-down because I think this is the most efficient way to explore content.
#buildinpublic #community #javascript #webdev #UI
It's mostly drill-down because I think this is the most efficient way to explore content.
#buildinpublic #community #javascript #webdev #UI
It's now a very direct way to call functions on the server. Always returns JSON and the functions are "mostly" pure.
It's integrated with the main db. ctx.user is the read user from the db.
#javascript #dev #fullstack #buildinpublic
It's now a very direct way to call functions on the server. Always returns JSON and the functions are "mostly" pure.
It's integrated with the main db. ctx.user is the read user from the db.
#javascript #dev #fullstack #buildinpublic
random fatal errors become more like minor hiccups unless there's something fundamentally broken
#javascript #dev #buildinpublic #backend #devops #webdev
random fatal errors become more like minor hiccups unless there's something fundamentally broken
#javascript #dev #buildinpublic #backend #devops #webdev
I added an install script that will offload all of that to systemd
This means we get auto-restarts and all kinds of systemd magic 🏋️
Npm no longer runs anything
#javascript #dev #buildinpublic #infra
I added an install script that will offload all of that to systemd
This means we get auto-restarts and all kinds of systemd magic 🏋️
Npm no longer runs anything
#javascript #dev #buildinpublic #infra
A new dev-only process runs a persistent esbuild build. This detects changes and has it's own SSE endpoint for live reload
Another dumb process will be for on off server functions - JSON
#javascript #buildinpublic #dev #webdev
A new dev-only process runs a persistent esbuild build. This detects changes and has it's own SSE endpoint for live reload
Another dumb process will be for on off server functions - JSON
#javascript #buildinpublic #dev #webdev
I want to anchor uploads to content (no orphaned uploads)
I tried Quil as the "blessed" editor and it works really well with pocketbase
Quil handles most of the UI, pocketbase handles file storage and permissions
#javascript #dev #buildinpublic #webdev #dx
I want to anchor uploads to content (no orphaned uploads)
I tried Quil as the "blessed" editor and it works really well with pocketbase
Quil handles most of the UI, pocketbase handles file storage and permissions
#javascript #dev #buildinpublic #webdev #dx
You get your client id and secret from some provider (like google or github) and add them in an .env file
That's all you need to do 🦄
Everything else is wired up. Pocketbase does most of the heavy work 🏋️
#javascript #dev #buildinpublic #webdev #UX #oauth
You get your client id and secret from some provider (like google or github) and add them in an .env file
That's all you need to do 🦄
Everything else is wired up. Pocketbase does most of the heavy work 🏋️
#javascript #dev #buildinpublic #webdev #UX #oauth
You no longer need any server routes. All the subscription stuff can be client-side.
This is mostly thanks to pocketbase apis
In other words, a component can be fully isolated, data and all.
#javascript #dev #buildinpublic #pubsub #webdev #dx
You no longer need any server routes. All the subscription stuff can be client-side.
This is mostly thanks to pocketbase apis
In other words, a component can be fully isolated, data and all.
#javascript #dev #buildinpublic #pubsub #webdev #dx
mail.localhost will give you a place to catch emails sent locally in dev
This will ship with project templates. One less thing you need to worry about configuring. Plus Mailpit is a single binary 🔥
#javascript #dev #buildinpublic #webdev #dx
mail.localhost will give you a place to catch emails sent locally in dev
This will ship with project templates. One less thing you need to worry about configuring. Plus Mailpit is a single binary 🔥
#javascript #dev #buildinpublic #webdev #dx
The immediate impact:
removed all static file handling and all the compression logic from the node app 🔥
enabling zstd (gzip fallback) is literally one word 🦄
#javascript #dev #buildinpublic #webdev #performance
The immediate impact:
removed all static file handling and all the compression logic from the node app 🔥
enabling zstd (gzip fallback) is literally one word 🦄
#javascript #dev #buildinpublic #webdev #performance
Real, live, performant db search in the content field of posts. The thing on the left is the entire thing.
the war on boilerplate continues 🤸
#javascript #dev #buildinpublic #performance #dx #webdev
Real, live, performant db search in the content field of posts. The thing on the left is the entire thing.
the war on boilerplate continues 🤸
#javascript #dev #buildinpublic #performance #dx #webdev
What an amazing piece of software ❤️
There's no need for app-level endpoints
The official SDK is designed to be run in the browser. It talks directly to the db server (single Golang binary)
This is all client code
#javascript #dev #buildinpublic #webdev
What an amazing piece of software ❤️
There's no need for app-level endpoints
The official SDK is designed to be run in the browser. It talks directly to the db server (single Golang binary)
This is all client code
#javascript #dev #buildinpublic #webdev
Essentially, you give it an endpoint, a render function, and a method (replace or the default "append") for what to do
#javascript #dev #buildinpublic
Essentially, you give it an endpoint, a render function, and a method (replace or the default "append") for what to do
#javascript #dev #buildinpublic
This time with "live search"
everything is CSR except
The product cards are essentially static links, so, skip the middle JSON part and just SSR them
#javascript #dev #buildinpublic
This time with "live search"
everything is CSR except
The product cards are essentially static links, so, skip the middle JSON part and just SSR them
#javascript #dev #buildinpublic
I see a path forward with this pattern.
I see a path forward with this pattern.