Code slows you down, always worth cleaning up. Yes, the business case is aligned with both the past bloat, and the current cleanup.
4,321 karma · joined December 10, 2008
jchris at fireproof.storage
Code slows you down, always worth cleaning up. Yes, the business case is aligned with both the past bloat, and the current cleanup.
https://unknown-ptarmigan-3137.vibecode.garden
Click the remix button in the bottom right and you can make it your own.
If login takes 30 seconds, and app gen 90, we think this is better for users (but clearly not everyone agrees.) Thanks for the feedback!
We had a lot of fun last night with Vibecode Karaoke, where you code an app at the same time as you sing a song.
We are updating this example to the latest right now, it shows how team chat can be implemented with database sharing. https://github.com/fireproof-storage/firehouse-chat
This drum machine is pretty forkable as well: https://github.com/fireproof-storage/bloopernet
You can also get started by clicking the "Edit in CodePen" button on our home page, which is just a JavaScript and HTML app.
https://github.com/fireproof-storage/hello-socket-fireproof
If anyone wants to join the effort, the semantics we are talking about are also aligned with WebRTC delivery, so you'd enable a bunch of p2p topologies with your contribution.
* Bloopernet Drum Machine: https://news.ycombinator.com/item?id=42177005
* Slack style team chat https://firehouse-chat.jchris.partykit.dev/
* PartKit Cloudflare https://blog.partykit.io/posts/fireproof-database-connector
import { useFireproof, useDocument } from "use-fireproof";
import { connect } from "@fireproof/cloud";
export default function App() {
const { database, useLiveQuery } = useFireproof("my_db");
connect(database, "my-remote");
const { docs } = useLiveQuery("_id");
const [newDoc, setNewDoc, saveNewDoc] = useDocument({ input: "" });
const handleSubmit = async (e) => {
e.preventDefault();
if (newDoc.input) {
await saveNewDoc();
setNewDoc({ input: "" }); // Reset for new entry
}
};
return (
<div>
<form onSubmit={handleSubmit}>
<input
value={newDoc.input}
onChange={(e) => setNewDoc({ input: e.target.value })}
/>
<button>Add</button>
</form>
<ul>
{docs.map((doc) => (
<li key={doc._id}>{JSON.stringify(doc)}</li>
))}
</ul>
</div>
);
}When you are ready to connect multiple users, that's when the backend comes in, which can be as simple as Fireproof Cloud or your existing AWS account.
We are in-flight on our cloud launch, so consider it a preview of the experience we are building. We’ll soon be shipping more complete authorization with UCAN capability delegation, and we are working on mature key rotation. I can't wait to hear what people want to build with it.
It uses the collaborative live database we are working on at Fireproof -- I hope the folks here like this sort of application model. If you have feedback we are listening.
It was written by one engineer, and then later refactored by a team to look like this (and many other files): https://github.com/apache/couchdb/blob/main/src/chttpd/src/c...
It's an interesting exercise to see how something grows and changes as it transitions from inspiration to real-world usage.
Architecture - https://use-fireproof.com/docs/architecture CRDT file format - https://fireproof.storage/posts/remote-access-crdt-wrapped-m...
https://use-fireproof.com/docs/architecture
It's also the easiest way to write React apps. Here are some ChatGPT expert builders that I've trained to use the CSS framework of your choice with Fireproof: https://use-fireproof.com/docs/chatgpt-quick-start/#react-ex...
Maybe they cost a lot for a bike but they are faster, cheaper, and more fun than a minivan: https://www.splendidcycles.com/products/riese-and-muller/rie... (see "Triple Badger Box for Packster 80" it comes with 6 seat belts.)