issuetracker

module
v0.0.0-...-c783a93 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2021 License: Apache-2.0

README

This project is no longer actively developed or maintained.

GitHub Issue Tracker

Github Issue Tracker is a web application hosted on Google Cloud Platform that provides consolidated email digests of issues on GitHub repositories. Users can subscribe to email notifications per repository. BigQuery has a dataset that contains GitHub events over time (githubarchive.org) which is updated hourly. This is used to provide consolidated email digests of GitHub Issues.

The frequency of email digests is configured by the User and stored in Cloud SQL. Based on a user's preferences, a consolidated daily/weekly/monthly email is sent out to the user that summarizes the latest activity on GitHub repositories. The tool is built using Go, running on app engine as different services.

The entire tool consists of 3 services on app engine: The frontend service that is responsible for the UI and dealing with operations such as authentication of users; The backend service handles operations such as monitoring the BigQuery dataset, updating Cloud SQL tables. The mailer service handles the daily, weekly and monthly cron jobs that trigger email notifications to be sent. It is also responsible for composing the content for email notifications and sending them out using the app engine Mail API.

The tool demonstrates integration of various App Engine features along with other Google Services such as BigQuery, Firebase, and Cloud SQL, and building an app using a Microservices Architecture.

Disclaimer

This is not an official Google product.

Quickstart

Installing dependencies:

See README_dep.md for notes regarding dependencies and configuration

Creating Test Tables in BigQuery:

Create a BigQuery Table for testing purposes using the following query:

SELECT * FROM [githubarchive.month.201707] WHERE type IN ('IssuesEvent','IssueCommentEvent)
Running Locally:

You can then run the app locally:

cd PROJECT_DIR
cd services
dev_appserver.py -A [ProjectID] mailer/app.yaml backend/app.yaml frontend/app.yaml  dispatch.yaml  --show_mail_body=yes

Visit localhost:8080 to view the application

Deploying to App Engine
gcloud app deploy mailer/app.yaml backend/app.yaml frontend/app.yaml mailer/queue.yaml mailer/cron.yaml dispatch.yaml

Products

Language

Directories

Path Synopsis
pkg
auth
Package auth implements helpers for securing routes Package auth implements helpers for securing routes
Package auth implements helpers for securing routes Package auth implements helpers for securing routes
backend
Package core implements the core backend service for the app
Package core implements the core backend service for the app
github
Package github provides definitions and methods for structs used for handling Github data from BigQuery and Cloud SQL.
Package github provides definitions and methods for structs used for handling Github data from BigQuery and Cloud SQL.
github/bq
Package bq provides definitions and methods for structs used for querying data from the a dataset on BigQuery
Package bq provides definitions and methods for structs used for querying data from the a dataset on BigQuery
github/db
Package db provides types and methods database operations.
Package db provides types and methods database operations.
internal/testutil
Package testutil provides helpers for configuring tests for the project
Package testutil provides helpers for configuring tests for the project
mailer
Package mailer implements the appengine services required for sending emails by using BigQuery and Cloud Datastore for processing data from the Github Dataset
Package mailer implements the appengine services required for sending emails by using BigQuery and Cloud Datastore for processing data from the Github Dataset
services
backend/webtest
package webtest provides helpers for testing routes
package webtest provides helpers for testing routes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL