{"slug": "show-hn-sparq-pulse-self-hosted-github-native-project-management", "title": "Show HN: SparQ Pulse – Self-hosted, GitHub-native project management", "summary": "SparQ Soft released SparQ Pulse, the first fully open-source Developer Experience suite for GitHub-native teams, offering self-hosted project management, async standups, and team presence features. The tool runs on SQLite with zero external dependencies and includes optional AI-powered capabilities via OpenAI or Anthropic. SparQ Pulse is available immediately, with Metrics and Knowledge products coming soon.", "body_md": "**The first fully open-source Developer Experience suite for GitHub-native teams**\n\n[Changelog](/gosparq/sparq/blob/master/CHANGELOG.md) ·\n[Contributing](/gosparq/sparq/blob/master/CONTRIBUTING.md) ·\n[Security](/gosparq/sparq/blob/master/SECURITY.md)\n\n[\n](/gosparq/sparq/blob/master/.github/assets/screenshot.png)\n\nDashboard: team pulse, blockers, and activity at a glance\n\nsparQ is the first fully open-source Developer Experience suite for GitHub-native teams. It's a set of focused products that share one self-hosted home. Start with Pulse today, with Metrics and Knowledge on the way.\n\n| Product | Description | Status |\n|---|---|---|\nPulse |\nGitHub-native project management, async standups, team presence, and delivery visibility | Available |\nMetrics |\nDORA metrics and engineering analytics | Coming soon |\nKnowledge |\nLLM-powered knowledge base from your codebase | Coming soon |\n\nGitHub-native project management, async standups, team presence, and delivery visibility for teams living in GitHub. Self-hosting is always free. Forever.\n\n**Runs on SQLite out of the box. Zero external dependencies.**\n\n**GitHub Sync**— Projects, tasks, and status derived from PRs, issues, and commits** Async Standups**— Template-driven daily check-ins with audio recording and transcription** Blockers Board**— Track blockers with owners, urgency tiers, and automatic nudges** Presence**— See who's available, focused, blocked, or out across the team** Action Items**— Three-tier urgency system (Now / Later / Whenever), weekly plans** Chat & DMs**— Real-time messaging with channels, direct messages, and reactions** Documents**— Notes, e-signatures with audit trail, knowledge base** People**— Directory, onboarding, 1-on-1s, hiring pipeline** Time & Attendance**— Clock in/out, PTO requests, schedules, punch corrections** AI Assistant**— Optional LLM-powered features (OpenAI or Anthropic)** Mobile API**— Full REST API with JWT auth** Multi-language**— Built-in i18n with installable language packs\n\n```\ngit clone https://github.com/sparqsoft/sparq.git\ncd sparq\ndocker compose up\n```\n\nOpen [http://localhost:8000](http://localhost:8000) to get started.\n\nRequires Python 3.13+ and [uv](https://docs.astral.sh/uv/).\n\n```\ngit clone https://github.com/sparqsoft/sparq.git\ncd sparq/pulse\nmake venv\nsource venv/bin/activate\nmake run\n```\n\nOpen [http://localhost:8000](http://localhost:8000).\n\nBy default sparQ uses SQLite (zero-config). To use PostgreSQL, set `DATABASE_URL`\n\nin your `.env`\n\n:\n\n```\nDATABASE_URL=postgresql://sparq:sparq@localhost:5432/sparq\n```\n\nThen start a Postgres container and run:\n\n```\ncd pulse\nmake db-start\nmake run\n```\n\nCopy `.env.example`\n\nto `.env`\n\nin the `pulse/`\n\ndirectory. The app auto-generates one on first run if missing.\n\nKey settings:\n\n| Variable | Default | Description |\n|---|---|---|\n`SECRET_KEY` |\nAuto-generated | Flask session secret |\n`DATABASE_URL` |\nSQLite (`data/sparq.db` ) |\nDatabase connection string |\n`FLASK_DEBUG` |\n`false` |\nEnable debug mode |\n`LLM_PROVIDER` |\n`openai` |\nAI provider (`openai` or `anthropic` ) |\n`OPENAI_API_KEY` |\n-- | Required for AI features |\n`MSA_USER` |\n-- | Admin panel username (disabled if unset) |\n`MSA_PASS` |\n-- | Admin panel password (disabled if unset) |\n\nSee [ pulse/.env.example](/gosparq/sparq/blob/master/pulse/.env.example) for the full list.\n\nsparQ includes a built-in admin console at `/msa`\n\nfor managing organizations, workspaces, and users. It is **disabled by default**. Set both `MSA_USER`\n\nand `MSA_PASS`\n\nin your `.env`\n\nto enable it.\n\nsparQ sends transactional emails for signups, password resets, and magic link logins. Configure email from the admin panel or via environment variables.\n\n**Option 1: Admin Panel (recommended)**\n\n- Enable the MSA admin panel (set\n`MSA_USER`\n\nand`MSA_PASS`\n\n) - Navigate to\n`/msa/email`\n\n- Select a provider (Gmail, Microsoft 365, SendGrid, Mailgun, AWS SES, or custom SMTP)\n- Enter your credentials and click\n**Save Configuration** - Use\n**Test Connection** and**Send Test Email** to verify\n\n**Option 2: Environment Variables**\n\nSet these in your `.env`\n\nto configure email without the admin panel:\n\n| Variable | Description |\n|---|---|\n`SMTP_HOST` |\nSMTP server hostname (e.g., `smtp.gmail.com` ) |\n`SMTP_PORT` |\nSMTP port (default: `587` ) |\n`SMTP_USERNAME` |\nSMTP username or email address |\n`SMTP_PASSWORD` |\nSMTP password or app-specific password |\n`SMTP_FROM_EMAIL` |\nSender email address |\n`SMTP_PROVIDER` |\nProvider name (e.g., `gmail` , `sendgrid` , `custom` ) |\n\nEnvironment variables take priority over admin panel settings. Fields locked by env vars are shown with a lock icon in the admin panel.\n\nGmail users:Enable 2-Step Verification, then generate an[App Password]. Use the 16-character app password, not your regular password.\n\nIf no email provider is configured, signup falls back to direct password-based registration (no email confirmation).\n\nsparQ syncs tasks and blockers with GitHub Issues. Connect using a classic Personal Access Token (PAT):\n\n- Go to\n[GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)](https://github.com/settings/tokens/new) - Create a new token with these scopes:\n`repo`\n\nand`admin:repo_hook`\n\n- In sparQ, go to\n**Settings → Integrations** and paste your token and repository (`owner/repo`\n\n) - Open\n**Settings → Integrations → GitHub → Match GitHub people** and map each GitHub account to a sparQ member, so commit and PR activity is attributed to the right person (unmapped accounts are skipped). Members can also self-map in their own settings.\n\nThat's it. Issues, labels, and assignees sync between sparQ and your repository, and commits and pull requests show up in the **Status** feed as each person's current activity.\n\nSelf-hosting behind a reverse proxy?Set`GITHUB_WEBHOOK_BASE_URL`\n\nto your public URL (e.g.`https://app.example.com`\n\n) so the auto-registered webhook resolves correctly, and set`GITHUB_WEBHOOK_SECRET`\n\nto verify inbound webhooks (required in production).\n\n```\nsparq/\n├── pulse/                  # Main application (sparQ Pulse)\n│   ├── app.py              # Application factory\n│   ├── modules/            # Feature modules (core, updates, presence, etc.)\n│   ├── system/             # Framework (db, auth, email, middleware, etc.)\n│   ├── tests/              # Unit, integration, and e2e tests\n│   ├── Makefile            # Dev commands (make run, make venv, etc.)\n│   └── requirements.in     # Python dependencies\n├── metrics/                # (coming soon)\n├── knowledge/              # (coming soon)\n└── docker-compose.yml\n```\n\n**Backend**: Python, Flask, SQLAlchemy, Flask-SocketIO** Database**: SQLite (default) or PostgreSQL** Frontend**: Server-rendered Jinja2 templates, HTMX** Real-time**: WebSocket via Flask-SocketIO** Production**: Gunicorn\n\n```\ncd pulse\n\n# Run tests\npython -m pytest tests/\n\n# Reset database\nmake reset\n\n# Verbose startup (shows module loading)\nmake run V=1\n```\n\nWe welcome contributions! Please read our [Contributing Guide](/gosparq/sparq/blob/master/CONTRIBUTING.md) to get started.\n\nIf you find a security vulnerability, please follow our [Security Policy](/gosparq/sparq/blob/master/SECURITY.md) instead of filing a public issue.\n\nThis project is licensed under the [GNU Affero General Public License v3.0](/gosparq/sparq/blob/master/LICENSE).\n\nCopyright (c) 2025-2026 sparQ Software LLC.", "url": "https://wpnews.pro/news/show-hn-sparq-pulse-self-hosted-github-native-project-management", "canonical_source": "https://github.com/gosparQ/sparq", "published_at": "2026-06-24 17:53:03+00:00", "updated_at": "2026-06-24 18:10:10.480527+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["SparQ Soft", "SparQ Pulse", "GitHub", "OpenAI", "Anthropic", "SQLite", "Flask", "Docker"], "alternates": {"html": "https://wpnews.pro/news/show-hn-sparq-pulse-self-hosted-github-native-project-management", "markdown": "https://wpnews.pro/news/show-hn-sparq-pulse-self-hosted-github-native-project-management.md", "text": "https://wpnews.pro/news/show-hn-sparq-pulse-self-hosted-github-native-project-management.txt", "jsonld": "https://wpnews.pro/news/show-hn-sparq-pulse-self-hosted-github-native-project-management.jsonld"}}