The best Hacker News stories from Show from the past day
Latest posts:
Show HN: Hacker News for film buffs
I tried to replicate the minimal design of hacker news. A small pet project I wanted to do after getting frustrated with the politics and dumb down conversations the film communities have on X/twitter, instagram and other social platforms have. I'll try to update the landing page with more links, feel free to check it out and judge.
Show HN: Hacker News for film buffs
I tried to replicate the minimal design of hacker news. A small pet project I wanted to do after getting frustrated with the politics and dumb down conversations the film communities have on X/twitter, instagram and other social platforms have. I'll try to update the landing page with more links, feel free to check it out and judge.
Show HN: AI Tool Is Now Supporting React, Angular, CSS, Svelte, Vue
Show HN: AI Tool Is Now Supporting React, Angular, CSS, Svelte, Vue
Show HN: Ruroco – like port knocking, but better
Hey there HN!<p>ruroco (RUn RemOte COmmand) is a tool that lets you execute commands on a server by sending UDP packets (instead of knocking on ports).<p>the tool consist of 3 binaries:<p>- client -> runs on your notebook/computer and sends the UDP packets<p>- server -> receives the UDP packets and makes sure that they are valid<p>- commander -> runs the command encoded by the data of the UDP packet if it's valid<p>The commands are configured on the server side, so the client does not define what is going to be executed, it only picks from existing commands.<p>I use this tool to open up the SSH port on my server via ufw, but only for the IP address from where I'm connecting, so the SSH port appears closed for everyone else, except me.<p>This is my very first "real" rust project, so any feedback is highly appreciated :)<p>Enjoy!
Show HN: Ruroco – like port knocking, but better
Hey there HN!<p>ruroco (RUn RemOte COmmand) is a tool that lets you execute commands on a server by sending UDP packets (instead of knocking on ports).<p>the tool consist of 3 binaries:<p>- client -> runs on your notebook/computer and sends the UDP packets<p>- server -> receives the UDP packets and makes sure that they are valid<p>- commander -> runs the command encoded by the data of the UDP packet if it's valid<p>The commands are configured on the server side, so the client does not define what is going to be executed, it only picks from existing commands.<p>I use this tool to open up the SSH port on my server via ufw, but only for the IP address from where I'm connecting, so the SSH port appears closed for everyone else, except me.<p>This is my very first "real" rust project, so any feedback is highly appreciated :)<p>Enjoy!
Show HN: Ruroco – like port knocking, but better
Hey there HN!<p>ruroco (RUn RemOte COmmand) is a tool that lets you execute commands on a server by sending UDP packets (instead of knocking on ports).<p>the tool consist of 3 binaries:<p>- client -> runs on your notebook/computer and sends the UDP packets<p>- server -> receives the UDP packets and makes sure that they are valid<p>- commander -> runs the command encoded by the data of the UDP packet if it's valid<p>The commands are configured on the server side, so the client does not define what is going to be executed, it only picks from existing commands.<p>I use this tool to open up the SSH port on my server via ufw, but only for the IP address from where I'm connecting, so the SSH port appears closed for everyone else, except me.<p>This is my very first "real" rust project, so any feedback is highly appreciated :)<p>Enjoy!
Show HN: Ruroco – like port knocking, but better
Hey there HN!<p>ruroco (RUn RemOte COmmand) is a tool that lets you execute commands on a server by sending UDP packets (instead of knocking on ports).<p>the tool consist of 3 binaries:<p>- client -> runs on your notebook/computer and sends the UDP packets<p>- server -> receives the UDP packets and makes sure that they are valid<p>- commander -> runs the command encoded by the data of the UDP packet if it's valid<p>The commands are configured on the server side, so the client does not define what is going to be executed, it only picks from existing commands.<p>I use this tool to open up the SSH port on my server via ufw, but only for the IP address from where I'm connecting, so the SSH port appears closed for everyone else, except me.<p>This is my very first "real" rust project, so any feedback is highly appreciated :)<p>Enjoy!
Show HN: LangCSS – An AI Assistant for Tailwind
Hi All<p>This is my personal project that is an IDE and AI assistant for creating tailwind components and pages. You can chat to create designs, then make small edits yourself, and continue chatting to refine them. I am always working to improve the UX.<p>I have a time limited demo page here: <a href="https://langcss.com/demo" rel="nofollow">https://langcss.com/demo</a>, or you can sign up for free and use one of the 3 models for free.<p>Please let me know what you think! Feedback is welcome.<p>Originally this used NextJS (Hosted on Docker) and Azure Open AI. It now uses Vite/.NET (Still on Docker) in order to use a more familiar back end language. DB is postgres. AI is Groq/OpenAI Azure/Claude. (Groq for free version).<p>I think my next focus will be to make it so you can select parts of the design and run AI on those parts, which gets around the speed and context issues of working on larger designs. I also want to make a vanilla CSS (so no Tailwind!) mode. And look at integrating DaisyUI for the Tailwind users.<p>Previous submission: <a href="https://news.ycombinator.com/item?id=40143498">https://news.ycombinator.com/item?id=40143498</a><p>Since then there is now a proper back end, rather than just losing your work when you close the tab! It will save your session and you can have many projects. It also handles the custom @apply and custom Tailwind config, but admitedly not as well as play.tailwind.com yet!
Show HN: Isaiah – open-source and self-hosted app to manage everything Docker
Show HN: Isaiah – open-source and self-hosted app to manage everything Docker
Show HN: A Ghidra extension for exporting parts of a program as object files
This Ghidra extension unrelocates machine code through analysis and then synthesizes a working object file from a listing selection. It effectively turns computer programs into Lego bricks, to be torn down into pieces and reused into something new.<p>It supports the COFF and ELF object file formats, for the x86 and MIPS architectures. It has been successfully used on Linux, Windows and PlayStation executables. One user report is on a commercial video game from 2009 with a ~7 MiB Windows executable written in C++: it was delinked without its C runtime library and then relinked into a new executable at a different base address, with no visible change in functionality, as a prelude to a decompilation project.<p>Use-cases I've demonstrated on my blog include modding, making software ports, converting executable file formats, creating libraries... I've originally built this as part of a video game decompilation project ; I've been working on this over the past 2.5 years and recently it has started gaining some users besides me.
Show HN: A Ghidra extension for exporting parts of a program as object files
This Ghidra extension unrelocates machine code through analysis and then synthesizes a working object file from a listing selection. It effectively turns computer programs into Lego bricks, to be torn down into pieces and reused into something new.<p>It supports the COFF and ELF object file formats, for the x86 and MIPS architectures. It has been successfully used on Linux, Windows and PlayStation executables. One user report is on a commercial video game from 2009 with a ~7 MiB Windows executable written in C++: it was delinked without its C runtime library and then relinked into a new executable at a different base address, with no visible change in functionality, as a prelude to a decompilation project.<p>Use-cases I've demonstrated on my blog include modding, making software ports, converting executable file formats, creating libraries... I've originally built this as part of a video game decompilation project ; I've been working on this over the past 2.5 years and recently it has started gaining some users besides me.
Show HN: InstantDB – A Modern Firebase
Hey there HN! We’re Joe and Stopa, and today we’re open sourcing InstantDB, a client-side database that makes it easy to build real-time and collaborative apps like Notion and Figma.<p>Building modern apps these days involves a lot of schleps. For a basic CRUD app you need to spin up servers, wire up endpoints, integrate auth, add permissions, and then marshal data from the backend to the frontend and back again. If you want to deliver a buttery smooth user experience, you’ll need to add optimistic updates and rollbacks. We do these steps over and over for every feature we build, which can make it difficult to build delightful software. Could it be better?<p>We were senior and staff engineers at Facebook and Airbnb and had been thinking about this problem for years. In 2021, Stopa wrote an essay talking about how these schleps are actually database problems in disguise [1]. In 2022, Stopa wrote another essay sketching out a solution with a Firebase-like database with support for relations [2]. In the last two years we got the backing of James Tamplin (CEO of Firebase), became a team of 5 engineers, pushed almost ~2k commits, and today became open source.<p>Making a chat app in Instant is as simple as<p><pre><code> function Chat() {
// 1. Read
const { isLoading, error, data } = useQuery({
messages: {},
});
// 2. Write
const addMessage = (message) => {
transact(tx.messages[id()].update(message));
}
// 3. Render!
return <UI data={data} onAdd={addMessage} />
}
</code></pre>
Instant gives you a database you can subscribe to directly in the browser. You write relational queries in the shape of the data you want and we handle all the data fetching, permission checking, and offline caching. When you write transactions, optimistic updates and rollbacks are handled for you as well.<p>Under the hood we save data to postgres as triples and wrote a datalog engine for fetching data [3]. We don’t expect you to write datalog queries so we wrote a graphql-like query language that doesn’t require any build step.<p>Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and use last-write-win semantics to handle conflicts [4][5]. We also handle websocket connections and persist data to IndexDB on web and AsyncStorage for React Native, giving you multiplayer and offline mode for free.<p>This is the kind of infrastructure Linear uses to power their sync and build better features faster [6]. Instant gives you this infrastructure so you can focus on what’s important: building a great UX for your users, and doing it quickly. We have auth, permissions, and a dashboard with a suite tools for you to explore and manage your data. We also support ephemeral capabilities like presence (e.g. sharing cursors) and broadcast (e.g. live reactions) [7][8].<p>We have a free hosted solution where we don’t pause projects, we don’t limit the number of active applications, and we have no restrictions for commercial use. We can do this because our architecture doesn’t require spinning up a separate servers for each app. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host both the backend and the dashboard tools on your own.<p>Give us a spin today at <a href="https://instantdb.com/tutorial">https://instantdb.com/tutorial</a> and see our code at <a href="https://github.com/instantdb/instant">https://github.com/instantdb/instant</a><p>We love feedback :)<p>[1] <a href="https://www.instantdb.com/essays/db_browser">https://www.instantdb.com/essays/db_browser</a><p>[2] <a href="https://www.instantdb.com/essays/next_firebase">https://www.instantdb.com/essays/next_firebase</a><p>[3] <a href="https://www.instantdb.com/essays/datalogjs">https://www.instantdb.com/essays/datalogjs</a><p>[4] <a href="https://asana.com/inside-asana/worldstore-distributed-caching-reactivity-part-1" rel="nofollow">https://asana.com/inside-asana/worldstore-distributed-cachin...</a><p>[5] <a href="https://www.figma.com/blog/how-figmas-multiplayer-technology-works/#syncing-object-properties" rel="nofollow">https://www.figma.com/blog/how-figmas-multiplayer-technology...</a><p>[6] <a href="https://www.youtube.com/live/WxK11RsLqp4?t=2175s" rel="nofollow">https://www.youtube.com/live/WxK11RsLqp4?t=2175s</a><p>[7] <a href="https://www.joewords.com/posts/cursors" rel="nofollow">https://www.joewords.com/posts/cursors</a><p>[8] <a href="https://www.instantdb.com/examples?#5-reactions">https://www.instantdb.com/examples?#5-reactions</a>
Show HN: InstantDB – A Modern Firebase
Hey there HN! We’re Joe and Stopa, and today we’re open sourcing InstantDB, a client-side database that makes it easy to build real-time and collaborative apps like Notion and Figma.<p>Building modern apps these days involves a lot of schleps. For a basic CRUD app you need to spin up servers, wire up endpoints, integrate auth, add permissions, and then marshal data from the backend to the frontend and back again. If you want to deliver a buttery smooth user experience, you’ll need to add optimistic updates and rollbacks. We do these steps over and over for every feature we build, which can make it difficult to build delightful software. Could it be better?<p>We were senior and staff engineers at Facebook and Airbnb and had been thinking about this problem for years. In 2021, Stopa wrote an essay talking about how these schleps are actually database problems in disguise [1]. In 2022, Stopa wrote another essay sketching out a solution with a Firebase-like database with support for relations [2]. In the last two years we got the backing of James Tamplin (CEO of Firebase), became a team of 5 engineers, pushed almost ~2k commits, and today became open source.<p>Making a chat app in Instant is as simple as<p><pre><code> function Chat() {
// 1. Read
const { isLoading, error, data } = useQuery({
messages: {},
});
// 2. Write
const addMessage = (message) => {
transact(tx.messages[id()].update(message));
}
// 3. Render!
return <UI data={data} onAdd={addMessage} />
}
</code></pre>
Instant gives you a database you can subscribe to directly in the browser. You write relational queries in the shape of the data you want and we handle all the data fetching, permission checking, and offline caching. When you write transactions, optimistic updates and rollbacks are handled for you as well.<p>Under the hood we save data to postgres as triples and wrote a datalog engine for fetching data [3]. We don’t expect you to write datalog queries so we wrote a graphql-like query language that doesn’t require any build step.<p>Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and use last-write-win semantics to handle conflicts [4][5]. We also handle websocket connections and persist data to IndexDB on web and AsyncStorage for React Native, giving you multiplayer and offline mode for free.<p>This is the kind of infrastructure Linear uses to power their sync and build better features faster [6]. Instant gives you this infrastructure so you can focus on what’s important: building a great UX for your users, and doing it quickly. We have auth, permissions, and a dashboard with a suite tools for you to explore and manage your data. We also support ephemeral capabilities like presence (e.g. sharing cursors) and broadcast (e.g. live reactions) [7][8].<p>We have a free hosted solution where we don’t pause projects, we don’t limit the number of active applications, and we have no restrictions for commercial use. We can do this because our architecture doesn’t require spinning up a separate servers for each app. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host both the backend and the dashboard tools on your own.<p>Give us a spin today at <a href="https://instantdb.com/tutorial">https://instantdb.com/tutorial</a> and see our code at <a href="https://github.com/instantdb/instant">https://github.com/instantdb/instant</a><p>We love feedback :)<p>[1] <a href="https://www.instantdb.com/essays/db_browser">https://www.instantdb.com/essays/db_browser</a><p>[2] <a href="https://www.instantdb.com/essays/next_firebase">https://www.instantdb.com/essays/next_firebase</a><p>[3] <a href="https://www.instantdb.com/essays/datalogjs">https://www.instantdb.com/essays/datalogjs</a><p>[4] <a href="https://asana.com/inside-asana/worldstore-distributed-caching-reactivity-part-1" rel="nofollow">https://asana.com/inside-asana/worldstore-distributed-cachin...</a><p>[5] <a href="https://www.figma.com/blog/how-figmas-multiplayer-technology-works/#syncing-object-properties" rel="nofollow">https://www.figma.com/blog/how-figmas-multiplayer-technology...</a><p>[6] <a href="https://www.youtube.com/live/WxK11RsLqp4?t=2175s" rel="nofollow">https://www.youtube.com/live/WxK11RsLqp4?t=2175s</a><p>[7] <a href="https://www.joewords.com/posts/cursors" rel="nofollow">https://www.joewords.com/posts/cursors</a><p>[8] <a href="https://www.instantdb.com/examples?#5-reactions">https://www.instantdb.com/examples?#5-reactions</a>
Show HN: InstantDB – A Modern Firebase
Hey there HN! We’re Joe and Stopa, and today we’re open sourcing InstantDB, a client-side database that makes it easy to build real-time and collaborative apps like Notion and Figma.<p>Building modern apps these days involves a lot of schleps. For a basic CRUD app you need to spin up servers, wire up endpoints, integrate auth, add permissions, and then marshal data from the backend to the frontend and back again. If you want to deliver a buttery smooth user experience, you’ll need to add optimistic updates and rollbacks. We do these steps over and over for every feature we build, which can make it difficult to build delightful software. Could it be better?<p>We were senior and staff engineers at Facebook and Airbnb and had been thinking about this problem for years. In 2021, Stopa wrote an essay talking about how these schleps are actually database problems in disguise [1]. In 2022, Stopa wrote another essay sketching out a solution with a Firebase-like database with support for relations [2]. In the last two years we got the backing of James Tamplin (CEO of Firebase), became a team of 5 engineers, pushed almost ~2k commits, and today became open source.<p>Making a chat app in Instant is as simple as<p><pre><code> function Chat() {
// 1. Read
const { isLoading, error, data } = useQuery({
messages: {},
});
// 2. Write
const addMessage = (message) => {
transact(tx.messages[id()].update(message));
}
// 3. Render!
return <UI data={data} onAdd={addMessage} />
}
</code></pre>
Instant gives you a database you can subscribe to directly in the browser. You write relational queries in the shape of the data you want and we handle all the data fetching, permission checking, and offline caching. When you write transactions, optimistic updates and rollbacks are handled for you as well.<p>Under the hood we save data to postgres as triples and wrote a datalog engine for fetching data [3]. We don’t expect you to write datalog queries so we wrote a graphql-like query language that doesn’t require any build step.<p>Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and use last-write-win semantics to handle conflicts [4][5]. We also handle websocket connections and persist data to IndexDB on web and AsyncStorage for React Native, giving you multiplayer and offline mode for free.<p>This is the kind of infrastructure Linear uses to power their sync and build better features faster [6]. Instant gives you this infrastructure so you can focus on what’s important: building a great UX for your users, and doing it quickly. We have auth, permissions, and a dashboard with a suite tools for you to explore and manage your data. We also support ephemeral capabilities like presence (e.g. sharing cursors) and broadcast (e.g. live reactions) [7][8].<p>We have a free hosted solution where we don’t pause projects, we don’t limit the number of active applications, and we have no restrictions for commercial use. We can do this because our architecture doesn’t require spinning up a separate servers for each app. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host both the backend and the dashboard tools on your own.<p>Give us a spin today at <a href="https://instantdb.com/tutorial">https://instantdb.com/tutorial</a> and see our code at <a href="https://github.com/instantdb/instant">https://github.com/instantdb/instant</a><p>We love feedback :)<p>[1] <a href="https://www.instantdb.com/essays/db_browser">https://www.instantdb.com/essays/db_browser</a><p>[2] <a href="https://www.instantdb.com/essays/next_firebase">https://www.instantdb.com/essays/next_firebase</a><p>[3] <a href="https://www.instantdb.com/essays/datalogjs">https://www.instantdb.com/essays/datalogjs</a><p>[4] <a href="https://asana.com/inside-asana/worldstore-distributed-caching-reactivity-part-1" rel="nofollow">https://asana.com/inside-asana/worldstore-distributed-cachin...</a><p>[5] <a href="https://www.figma.com/blog/how-figmas-multiplayer-technology-works/#syncing-object-properties" rel="nofollow">https://www.figma.com/blog/how-figmas-multiplayer-technology...</a><p>[6] <a href="https://www.youtube.com/live/WxK11RsLqp4?t=2175s" rel="nofollow">https://www.youtube.com/live/WxK11RsLqp4?t=2175s</a><p>[7] <a href="https://www.joewords.com/posts/cursors" rel="nofollow">https://www.joewords.com/posts/cursors</a><p>[8] <a href="https://www.instantdb.com/examples?#5-reactions">https://www.instantdb.com/examples?#5-reactions</a>
Show HN: InstantDB – A Modern Firebase
Hey there HN! We’re Joe and Stopa, and today we’re open sourcing InstantDB, a client-side database that makes it easy to build real-time and collaborative apps like Notion and Figma.<p>Building modern apps these days involves a lot of schleps. For a basic CRUD app you need to spin up servers, wire up endpoints, integrate auth, add permissions, and then marshal data from the backend to the frontend and back again. If you want to deliver a buttery smooth user experience, you’ll need to add optimistic updates and rollbacks. We do these steps over and over for every feature we build, which can make it difficult to build delightful software. Could it be better?<p>We were senior and staff engineers at Facebook and Airbnb and had been thinking about this problem for years. In 2021, Stopa wrote an essay talking about how these schleps are actually database problems in disguise [1]. In 2022, Stopa wrote another essay sketching out a solution with a Firebase-like database with support for relations [2]. In the last two years we got the backing of James Tamplin (CEO of Firebase), became a team of 5 engineers, pushed almost ~2k commits, and today became open source.<p>Making a chat app in Instant is as simple as<p><pre><code> function Chat() {
// 1. Read
const { isLoading, error, data } = useQuery({
messages: {},
});
// 2. Write
const addMessage = (message) => {
transact(tx.messages[id()].update(message));
}
// 3. Render!
return <UI data={data} onAdd={addMessage} />
}
</code></pre>
Instant gives you a database you can subscribe to directly in the browser. You write relational queries in the shape of the data you want and we handle all the data fetching, permission checking, and offline caching. When you write transactions, optimistic updates and rollbacks are handled for you as well.<p>Under the hood we save data to postgres as triples and wrote a datalog engine for fetching data [3]. We don’t expect you to write datalog queries so we wrote a graphql-like query language that doesn’t require any build step.<p>Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and use last-write-win semantics to handle conflicts [4][5]. We also handle websocket connections and persist data to IndexDB on web and AsyncStorage for React Native, giving you multiplayer and offline mode for free.<p>This is the kind of infrastructure Linear uses to power their sync and build better features faster [6]. Instant gives you this infrastructure so you can focus on what’s important: building a great UX for your users, and doing it quickly. We have auth, permissions, and a dashboard with a suite tools for you to explore and manage your data. We also support ephemeral capabilities like presence (e.g. sharing cursors) and broadcast (e.g. live reactions) [7][8].<p>We have a free hosted solution where we don’t pause projects, we don’t limit the number of active applications, and we have no restrictions for commercial use. We can do this because our architecture doesn’t require spinning up a separate servers for each app. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host both the backend and the dashboard tools on your own.<p>Give us a spin today at <a href="https://instantdb.com/tutorial">https://instantdb.com/tutorial</a> and see our code at <a href="https://github.com/instantdb/instant">https://github.com/instantdb/instant</a><p>We love feedback :)<p>[1] <a href="https://www.instantdb.com/essays/db_browser">https://www.instantdb.com/essays/db_browser</a><p>[2] <a href="https://www.instantdb.com/essays/next_firebase">https://www.instantdb.com/essays/next_firebase</a><p>[3] <a href="https://www.instantdb.com/essays/datalogjs">https://www.instantdb.com/essays/datalogjs</a><p>[4] <a href="https://asana.com/inside-asana/worldstore-distributed-caching-reactivity-part-1" rel="nofollow">https://asana.com/inside-asana/worldstore-distributed-cachin...</a><p>[5] <a href="https://www.figma.com/blog/how-figmas-multiplayer-technology-works/#syncing-object-properties" rel="nofollow">https://www.figma.com/blog/how-figmas-multiplayer-technology...</a><p>[6] <a href="https://www.youtube.com/live/WxK11RsLqp4?t=2175s" rel="nofollow">https://www.youtube.com/live/WxK11RsLqp4?t=2175s</a><p>[7] <a href="https://www.joewords.com/posts/cursors" rel="nofollow">https://www.joewords.com/posts/cursors</a><p>[8] <a href="https://www.instantdb.com/examples?#5-reactions">https://www.instantdb.com/examples?#5-reactions</a>
Show HN: InstantDB – A Modern Firebase
Hey there HN! We’re Joe and Stopa, and today we’re open sourcing InstantDB, a client-side database that makes it easy to build real-time and collaborative apps like Notion and Figma.<p>Building modern apps these days involves a lot of schleps. For a basic CRUD app you need to spin up servers, wire up endpoints, integrate auth, add permissions, and then marshal data from the backend to the frontend and back again. If you want to deliver a buttery smooth user experience, you’ll need to add optimistic updates and rollbacks. We do these steps over and over for every feature we build, which can make it difficult to build delightful software. Could it be better?<p>We were senior and staff engineers at Facebook and Airbnb and had been thinking about this problem for years. In 2021, Stopa wrote an essay talking about how these schleps are actually database problems in disguise [1]. In 2022, Stopa wrote another essay sketching out a solution with a Firebase-like database with support for relations [2]. In the last two years we got the backing of James Tamplin (CEO of Firebase), became a team of 5 engineers, pushed almost ~2k commits, and today became open source.<p>Making a chat app in Instant is as simple as<p><pre><code> function Chat() {
// 1. Read
const { isLoading, error, data } = useQuery({
messages: {},
});
// 2. Write
const addMessage = (message) => {
transact(tx.messages[id()].update(message));
}
// 3. Render!
return <UI data={data} onAdd={addMessage} />
}
</code></pre>
Instant gives you a database you can subscribe to directly in the browser. You write relational queries in the shape of the data you want and we handle all the data fetching, permission checking, and offline caching. When you write transactions, optimistic updates and rollbacks are handled for you as well.<p>Under the hood we save data to postgres as triples and wrote a datalog engine for fetching data [3]. We don’t expect you to write datalog queries so we wrote a graphql-like query language that doesn’t require any build step.<p>Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and use last-write-win semantics to handle conflicts [4][5]. We also handle websocket connections and persist data to IndexDB on web and AsyncStorage for React Native, giving you multiplayer and offline mode for free.<p>This is the kind of infrastructure Linear uses to power their sync and build better features faster [6]. Instant gives you this infrastructure so you can focus on what’s important: building a great UX for your users, and doing it quickly. We have auth, permissions, and a dashboard with a suite tools for you to explore and manage your data. We also support ephemeral capabilities like presence (e.g. sharing cursors) and broadcast (e.g. live reactions) [7][8].<p>We have a free hosted solution where we don’t pause projects, we don’t limit the number of active applications, and we have no restrictions for commercial use. We can do this because our architecture doesn’t require spinning up a separate servers for each app. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host both the backend and the dashboard tools on your own.<p>Give us a spin today at <a href="https://instantdb.com/tutorial">https://instantdb.com/tutorial</a> and see our code at <a href="https://github.com/instantdb/instant">https://github.com/instantdb/instant</a><p>We love feedback :)<p>[1] <a href="https://www.instantdb.com/essays/db_browser">https://www.instantdb.com/essays/db_browser</a><p>[2] <a href="https://www.instantdb.com/essays/next_firebase">https://www.instantdb.com/essays/next_firebase</a><p>[3] <a href="https://www.instantdb.com/essays/datalogjs">https://www.instantdb.com/essays/datalogjs</a><p>[4] <a href="https://asana.com/inside-asana/worldstore-distributed-caching-reactivity-part-1" rel="nofollow">https://asana.com/inside-asana/worldstore-distributed-cachin...</a><p>[5] <a href="https://www.figma.com/blog/how-figmas-multiplayer-technology-works/#syncing-object-properties" rel="nofollow">https://www.figma.com/blog/how-figmas-multiplayer-technology...</a><p>[6] <a href="https://www.youtube.com/live/WxK11RsLqp4?t=2175s" rel="nofollow">https://www.youtube.com/live/WxK11RsLqp4?t=2175s</a><p>[7] <a href="https://www.joewords.com/posts/cursors" rel="nofollow">https://www.joewords.com/posts/cursors</a><p>[8] <a href="https://www.instantdb.com/examples?#5-reactions">https://www.instantdb.com/examples?#5-reactions</a>
Show HN: InstantDB – A Modern Firebase
Hey there HN! We’re Joe and Stopa, and today we’re open sourcing InstantDB, a client-side database that makes it easy to build real-time and collaborative apps like Notion and Figma.<p>Building modern apps these days involves a lot of schleps. For a basic CRUD app you need to spin up servers, wire up endpoints, integrate auth, add permissions, and then marshal data from the backend to the frontend and back again. If you want to deliver a buttery smooth user experience, you’ll need to add optimistic updates and rollbacks. We do these steps over and over for every feature we build, which can make it difficult to build delightful software. Could it be better?<p>We were senior and staff engineers at Facebook and Airbnb and had been thinking about this problem for years. In 2021, Stopa wrote an essay talking about how these schleps are actually database problems in disguise [1]. In 2022, Stopa wrote another essay sketching out a solution with a Firebase-like database with support for relations [2]. In the last two years we got the backing of James Tamplin (CEO of Firebase), became a team of 5 engineers, pushed almost ~2k commits, and today became open source.<p>Making a chat app in Instant is as simple as<p><pre><code> function Chat() {
// 1. Read
const { isLoading, error, data } = useQuery({
messages: {},
});
// 2. Write
const addMessage = (message) => {
transact(tx.messages[id()].update(message));
}
// 3. Render!
return <UI data={data} onAdd={addMessage} />
}
</code></pre>
Instant gives you a database you can subscribe to directly in the browser. You write relational queries in the shape of the data you want and we handle all the data fetching, permission checking, and offline caching. When you write transactions, optimistic updates and rollbacks are handled for you as well.<p>Under the hood we save data to postgres as triples and wrote a datalog engine for fetching data [3]. We don’t expect you to write datalog queries so we wrote a graphql-like query language that doesn’t require any build step.<p>Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and use last-write-win semantics to handle conflicts [4][5]. We also handle websocket connections and persist data to IndexDB on web and AsyncStorage for React Native, giving you multiplayer and offline mode for free.<p>This is the kind of infrastructure Linear uses to power their sync and build better features faster [6]. Instant gives you this infrastructure so you can focus on what’s important: building a great UX for your users, and doing it quickly. We have auth, permissions, and a dashboard with a suite tools for you to explore and manage your data. We also support ephemeral capabilities like presence (e.g. sharing cursors) and broadcast (e.g. live reactions) [7][8].<p>We have a free hosted solution where we don’t pause projects, we don’t limit the number of active applications, and we have no restrictions for commercial use. We can do this because our architecture doesn’t require spinning up a separate servers for each app. When you’re ready to grow, we have paid plans that scale with you. And of course you can self host both the backend and the dashboard tools on your own.<p>Give us a spin today at <a href="https://instantdb.com/tutorial">https://instantdb.com/tutorial</a> and see our code at <a href="https://github.com/instantdb/instant">https://github.com/instantdb/instant</a><p>We love feedback :)<p>[1] <a href="https://www.instantdb.com/essays/db_browser">https://www.instantdb.com/essays/db_browser</a><p>[2] <a href="https://www.instantdb.com/essays/next_firebase">https://www.instantdb.com/essays/next_firebase</a><p>[3] <a href="https://www.instantdb.com/essays/datalogjs">https://www.instantdb.com/essays/datalogjs</a><p>[4] <a href="https://asana.com/inside-asana/worldstore-distributed-caching-reactivity-part-1" rel="nofollow">https://asana.com/inside-asana/worldstore-distributed-cachin...</a><p>[5] <a href="https://www.figma.com/blog/how-figmas-multiplayer-technology-works/#syncing-object-properties" rel="nofollow">https://www.figma.com/blog/how-figmas-multiplayer-technology...</a><p>[6] <a href="https://www.youtube.com/live/WxK11RsLqp4?t=2175s" rel="nofollow">https://www.youtube.com/live/WxK11RsLqp4?t=2175s</a><p>[7] <a href="https://www.joewords.com/posts/cursors" rel="nofollow">https://www.joewords.com/posts/cursors</a><p>[8] <a href="https://www.instantdb.com/examples?#5-reactions">https://www.instantdb.com/examples?#5-reactions</a>
Show HN: Permify 1.0 – Open-source fine-grained authorization service
Permify was born out of our repeated struggles with authorization.<p>Like any other piece of software, authorization starts small but as things grow scaling it becomes a real pain and begins to hinder product development processes.<p>Ad-hoc authorization systems scattered throughout your app’s codebase are hard to manage, reason about, and iterate on as the company grows.<p>Also you will need to have more specific access controls as things grow. Traditional approaches like RBAC is inefficient for defining granular permissions such as resource-specific, hierarchical, or context-aware permissions.<p>Architecture is another problem, in a distributed system you’re going to need a solid plan to manage permissions between your services — all while ensuring high availability and providing low latency in access checks for sure.<p>We’ve created an open-source project to eliminate the authorization burden for devs.<p>It’s Permify, an Authorization-as-a-Service to help developers build and manage their authorization in a scalable, secure, and extendable manner.<p>And last week, we released the first major version (v1.0.0) of it!<p>Here is how Permify helps you handle authorization.<p>- Centralize & Standardize Your Authorization: Abstract your authorization logic from your codebase and application logic to easily reason, test, and debug your authorization. Treat your authorization as a sole entity and move faster within your core development.<p>- Build Granular Permissions For Any Case You Have: You can create granular (resource-specific, hierarchical, context aware, etc) permissions and policies using Permify’s domain specific language that is compatible with RBAC, ReBAC and ABAC.<p>- Set Custom Authorization For Your Tenants: Set up isolated authorization logic and custom permissions for your vendors/organizations (tenants) and manage them in a single place.<p>- Scale Your Authorization As You Wish: Achieve lightning-fast response times down to 10ms for access checks with a proven infrastructure inspired by Google Zanzibar, Google’s Consistent, Global Authorization System.<p>Try it out and send any feedback our way!