Developer Chronicles: Building a GitHub-Integrated Task Manager with NextJS and Go
Share this article
In the crowded landscape of task management tools, one developer is forging a custom path by integrating GitHub issue tracking into a personalized workflow solution. Opting for NextJS on the frontend and Go for the backend—paired with SQLite for data storage—this project defies generic templates to address specific productivity pain points. The initiative highlights pragmatic stack choices and database architecture while underscoring the importance of extensibility in modern app development.
The Stack: NextJS, Go, and SQLite
The developer, while a self-professed admirer of Svelte's simplicity, chose NextJS for this venture—citing its ecosystem momentum despite concerns over React's security history. For the backend, Go was selected for its performance and future-proofing, leveraging the built-in net/http library to avoid framework overhead. As the author notes:
"I'm not building this tool to be OK. I'm building it to perfectly integrate into my workflow with extensibility in mind... I don’t want any future limitation to be the technology."
This philosophy drove the decision to avoid NextJS's server-side features, ensuring compatibility with upcoming Tauri or Capacitor-based mobile apps. Frontend components use shadcn to accelerate UI development, prioritizing functionality over aesthetics during initial builds.
Database Design: Iterative SQLite Schemas
Core to the project is an evolving SQLite schema that transforms abstract workflows into structured data models. Initial drafts focused on basic project-task relationships but matured to include user authentication, session management, and dependency tracking. For example, the task table incorporates constraints and indexing for efficiency:
CREATE TABLE tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE,
github_issue_id INTEGER,
title TEXT NOT NULL,
status TEXT CHECK (status IN ('todo', 'in_progress', 'done')) DEFAULT 'todo',
priority INTEGER CHECK (priority BETWEEN 1 AND 5) DEFAULT 3,
scheduled_start TIMESTAMP,
depends_on_task_id INTEGER REFERENCES tasks(id)
);
CREATE INDEX idx_tasks_status ON tasks(status);
This schema supports GitHub issue syncing, priority tagging, and task scheduling—with indices optimizing query performance for status, priority, and due-date filters. The iterative design process, starting from rough drafts to production-ready migrations, exemplifies how early data modeling crystallizes application logic.
Why This Approach Matters
Beyond personal utility, this project illustrates critical lessons for developers:
- Extensibility Over Convenience: Separating the Go backend from NextJS enables cross-platform flexibility, avoiding lock-in to web-specific APIs.
- Minimal Viable Tooling: Using SQLite for a single-user case rejects over-engineering, while shadcn streamlines frontend work without sacrificing customization.
- Real-World Validation: Integrating GitHub’s API to sync issues as tasks demonstrates practical API consumption, moving beyond tutorial-level apps.
As development continues, the focus remains on solving tangible workflow gaps—like reconciling project deadlines with GitHub milestones—proving that even "lame" project ideas gain value when deeply personalized. Future series installments promise deeper dives into Go API handlers and task-scheduling algorithms.
Source: https://mohammedeabdelaziz.github.io/articles/go-next