27d
HomeProjectsContact
Resume

About

Creative developer passionate about building beautiful, functional web experiences that delight users.

Latest Work

šŸ”” GitHub Release Notification APIšŸ” Registration Request System šŸ’€ Deadsign

Ā© 2026 Serhii Dankovych. All rights reserved.

Made with šŸ’š

šŸ”” GitHub Release Notification API

šŸ”” GitHub Release Notification API

Overview

A service that allows users to subscribe to email notifications when new releases are published to GitHub repositories.
GitHub Release Notification API Banner)

GitHub Release Notification API

A service that allows users to subscribe to email notifications when new releases are published to GitHub repositories.

How It Works

  1. The user submits their email and a GitHub repository (owner/repo)
  2. The service verifies that the repository exists on GitHub
  3. A confirmation email is sent with a unique link
  4. Once confirmed, the user receives an email whenever a new release is detected
  5. Every email contains an unsubscribe link

Endpoints

POST /api/subscribe
Subscribe an email to release notifications for a given GitHub repository (format: owner/repo)

GET /api/confirm/{token}
Confirm email subscription

GET /api/unsubscribe/{token}
Unsubscribe from release notifications

GET /api/subscriptions?email={email}
Get all active subscriptions for a given email

Swagger API docs: http://localhost:3003/docs/

Deployment

App

API URL: https://notifier.deadsign-api.xyz

Web App URL: https://release-notifier-app.vercel.app

[!NOTE]
This service is currently running on a self-hosted Ubuntu server. If the service is temporarily unavailable, it may be due to local power outages.

Database

tracked_repos

Stores each GitHub repository that has at least one subscriber.

subscriptions

Stores one record per email and repository pair.

Showcasing the Workflow

1. Initiate Subscription

Subscription Request

2. Confirmation Email

Verification Email

3. Confirming the Subscription

Confirmation UI

4. New Release Notifications

New Release

5. View Subscriptions

View Subscriptions

Unit Tests

Unit Tests

Tech Stack

ViteTypescriptAPIDockerExpress

Links

Live DemoSource Code
ColumnTypeDescription
idserial PKAuto-incremented ID
owner_repovarchar(255)Unique repository identifier in owner/repo format
last_seen_tagvarchar(255)Last release tag detected by the scanner
created_attimestampRow creation time
ColumnTypeDescription
idserial PKAuto-incremented ID
emailvarchar(255)Subscriber email (stored in lowercase)
repo_idinteger FK → tracked_repos.idReference to the subscribed repository
confirm_tokenvarchar(36)UUID used for email confirmation
unsubscribe_tokenvarchar(36)UUID included in each notification email
confirmed_attimestampSet when the user confirms the subscription (null if unconfirmed)
created_attimestampRow creation time