Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ZeroTask aggregates your Gmail, Slack, and GitHub notifications into a single, AI-powered daily brief. Built for privacy-conscious teams with a local-first architecture - your data never leaves your machine.

Notifications You must be signed in to change notification settings

SankaiAI/ZeroTask

Repository files navigation

ZeroTask

A Privacy-First Daily Brief System for Gmail, Slack & GitHub

ZeroTask is a local-first desktop/web application that aggregates your Gmail, Slack, and GitHub notifications into a single, action-ready daily brief. Built with privacy and security in mind, it runs entirely on your machine with shared service account architecture for company deployment.

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • Python 3.8+ and pip
  • Git for version control

Development Setup

  1. Clone the repository:

    git clone https://github.com/SankaiAI/ZeroTask.git
    cd ZeroTask
  2. Start the backend:

    cd zerotask-backend
    python -m venv venv
    # On Windows:
    venv\Scripts\activate
    # On macOS/Linux:
    source venv/bin/activate
    pip install -r requirements.txt
    python -m app.main
  3. Start the frontend:

    cd zerotask-frontend
    npm install
    npm run dev
  4. Access the application:

πŸ“‹ Features

Core Functionality

  • πŸ“§ Gmail Integration - Read emails and create draft replies (OAuth 2.0)
  • πŸ’¬ Slack Integration - Individual user OAuth with profile display and API access
  • πŸ”§ GitHub Integration - Monitor assigned issues and PR reviews (Service Account)
  • πŸ€– AI-Powered Summarization - Using local Ollama or BYOK LLM providers
  • πŸ”— Smart Deduplication - Merge related items across platforms
  • ⚑ Action-Ready Cards - Open, reply, snooze, and follow-up actions

Privacy & Security

  • 🏠 Local-First Architecture - All data stored locally
  • πŸ” Encrypted Token Storage - OAuth tokens and service credentials secured with AES-256
  • πŸ‘€ Individual User Authentication - Personal OAuth flows for Gmail and Slack
  • 🏒 Company Deployment Ready - IT-managed service accounts for GitHub
  • πŸ”’ No Central Server - Zero data sent to external services

Recent Enhancements

  • πŸ‘¨β€πŸ’Ό User Profile Display - Show Slack user avatars, names, emails, and titles
  • 🎯 Improved UX - Removed intrusive alert popups, console logging for debugging
  • πŸ”— OAuth Callback Handling - Seamless popup-based OAuth flows with automatic status updates
  • πŸ›‘οΈ Enhanced Security - Proper token encryption and secure credential management

Technical Stack

  • Frontend: Next.js 14, TypeScript, Tailwind CSS
  • Backend: FastAPI, SQLite, SQLAlchemy
  • LLM: Ollama (local) or LiteLLM (BYOK)
  • Authentication: Environment-based shared service accounts

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Next.js β”‚ β”‚ FastAPI β”‚ β”‚ SQLite β”‚
β”‚ Frontend │◄──►│ Backend │◄──►│ Database β”‚
β”‚ (Port 3000) β”‚ β”‚ (Port 8000) β”‚ β”‚ (Local File) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ β”‚
 β”‚ β–Ό
 β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ β”‚ External β”‚
 └─────────────── Services β”‚
 β”‚ β€’ Gmail API β”‚
 β”‚ β€’ Slack API β”‚
 β”‚ β€’ GitHub API β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ IT Team Setup (Company Deployment)

For company internal deployment, IT teams configure shared service accounts:

1. GitHub Service Account

# Create service account: zerotask-bot@company.com
# Generate PAT with scopes: repo, read:user, notifications
export GITHUB_TOKEN=ghp_your_service_account_token

2. Slack OAuth Application

# Create Slack OAuth app for individual user authentication
# Configure OAuth scopes: channels:read, chat:write, users:read, users:read.email, channels:history, groups:read, im:read
export SLACK_CLIENT_ID=your_oauth_client_id
export SLACK_CLIENT_SECRET=your_oauth_client_secret
# Configure OAuth redirect URI: https://your-domain.com/oauth2/slack/callback

3. Gmail OAuth

# Configure Google Cloud OAuth 2.0 credentials
export GOOGLE_CLIENT_ID=your_oauth_client_id
export GOOGLE_CLIENT_SECRET=your_oauth_client_secret
# Configure OAuth redirect URI: http://localhost:8000/oauth2/callback

πŸ“‹ See IT_SETUP.md for detailed configuration instructions.

πŸ”§ Configuration

Environment Variables

Copy and configure the environment file:

# Backend configuration
cd zerotask-backend
cp .env.example .env
# Edit .env with your service account credentials

Key Configuration Options

  • LLM Provider: Choose between Ollama (local) or BYOK providers
  • Polling Intervals: Configure how often to check each service
  • Daily Brief Time: Set when to generate daily summaries
  • Security Settings: Configure encryption and authentication

