You are browsing as a guest. Sign up (or log in) to start making projects!

ERN

  • 2 Devlogs
  • 8 Total hours

This is the beginning of my open-source, web-first Electronic Science Notebook tailored for students, hackers, and R&D enthusiasts (especially in Biomedical Engineering). Built to replace rigid, bloated legacy tools with a fast, zero-friction canvas for logging experiments, tracking variables, and visualizing data. Please let me know of any suggestions at [email protected]! This is my first big web app project.

Ship #1

SHIP: BenchNode (Project ERN V1)

Live App: https://ern-notebook.vercel.app/

What is BenchNode?

Current university research labs are plagued by outdated tools. Researchers waste hours manually transcribing data between sticky notes, Excel, and clunky legacy software.

BenchNode is a lightning-fast, local-first Electronic Research Notebook (ERN) designed specifically for Biomedical Engineering and high-speed data acquisition workflows. It is built to keep researchers in the flow state.

Core Features

  • Cmd+K Command Center: Press Cmd+K anywhere in the app to open the global command palette. Search your logs, jump between experiments, or create new trials instantly with full keyboard navigation.
  • Local-First Reliability: Powered by Zustand persistence, your data is saved instantly to your local machine. No database latency, and your data survives browser refreshes automatically.
  • Scientific Rich Text: A custom Tiptap editor tailored for high-speed Markdown. It supports structural formatting so you can write protocols at the speed of thought.
  • Dynamic Metadata: Track active Experiment IDs, Trial Numbers, Environmental Temperatures, and Status flags in a dedicated right-hand drawer alongside your raw data.

The Tech Stack

  • Framework: Next.js (App Router)
  • Styling: Tailwind CSS (Scientific Dark Mode aesthetic)
  • State Management: Zustand + Local Storage Middleware
  • Editor: Tiptap (Headless WYSIWYG)
  • Icons: Lucide React

Massive thanks to Hack Club and the Stardance event for pushing me to ship this!

  • 2 devlogs
  • 8h
Try project → See source code →
Open comments for this post

3h 8m 59s logged

Devlog: Local storage bugs and building a Cmd+K menu

For this update, I wanted to make the app actually usable without a mouse and fix a few state issues before shipping the MVP.

What I added

  • Auto-saving: Before this, if you accidentally refreshed the page, you lost all your notes. I hooked up Zustand’s persist middleware so everything auto-saves straight to localStorage as you type.
  • Cmd+K Menu: Built a global command palette from scratch. You can hit Cmd+K, search your notes, use the up/down arrow keys to navigate, and hit enter to jump to an experiment or instantly create a new one.

Bugs I ran into

1. Local storage corruption
Right after setting up the persist middleware, the app gave me a blank screen and threw a TypeError: notes.filter is not a function error. Zustand was pulling some corrupted object from an old browser cache, which broke the array. I fixed it by changing the storage key to clear the cache, and wrapped my state in an Array.isArray() check so it won’t crash if it reads weird data in the future.

2. React hook order error
While testing the command palette, I got the classic React “Rules of Hooks” error. I accidentally put an early return (if (!isOpen) return null;) above my last useEffect. Whenever I opened the modal, React freaked out because the number of hooks rendered suddenly changed. I just moved the hook above the early return and it works perfectly now.

Everything is stable and the keyboard navigation is feeling really smooth.

0
0
7
Open comments for this post

5h 1m 47s logged

I started by making the first base commit for the project, then I built out the README and started shaping the main direction of ERN as a fast electronic research notebook. From there, I added the command palette, updated the environment and .gitignore setup, and built the password gate so the app could have controlled access. After that, I connected the frontend, wired up the live TipTap text editor on the canvas, and then continued refining the writing experience with text formatting tools, BubbleMenu changes, and heading fixes.

After the core editor was working, I spent time tightening the interface and making the notebook feel more usable, including several rounds of fixes and rollback/rebuild work around headings and the BubbleMenu. I also went through a couple of test commits while iterating, then finalized the Alpha-1 and Alpha-1b milestones. Most recently, I updated the live demo URL in the README and cleaned up my Git setup so my commits could push correctly with my GitHub noreply email.

Right now, the project is synced to origin and ready for the next build-out phase.

0
0
17

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…