A Next.js SPA application for tracking issues from multiple GitHub repositories in a single kanban board view.
- Repository Management: Add and switch between multiple GitHub repositories
- Label Management: Create and manage custom labels to categorize issues
- Kanban Board: View issues as cards on a kanban board with:
- Two default lists: "Open" for open issues and "Closed" for closed issues
- Ability to add custom lists
- Drag and drop issues between lists
- Issue Cards: Each issue card displays:
- Title with a link to the GitHub issue
- User-managed labels
- Next.js 16 - React framework with App Router
- TypeScript - Type safety
- Prisma - Database ORM with SQLite
- Tailwind CSS - Styling
- @dnd-kit - Drag and drop functionality
- Node.js 18+ and npm (for local development)
- Docker and Docker Compose (for containerized deployment)
- Install dependencies:
npm install- Set up the database:
npm run prisma:generate
npm run prisma:migrate- Start the development server:
npm run dev- Open http://localhost:3000 in your browser.
Build and deploy the application with Docker Compose in one command:
docker-compose up --buildThis will:
- Build the Docker image
- Run database migrations
- Start the application on port 3000
The application will be available at http://localhost:3000.
To run in detached mode (background):
docker-compose up -d --buildTo stop the application:
docker-compose downNote: The database file (prisma/prod.db) is persisted in a volume, so your data will be preserved between container restarts.
-
Add a Repository: Click "+ Add" in the Repositories section and enter a repository in the format
owner/repo(e.g.,facebook/react) -
Fetch Issues: Select a repository to automatically fetch and display its issues
-
Manage Labels: Create custom labels with colors in the Labels section
-
Organize Issues:
- Issues are automatically placed in "Open" or "Closed" lists based on their GitHub state
- Drag and drop issues between lists
- Add custom lists using "+ Add List"
-
View Issues: Click on any issue card title to open it on GitHub
The application uses SQLite with Prisma. The database file will be created automatically in the prisma directory when you run migrations.
GET /api/repositories- Get all repositoriesPOST /api/repositories- Add a new repositoryDELETE /api/repositories/[id]- Delete a repositoryGET /api/repositories/[id]/issues- Fetch issues from GitHub for a repositoryGET /api/labels- Get all labelsPOST /api/labels- Create a new labelDELETE /api/labels/[id]- Delete a labelGET /api/lists- Get all kanban listsPOST /api/lists- Create a new listDELETE /api/lists/[id]- Delete a listPOST /api/issues/[id]/move- Move an issue to a different listPOST /api/issues/[id]/labels- Add a label to an issueDELETE /api/issues/[id]/labels?labelId=...- Remove a label from an issue
- The application fetches issues from the public GitHub API (no authentication required for public repos)
- Issues are stored locally in the database
- Pull requests are automatically filtered out (only issues are displayed)