This is a submission for the Built with Google Gemini: Writing Challenge
What I Built with Google Gemini
I built Construct Note, a fast, local-first Kanban and task management desktop application.
Many modern productivity apps rely heavily on cloud syncing and subscriptions, which can be a privacy concern for users who want complete control over their own data. I wanted to build a Trello-like application that lives entirely on the user's machine, offering the same rich drag-and-drop experience without the data leaving the local file system.
The Tech Stack:
-
Frontend: React, Vite, Tailwind/Vanilla CSS, and
@hello-pangea/dndfor fluid drag-and-drop mechanics. -
Backend / Desktop wrapper: Electron, Express (running locally inside the Electron main process), and
better-sqlite3for high-performance, synchronous database operations. - Distribution: Packaged as a standalone Linux AppImage.
Key Features:
- Unlimited Boards, Lists, and Cards.
- Full Markdown support for card descriptions (
react-markdown). - Checklists, Card Notes, and the ability to link/relate cards to one another.
- Card templates for standardizing repetitive task creation.
-
Offline-by-default architecture: Everything is saved to a local SQLite database (
constructnote.db) operating in WAL (Write-Ahead Log) mode for speed.
What role did Google Gemini play?
I used Google Gemini as my AI pair-programmer throughout the majority of the development lifecycle. Gemini helped me:
- Architect the Application: I am very bad at planning, which is why I wanted my own little planning helper. Gemini helped me stay in scope and stick to a plan. I put my ideas into simple words and after a few prompts I was able to have a good folder structure to go by and an idea of the general layout with some good suggestions for imports.
- Database Design & Migrations: Gemini wrote the SQLite schema and helped incrementally add new features (like milestones and accent colors).
- Complex UI Interactions: It assisted in wiring up the React drag-and-drop logic for reordering both lists and cards, ensuring optimistic UI updates matched the backend database state when I encountered some bugs.
-
Packaging and Compilation: When I ran into native Node module compilation errors trying to bundle
better-sqlite3for Linux, Gemini helped debug the build process and correctly configure theasarUnpackbindings.
What I Learned
-
Native Node Modules: I gained a better understanding of how native C++ Node modules behave when packaged into an
.asararchive, and how to configureelectron-builderto correctly rebuild them for specific target platforms. - AI Pair Programming: Developing with Gemini changed how I approach roadblocks. Instead of spending hours scouring StackOverflow for edge cases (like React state mismatches during fast drag-and-drop reordering), I could bounce ideas off Gemini and implement robust solutions in minutes.
Google Gemini Feedback
What worked well?
Gemini was surprisingly good at holding context of my project. I did not have to repeat myself too many times and I was able to actually progress much quicker in certain areas by having something to bounce ideas off rather than spending hours reading documentation and trying to figure out edge cases.



Top comments (0)