πŸ“– Documentation

  • PRD.md - Complete Product Requirements Document
  • IT_SETUP.md - IT team setup guide for service accounts
  • CHANGELOG.md - Version history and changes
  • CLAUDE.md - Development governance and contribution rules

πŸ”Œ API Endpoints

Authentication

  • GET /api/v1/auth/validate - Check all service configurations
  • GET /api/v1/auth/status/{provider} - Get provider connection status
  • GET /api/v1/auth/github/test - Test GitHub connection
  • GET /api/v1/auth/slack/oauth/status - Get Slack OAuth status and user profile
  • GET /api/v1/auth/slack/oauth/start - Start Slack OAuth flow
  • GET /api/v1/auth/gmail/status - Check Gmail OAuth configuration
  • GET /api/v1/auth/gmail/oauth/start - Start Gmail OAuth flow

Health & Monitoring

  • GET /api/v1/health - API health check
  • GET / - Root endpoint with API information

πŸ§ͺ Development

Code Structure

ZeroTask/
β”œβ”€β”€ zerotask-frontend/ # Next.js frontend
β”‚ β”œβ”€β”€ src/components/ # React components
β”‚ β”œβ”€β”€ src/app/ # App router pages
β”‚ β”œβ”€β”€ src/lib/ # Utilities and helpers
β”‚ └── public/ # Static files and OAuth callbacks
β”œβ”€β”€ zerotask-backend/ # FastAPI backend
β”‚ β”œβ”€β”€ app/api/ # API endpoints
β”‚ β”œβ”€β”€ app/models/ # SQLAlchemy models
β”‚ β”œβ”€β”€ app/services/ # Business logic (including OAuth services)
β”‚ └── app/utils/ # Utilities and encryption
└── docs/ # Documentation

Development Commands

# Frontend development
cd zerotask-frontend
npm run dev # Start development server
npm run build # Build for production
npm run lint # Run ESLint
# Backend development
cd zerotask-backend
python -m app.main # Start development server
pip install -r requirements.txt # Install dependencies

Testing

# Frontend testing
cd zerotask-frontend
npm test
# Backend testing
cd zerotask-backend
pytest

πŸš€ Deployment

Production Deployment

  1. Configure environment variables for production
  2. Build frontend application:
    cd zerotask-frontend
    npm run build
  3. Start backend server:
    cd zerotask-backend
    python -m app.main

Docker Deployment (Future)

# Build and run with Docker Compose
docker-compose up --build

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Follow the governance rules in CLAUDE.md
  4. Ensure PRD compliance for any scope changes
  5. Commit your changes: git commit -m 'Add amazing feature'
  6. Push to the branch: git push origin feature/amazing-feature
  7. Open a Pull Request

Development Guidelines

  • Follow the PRD - All changes must comply with the Product Requirements Document
  • Update CHANGELOG.md - Document all changes following Keep a Changelog format
  • Test thoroughly - Ensure all features work across platforms
  • Security first - Never commit secrets or compromise privacy-first architecture

πŸ“Š Milestones

Milestone 1 βœ… (Completed)

  • Slack + GitHub integration
  • Shared service account architecture
  • Basic daily brief generation
  • IT setup documentation

Milestone 2 βœ… (Completed)

  • Gmail OAuth integration
  • Slack individual user OAuth with profile display
  • Enhanced frontend with user profile avatars
  • Improved error handling and user experience

Milestone 3 (Next)

  • LLM summarization with Ollama
  • Priority scoring algorithm
  • Follow-up task management
  • Advanced deduplication

Milestone 4 (Future)

  • Export to Markdown
  • Background job scheduling
  • Enhanced preferences UI
  • Mobile responsiveness

πŸ›‘οΈ Security & Privacy

  • Local-first architecture - No data leaves your machine
  • Encrypted credentials - All tokens encrypted at rest
  • Minimal API scopes - Only necessary permissions requested
  • No telemetry - Optional opt-in only
  • Audit logging - All actions logged locally

πŸ“ž Support

  • Issues: GitHub Issues
  • Discussions: GitHub Discussions
  • Documentation: Check the docs/ directory
  • IT Support: Contact your organization's IT team for service account setup

πŸ“„ License

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

πŸ™ Acknowledgments

  • Claude Code - AI-powered development assistant
  • FastAPI - Modern Python web framework
  • Next.js - React framework for production
  • Ollama - Local LLM deployment
  • Tailwind CSS - Utility-first CSS framework

Built with privacy in mind. Your data stays on your machine.

Generated with Claude Code - AI-powered development assistant

About

ZeroTask aggregates your Gmail, Slack, and GitHub notifications into a single, AI-powered daily brief. Built for privacy-conscious teams with a local-first architecture - your data never leaves your machine.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /