Skip to content

alexnodeland/obsidian-github-projects

Repository files navigation

GitHub Projects for Obsidian

CI codecov Release License: MIT Obsidian Downloads

Manage GitHub Projects V2 with Kanban boards directly in Obsidian.


✨ Features

  • πŸ“‹ Kanban Board View - Visualize your GitHub Projects V2 as interactive Kanban boards
  • πŸ”„ Drag & Drop - Move items between columns with smooth drag-and-drop interactions
  • πŸŽ›οΈ Extensive Customization - Configure which fields appear on cards and in detail modals
  • πŸ” Secure Authentication - Personal Access Token stored in localStorage (not synced with vault)
  • ⚑ Real-time Sync - Auto-refresh project data from GitHub at configurable intervals
  • 🎨 Theme Compatible - Seamlessly integrates with Obsidian themes (light & dark mode)
  • πŸ“± Mobile Support - Works on desktop and mobile (iOS/Android)
  • πŸ” Powerful Filtering - Filter by assignee, state, type, or search across titles and descriptions
  • πŸ’¬ Card Details - Click any card to view full details, comments, and metadata

πŸ“¦ Installation

From Obsidian Community Plugins (Recommended)

  1. Open Settings in Obsidian
  2. Navigate to Community Plugins and disable Safe Mode
  3. Click Browse and search for "GitHub Projects"
  4. Click Install, then Enable

Manual Installation

  1. Download the latest release from GitHub releases
  2. Extract main.js, manifest.json, and styles.css to {VaultFolder}/.obsidian/plugins/github-projects/
  3. Reload Obsidian
  4. Enable the plugin in Settings β†’ Community Plugins

πŸš€ Quick Start

1. Create a GitHub Personal Access Token

For Fine-Grained Tokens (Recommended):

  1. Go to GitHub Settings β†’ Personal access tokens β†’ Fine-grained tokens
  2. Click "Generate new token"
  3. Configure permissions:
    • Projects: Read and Write (required)
    • Metadata: Read (required for organization access)
    • Contents: Read (required for private repositories)
  4. Copy the token (starts with github_pat_)

For Classic Tokens:

  1. Go to GitHub Settings β†’ Personal access tokens
  2. Click "Generate new token (classic)"
  3. Select the following scopes:
    • project - Required for project access
    • read:org - Required for organization dropdown/selector
    • repo - Required for private repositories
  4. Copy the token (starts with ghp_)

2. Configure the Plugin

  1. Open Obsidian Settings β†’ GitHub Projects
  2. Paste your token
  3. (Optional) Set a default project:
    • Choose Personal Account or Organization
    • For organizations, enter the org name (e.g., my-org)
    • Enter the project number (from URL: github.com/orgs/my-org/projects/5 β†’ 5)
    • Leave empty to use the project selector dropdown

3. Open Your Board

  • Click the dashboard icon (πŸ“‹) in the ribbon, or
  • Use command palette: "GitHub Projects: Open Project Board"

4. Customize Your View (Optional)

You can now customize what information appears on cards and in detail modals:

  1. Go to Obsidian Settings β†’ GitHub Projects
  2. Scroll to Card Display Settings to configure:
    • Card title length
    • Show/hide repository, labels, description, milestone, etc.
    • Maximum number of labels and assignees to display
    • Description truncation length
    • Engagement metrics (comments, reactions)
  3. Scroll to Detail Modal Settings to configure:
    • Show/hide status badges, repository, labels, assignees
    • Show/hide author, reviewers, milestone, PR changes
    • Show/hide engagement metrics, timeline, comments

All settings are saved and applied immediately to give you complete control over your workflow.

πŸ“– Documentation

πŸ› οΈ Development

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Obsidian installed

Quick Setup

# Clone the repository
git clone https://github.com/alexnodeland/obsidian-github-projects.git
cd obsidian-github-projects

# Install dependencies
npm install

# Build the plugin
npm run build

# Run tests
npm test

# Start development mode (auto-rebuild and copy to vault)
make dev VAULT=/path/to/your/vault

Available Commands

# Development
make dev VAULT=/path/to/vault   # Start development mode
make build                       # Production build
make test                        # Run tests
make coverage                    # Run tests with coverage

# Quality Checks
make lint                        # Run linter
make typecheck                   # Type checking
make check                       # Run all checks (lint + typecheck + test)

# Utilities
make clean                       # Clean build artifacts
make help                        # Show all available commands

See the Developer Guide for detailed instructions.

πŸ—οΈ Architecture

The plugin is built with:

  • TypeScript - Type-safe code
  • Preact - Lightweight React alternative (3KB)
  • SortableJS - Smooth drag-and-drop
  • GitHub GraphQL API - Projects V2 integration
  • Obsidian Plugin API - Native Obsidian integration

Key architectural decisions:

  • Event-driven state management for reactive UI
  • Optimistic updates for responsive user experience
  • Secure token storage in localStorage (not vault files)
  • Virtual DOM rendering for performance

Learn more in the Architecture documentation.

πŸ§ͺ Testing

We maintain high test coverage and code quality:

npm test                  # Run tests
npm run test:watch        # Watch mode
npm run test:coverage     # Generate coverage report

Coverage reports are available on Codecov.

🀝 Contributing

Contributions are welcome! We appreciate:

  • πŸ› Bug reports
  • ✨ Feature requests
  • πŸ“– Documentation improvements
  • πŸ’» Code contributions
  • 🎨 UI/UX enhancements

Please read our Contributing Guide and Developer Guide before submitting PRs.

Development Workflow

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes with tests
  4. Run checks: make check
  5. Commit: git commit -m "feat: add amazing feature"
  6. Push and create a PR

πŸ“ Changelog

See CHANGELOG.md for release history and changes.

πŸ”’ Security

  • Tokens are stored in localStorage (not in vault files)
  • Tokens are not synced via Obsidian Sync
  • Use fine-grained tokens with minimal permissions
  • Set token expiration for additional security

See the User Guide for more details.

❓ FAQ

Q: Can I use multiple projects? A: Yes! Use the project selector dropdown to switch between projects, or set a default in settings.

Q: Does this work with personal projects? A: Yes! Select any personal project in the project selector dropdown, or set your default to "Personal".

Q: Can I create new issues from Obsidian? A: Not yet. This feature is planned for a future release.

Q: What about rate limits? A: The plugin uses GitHub's GraphQL API (5,000 points/hour). Normal usage stays well within limits.

See the full FAQ in the User Guide.

πŸ™ Acknowledgments

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ’¬ Support


⭐ Star this repo if you find it helpful!

Made with ❀️ for the Obsidian community

Report Bug Β· Request Feature Β· Documentation