Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

notifier: Slack DM channel (depends on deeper Slack integration)

Open
#95 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
typescript
Domain
api, backend

Research direction

Start with apps/api/src/notify/index.ts and issue #82 to understand the existing notifier contract and email flow. Read specs/api/saml.md and specs/behaviors/help-wanted-roles.md before choosing the Slack credential and delivery behavior. Done means Slack DM delivery, handle resolution, fallback or combined delivery, SLACK_BOT_TOKEN configuration, and matching failure logging are implemented.

Written by the indexing model from the issue text.

Description

Follow-up from #82

#82 wires up a real notifier for help-wanted-role events (interest expressed, role filled). The agreed-on first-cut shape is email-only via Resend — covered in that issue.

This issue tracks the Slack DM channel, deliberately deferred until we tackle deeper Slack integration.

Why deferred

The Notifier interface in apps/api/src/notify/index.ts already accepts maintainerSlackHandle per notification, so the data flow is ready. What's missing is the credential trust — sending a DM from a workspace bot requires either:

  1. A workspace-installed Slack app with chat:write scope + a bot token (the easiest path).
  2. SAML IdP-side identity assertions extended to support delegated Slack actions (much heavier).

We're already the SAML IdP for codeforphilly.slack.com (specs/api/saml.md), but that's an inbound SAML flow (user signs into Slack via us). Sending DMs out to Slack is the inverse — we'd be initiating a workspace action on a member's behalf. Cleaner to do that via a dedicated Slack app with its own token.

Scope (when picked up)

  • Add a SlackDmNotifier implementation alongside EmailNotifier.
  • A new env var (SLACK_BOT_TOKEN) — sealed-secret in the cluster repo.
  • Map Slack handles → user IDs via users.lookupByEmail (or users.list cached) since handles can change. Skip if the handle doesn't resolve.
  • Compound notifier: try Slack DM first, fall back to email if Slack delivery fails or the recipient has no Slack handle. (Or run both — pick when implementing.)
  • Failure logging at the same envelope as today's notifier.

Related

Dominant language
TypeScript
Stars
1
Forks
1
Avg merge
1d 20h
Merged PRs (30d)
25

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from CodeForPhilly/codeforphilly-ng

All issues in CodeForPhilly/codeforphilly-ng

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.