Skip to content
Stephen Franceschelli edited this page May 25, 2017 · 12 revisions

Architecture

Architecture for new tooling with web UI - see issue #9

Backend

NB: Database names are up for discussion.

  1. Database to mirror all Github (GH) issues changes:

    • For now, lets call DbIssues.
    • New data is pulled via GitHub API every ~10 mins -- see #142 for details
    • Database backend captures each issue timeline: Azure tables (the schema is pretty trivial with 1-2 indexes)
    • Feature: Import/onboard new repo (i.e. download all info about the repo)
  2. Database to store user preferences (queries settings, etc.):

    • For now, lets call DbUserPreferences
    • Optional: If you change your query or add a new one, you should get the option to generate its notifications for a time period.
  3. Database exposes generalised notifications (e.g REST API) - push notifications.

    • For now, lets call DbNotifications
    • Optional/Future: Expose the notifications as a service for existing solutions like https://octobox.io (similar to GitHub APIs)

Microservices / API's

NB: Names of APIs are up for discussion.

  1. PullFromGithub: Octokit.Net Implementation that pulls down new Issues into DbIssues.

  2. PullToOurDb: Issues from DbIssues pushed into DbNotifications, filtered (if any) by queries stored in DbUserPreferences.

  3. PushToOurDb: API that handles updating DbNotifcations (i.e. marking as READ).

Front end

  1. Create web UI which has simple email / http://octobox.io look & feel:
    • Functions required:
      • Delete notification
      • Mark notification/issue as follow up
      • Unsubscribe from query-notifications (in cases you didn't subscribe on GitHub explicitly) - similar to 'ignore thread' in email client
    • Enable simple per-repo customisation:
      • List of queries to watch/get notifications for (default query is entire repo)
      • Per-query options:
        • Notification for every new issue in the query -- note: Today even external folks want this, they work around it today by channelling notifications to Twitter, e.g. @corefxissues and @dotnetissues
        • Notification for every gone issue in the query
        • Notification for every comment on any issue in the query
        • Notification for milestone change for any issue in the query
        • Notification for label change for any issue in the query *Per-notification choice to be via email or only in web UI (or both) -- ideally should be configurable per query & notification kind combo

Architecture Diagrams

  1. Work in Progress: Overall Architecture Diagram (as from 19.5.2017):

Alt text


Alt text

Clone this wiki locally