Hydraulisc Blog Writing Suite. Powered by NodeJS, express and a lot of wizardry (we hope, because otherwise we have no clue how it works).
Designed for Self-Hosting (guide)
BEWARE that the code structure is chaotic by design.
ADDITIONALLY we have not separated routes from the main server file. Once again, this is intentional. Undercomplicated, low-level documented code.
Still, here's a simple code structure:
- Root Folder
-
- server.js
-
- firebase_env.json
-
- views (contains the frontend code separated into pages and partials)
-
- public (contains site logo(s))
And yes, it's entirely inline CSS.
Can probably be set up in under a minute.
- Clone the repo
- Link your Firebase Database in your own
firebase_env.json. If you leave the file at root it'll likely work first try. - Secure your database with Firestore Rules.
- Open the folder in a terminal.
npm ito install everything.- Start the process with
npm run devif you want to customise it, or usenpm run liveif you just want the live version.
This code is NOT intended to be hosted publicly without changes!
To host this project safely in a public environment, we recommend implementing a solid Auth Header Token Regeneration and Separation System to properly separate users (this code does not) and manage session expiry (again, this code does not).
- This code is extremely buggy and written "on the fly".
- If you host this publicly and log in (without modifying the code), anyone who connects to your instance will instantly be logged in as you.
- Code is provided as-is without any kind of warranty or liability.
- This was created for the simple reason of making Firebase Firestore Blogging easier (for us at Hydraulisc).
Google has begun migrating Firebase and Firestore toward Google Cloud with increasingly restrictive limits (including a 1 MB cap on free databases) and tighter integration requirements. Since Blogger was built on the older Firebase v8 stack, these changes risked locking the project into an unsustainable or paid configuration.
To preserve long-term usability, we added a “Download RAW” function that allows the current user to export all posts from the entries collection as a local JSON file.
This feature exists purely as a data-redundancy measure—so that your content remains accessible even if Firebase access becomes limited, revoked, or deprecated.
The new endpoint (/download-json) performs a simple authenticated dump of the Firestore data and sends it as entries.json.
Nothing fancy; no cloud migration, no dependency on external storage.
Note: This addition doesn’t change Blogger’s single-user design or its non-production stance. It’s just a failsafe for when Google decides to “reimagine” your database again, allowing you ease of migration to other databases.