For the best experience on desktop, install the Chrome extension to track your reading on news.ycombinator.com
Hacker Newsnew | past | comments | ask | show | jobs | submit | history | coolbloke1324's commentsregister

Oh forgot to add the URL to the github repo: https://github.com/Irrelon/nextjs-morph-page


Just a quick post to show a new library I put together built on top of the work here: https://github.com/illinois/next-page-transitions

This modifies the existing library and adds element morphing between pages. The elements only require the same id across pages, they do not need to be children of the same component.

It's not perfect yet but thought I'd release what I've done so far.

The link is in a serverless container that ramps up and down based on usage so if the page takes ages to load its because the container hasn't been hit in a while.


It is similar to pouch yes, but is more mongo query friendly right now. Also ForerunnerDB includes data-binding which is a pretty useful thing for web app devs.


Does sqlite run in a browser via JavaScript? I didn't think they had a JavaScript version...


WebSQL: http://en.wikipedia.org/wiki/Web_SQL_Database ; IndexedDB in Firefox is based on SQLite.


Not sure I get that... localforage is a minor part of ForerunnerDB, it's certainly not "based" on it! In fact you can use ForerunnerDB entirely without localforage.

Imagine if we had to acknowledge every different module we pulled in on NPM for every project we wrote... do you do that?


LocalForage has great cross-browser support (automatically switches between IndexedDB/WebSQL/LocalStorage), not to mention workarounds for browser bugs and the ability to store more data than what LocalStorage allows (~5-10MB). It seems like a fairly non-trivial component.

I just think it's nice to give a little credit where credit is due. :) I do see that you mention LocalForage in the changelog, but a shout-out on the site would be cool as well.

For my own part, PouchDB is pretty heavily based on LevelUP (in Node.js anyway), so we're sure to document it on the website: http://pouchdb.com/adapters.html#pouchdb_in_node_js


> Or you might want the rich querying ability of SQL to produce detailed reports.

That is one of the best reasons for a browser based database. Imagine that your web application needs to show a list of users and then allow that list to be filtered with search or by user type or age or whatever. Instead of having to write complex logic to loop your array of user objects that you got back from your server, or ask the server directly, you can instead apply a query to the list you already have on screen and it instantly updates to reflect the query you specified...

This allows you to use an MVC pattern when creating your web applications instead of littering your code with complex locked-in logic that will suffer instant code rot and be generally a pain to maintain after a month or two of development.


Its is a NoSQL style database from what I see, so you won't get especially complex queries from it without a fair bit of app level complexity.


Should probably check the query syntax and capabilities before making a judgement?


It said it was based on Mongo DB.


Primarily I've been focussed on getting the browser side solid and reliable in production, sync is definitely on the way though. Don't forget that PouchDB is designed to work with CouchDB and not MongoDB so Mongo lovers are somewhat in the cold right now with client-side counterparts.


For MongoDB lovers, PouchDB supports MongoDB-style querying via https://github.com/nolanlawson/pouchdb-find. MongoDB doesn't have the fundamental sync primitives that CouchDB has so I wouldn't expect a similar solution which supports MongoDB on the server.


It includes views, triggers / change events, transforms, collection joins and data binding. Also this allows you to spend more time on interacting with data than worrying about what browser supports what storage. It is also useful even for apps that have no use for storage because looping over JS objects for specific matches in a number of areas of an app will get dirty pretty quickly.


I thought all browsers support IndexedDB?

However, I think it would be helpful to communicate this as a wrapper around IndexedDB instead of positioning it as another new DB.


It's really not a wrapper around indexeddb at all. It doesn't even communicate with indexeddb except to save and load data for storage and that is optional. The main use here is for allowing web app developers to be able to load a dataset from a server and then query it dynamically on the client-side, as well as display that data automatically via data-binding.


But at the end you have to store it somehow and thus you employ the underlying browser DBs for that (like IndexedDB or WebSQL) => wrapper


But that is the point... you don't have to store it in an underlying browser db. It runs as an in-memory store if you don't use an underlying engine. The persistence module is an optional extra and doesn't even need to be included in the library.


> The persistence module is an optional extra

But a DB offers usually persistency and you called your product ForerunnerDB

I still think that the communication/positioning/branding of ForerunnerDB could be improved since it's misleading.


Unfortunately, support is still not great: http://caniuse.com/#feat=indexeddb

Those yellows are really more yellow than green, in my experience. :/


We've built it to be compatible with Node but have focussed on browser usage for this version. Our plans (see roadmap in readme) include all the node goodness you'd expect :)


> if it's not as good at updating the DOM as other libraries

ForerunnerDB is actually very efficient at updating the DOM, only making changes to the parts of the DOM that link to altered sections of an object / document.

> Is it doing more than wrapping over IndexedDB / LocalStorage?

Yes much more... it includes views, triggers / change events, transforms, collection joins and the obvious big one - data binding.

> Maybe the value prop only really shows up when you integrate the data binding? So it's sort of like reactive programming but based on a structured data store, instead of raw JS objects?

This is correct and because we've been using it in production for some time we would definitely say it makes web app development a lot simpler!


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search:

HN For You