Skip to content

Technical Design

giosce edited this page Nov 15, 2020 · 10 revisions

This page lists the CTI web pages and their interaction with the back-end (API, Database, Github).

As of 11/11/2020 this is a copy/paste from Issue 118

Database Diagram And Description


Tag Generator


Interaction with Github:
A good part of the information that we want to display in CTI and that we want to save via CTI is stored in Github (GH). Most of the "Project" datapoints are in GT, for example its name, creation time, update time, description, watch count, star county, open issues, good first issues. Tags are also saved and retrieved to and from GH.
GH has API to retrieve and save most of this data in a repository.
To save data in GH the user needs to authenticate and be a repository contributor.
To retrieve data from GH there is no need to authenticate...?
Unauthenticated clients can make 60 requests per hour, to get more a user needs to authenticate. The API seems to have a limit of 5,000 per our.

api.github.com/repos/civictechindex/CTI-website-frontend gives us stargazers_count, watchers_count, open_issues_count

api.github.com/orgs/hackforla gives me how many repos hackforla has

With proper header (Accept: application/vnd.github.mercy-preview+json) api.github.com/repos/giosce/hello-world/topics gives me the repository topics

https://developer.github.com/v3/search/
The Search API has a custom rate limit. For requests using Basic Authentication, OAuth, or client ID and secret, you can make up to 30 requests per minute (1,800 per hour). For unauthenticated requests, the rate limit allows you to make up to 10 requests per minute.


Landing Page

Main Feature: email sign up
Req: ability to people to submit email address to be capture in a table using an API

Home Page

MVP:

no back-end required

POST-MVP:

Main Feature: presenting trending topics about Wizard and Search (#62)
Req: About Search, save words used by people on the DB by using the API and rank them to be presented

About Page

no back-end required

Radical Collaboration / FAQ Page

Main Feature: it has a search API which is being written presenting the Q&A, and FAQ DB (WIP as well) and a Form where people can go to put new questions and it will be

In additional it has an API capturing and recording the number of clicks on each question that will be an input for the order to presenting them

Directory Page

Main Feature: we want to capture/track people activity around the page, like:

  • what users search for
  • what users click on/select
  • what searches did not resolve on any results

Questions if it is frontend feature, how does the search work ? what is Google Analytics role here?

Organizations Page

Is it the same of Organizations?
Invoke organizations API?

Search Page

Main Features: When somebody type a search we need to record it and count the words used to use that in the trending topics calculation/presentation

if they click refine result we are going to track it as well, like:

how they search what features of the refining they use more Questions how we going to track it? heat map ?

Gio: isn't this "Search Projects"? Should we search for something more (Organizations at least)? Does it search in GH?

Donate Page

no back-end required - strange, it would need to go somewhere, doesn't it?

Support Us Page

no back-end required - which page is this?

Social Media Page

Main features: - this is not a page, isn't just a set of icons/link in the footer?
no back-end required

Contains share buttons for different social networks

if you are coming from the wizard (tag generator?) page, it is going to remember what repository you are coming from, in order to help sharing, in order to answer to question like : how many people using the wizard the use the sharing page?

Question: privacy polities on place / to define?

TAG Generator Wizard Page

Trigger first part: click find project and you get a valid result, it is going populate the screen and then it is time to start recording by using a API call saving:

Name of you organization URL project the existent/current topic tags Trigger second part: once user decide to add more tags, and click the button Add these topic tags to the repo , we are going to record the new tags in the database using an API call

To Do #1: we need to define a process for tags' removal