Skip to content

Repository files navigation

πŸ΄β€β˜ οΈ Stikkle

AI-Powered Developer Work Copilot

A unified engineering intelligence layer that aggregates your GitHub activity,
detects blockers, and tells you exactly what to work on next.

Features β€’ Tech Stack β€’ Getting Started β€’ Architecture β€’ Pages β€’ Contributing


🚨 Problem

Modern development workflows are fragmented across multiple tools:

  • GitHub β†’ code, PRs, issues, gists
  • Slack β†’ discussions and incident communication
  • CI/CD tools β†’ build status and failures

Developers constantly context-switch between these tools, losing focus and time. Critical issues are often missed or discovered too late.

πŸ’‘ Solution

Stikkle solves this by acting as a unified engineering intelligence layer.

  • πŸ“Š Aggregates data from GitHub (repos, issues, PRs, gists)
  • πŸ”— Correlates PRs, issues, and activity signals
  • 🚧 Detects blockers, stale work, and failures
  • 🎯 Recommends what you should work on next β€” prioritized by urgency

Instead of checking multiple tools, developers get one intelligent dashboard.


Features

🧠 AI Recommendation Engine

An intelligent engine that analyzes your GitHub data and generates prioritized task suggestions:

Signal Detection
Stale PRs Open PRs idle >7 days (high) or >30 days (critical)
Bug Issues Issues labeled bug or critical
Untriaged Repos Popular repos with 10+ open issues
Idle Repos Repos with no push in 90+ days
Draft PRs Work-in-progress PRs that need finishing
Assigned Issues Issues assigned to you that are aging
Feature Requests Enhancement-labeled issues from the community

Each recommendation includes a priority level, category, AI-generated reason, and a direct link to GitHub.

πŸ“Š Dashboard

A comprehensive overview of your engineering world:

  • Profile card with GitHub stats
  • Stats cards β€” total repos, open issues, open PRs
  • Recent PRs and open issues in a side-by-side view
  • Interactive area chart of repository activity over time
  • Activity feed with real-time event stream
  • Repos data table with sorting, filtering, and drag-and-drop column reordering

πŸ“‘ Activity Feed

A unified timeline that merges:

  • πŸ› Issues opened across your repos
  • πŸ”€ Pull requests created and updated
  • πŸ“€ Recent pushes to repositories
  • ⭐ Trending repos (starred repos gaining traction)

🏠 Landing Page

A scroll-animated marketing page with four phases:

  1. Hero β€” Animated tagline with CTA
  2. Features β€” Three feature cards with hover effects
  3. Showcase β€” Dashboard preview mockup
  4. CTA β€” Final call-to-action with gradient effects

Tech Stack

Layer Technology
Framework Next.js 16 (App Router)
Runtime React 19
Auth NextAuth v4 β€” GitHub OAuth
Styling Tailwind CSS v4
UI Components shadcn/ui + Radix UI
Animations Framer Motion v12 + Lenis
Charts Recharts
Tables TanStack Table + dnd-kit
Database PostgreSQL + Drizzle ORM
Validation Zod v4
Icons Lucide + Iconify

Getting Started

Prerequisites

  • Node.js β‰₯ 18.x
  • npm β‰₯ 9.x
  • PostgreSQL database
  • GitHub OAuth App (for authentication)

1. Clone the repository

git clone https://github.com/your-username/stikkle.git
cd stikkle

2. Install dependencies

npm install

3. Set up environment variables

Create a .env.local file in the project root:

# GitHub OAuth (create at https://github.com/settings/developers)
GITHUB_ID=your_github_client_id
GITHUB_SECRET=your_github_client_secret

# GitHub Personal Access Token (for API calls)
GITHUB_TOKEN=your_github_pat

# NextAuth
NEXTAUTH_SECRET=your_random_secret_string
NEXTAUTH_URL=http://localhost:3000

# PostgreSQL Database
DATABASE_URL=postgresql://user:password@localhost:5432/stikkle

Setting up GitHub OAuth

  1. Go to GitHub Developer Settings
  2. Click New OAuth App
  3. Set the homepage URL to http://localhost:3000
  4. Set the callback URL to http://localhost:3000/api/auth/callback/github
  5. Copy the Client ID and Client Secret to your .env.local

4. Set up the database

npx drizzle-kit push

5. Run the development server

npm run dev

Open http://localhost:3000 in your browser.


Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Browser                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Landing   β”‚  β”‚ Dashboard  β”‚  β”‚   Recs     β”‚ β”‚
β”‚  β”‚   Page     β”‚  β”‚   Page     β”‚  β”‚   Page     β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  Next.js Server  β”‚
              β”‚  (App Router)    β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β–Ό             β–Ό             β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚ NextAuth β”‚  β”‚ GitHub   β”‚  β”‚ Drizzle  β”‚
   β”‚ (OAuth)  β”‚  β”‚ REST API β”‚  β”‚ (Postgres)β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Files

stikkle/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ page.tsx                    # Landing page (scroll-animated)
β”‚   β”œβ”€β”€ layout.tsx                  # Root layout with auth & header
β”‚   β”œβ”€β”€ providers.tsx               # Client providers (session, Lenis, noise bg)
β”‚   β”œβ”€β”€ globals.css                 # Global styles & Tailwind config
β”‚   β”œβ”€β”€ api/auth/[...nextauth]/     # NextAuth API route
β”‚   β”œβ”€β”€ dashboard/page.tsx          # Main dashboard
β”‚   β”œβ”€β”€ recommendation/page.tsx     # AI recommendations + engine
β”‚   β”œβ”€β”€ activity/page.tsx           # Activity feed
β”‚   β”œβ”€β”€ gist/page.tsx               # GitHub gists
β”‚   └── publicrepo/page.tsx         # Public repos browser
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                         # shadcn/ui primitives
β”‚   β”œβ”€β”€ app-sidebar.tsx             # Navigation sidebar
β”‚   β”œβ”€β”€ dashboard-sections.tsx      # Dashboard card components
β”‚   β”œβ”€β”€ recommendations-content.tsx # Recommendations UI
β”‚   β”œβ”€β”€ activity-content.tsx        # Activity feed UI
β”‚   β”œβ”€β”€ scroll-homepage.tsx         # Animated landing page
β”‚   └── shadcn-space/blocks/        # Hero & header blocks
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ github.ts                   # Typed GitHub API wrapper
β”‚   β”œβ”€β”€ activity.ts                 # Activity event builder
β”‚   └── utils.ts                    # Utilities (cn helper)
β”œβ”€β”€ config/
β”‚   └── drizzle.ts                  # Database connection
└── drizzle/                        # Database migrations

Pages

Route Auth Description
/ ❌ Scroll-animated landing page
/about ❌ About the product
/docs ❌ Documentation
/dashboard βœ… Main dashboard with stats, PRs, issues, charts
/recommendation βœ… AI-powered task recommendations
/activity βœ… Unified activity timeline
/gist βœ… GitHub gists viewer
/publicrepo βœ… Public repositories browser
/capture βœ… Capture workflows
/proposal βœ… Proposals management
/prompts βœ… Prompts management
/analytics βœ… Analytics dashboard
/reports βœ… Reports
/projects βœ… Projects overview
/search βœ… Search functionality
/settings βœ… User settings
/team βœ… Team management
/data-library βœ… Data library
/lifecycle βœ… Project lifecycle
/word-assistant βœ… Writing assistant
/help βœ… Help & support

Scripts

npm run dev       # Start development server
npm run build     # Build for production
npm run start     # Start production server
npm run lint      # Run ESLint

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is open source. See the LICENSE file for details.


Built with ❀️ by the Stikkle team

About

A Coral-powered intelligent agent that unifies GitHub and Slack to help developers decide what to work on next, detect issues faster, and understand engineering context in one place.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages