Skip to content

Planned Architecture

Chinmay Pendharkar edited this page Sep 27, 2015 · 16 revisions

Planned Archiecture

Providers (Plugins)

Repo Provider

RepoProvider

RepoProvider.init(require(../config.json));

RepoProvider.update(cb);

// returns an Array of type Repo;
RepoProvider.list();

Repo Object

function Repo () {
 return {
  'url': URL,
  'name': String,
  'description':String,
  'updated_at': Date,
  'pushed_at': Date,
  'stars', Number,
  'language', String,
  'owner': {
     'uid': String,
     'avatar_url': URL,
     'profile_url': URL
  }
  'is_valid': function(){
    // last_updated 
    // All fields exists and are of correct type
    // Strings cannot be empty
    return Boolean;
  }
 }
}

Event Provider

EventProvider

EventProvider.init(config);

EventProvider.update(cb);

// returns an Array of type Event;
EventProvider.list();

Event Object

function Event() {

 return {
  'id':String,
  'name':String,
  'description': String,
  'location': String,
  'url': URL,
  'group_name': String,
  'group_url' : URL,
  'start_time': Date,
  'end_time' : Date
  'duplicate_events': [Event, Event, ...],
  'formatted_time': function(){
     return String;
  },
  'is_valid': function(){
    // end_time > start_time
    // All fields exists and are of correct type
    // Strings cannot be empty
    return Boolean;
  },
  'provider': String
  
 }

}

Endpoints

Web - yeoman

  • '/public'
  • '/humans.txt'
  • '/robots.txt'
  • '/sitemap.xml'
  • '/'

OAuth - yeoman

  • '/admin'
  • '/callback'

Calendar - yeoman

  • '/cal'

Redirect - yeoman

  • '/check'

API

Repos - yeoman

  • '/api/v1/repos'
  • '/api/v1/repos/:language'

Events - yeoman

  • '/api/v1/events'
  • '/api/v1/check/:checkdate'

Updates - yeoman

  • '/api/v1/repos/update'
  • '/api/v1/events/update'
  • '/api/v1/archives/update' - webuildsg

Live API - webuildsg

  • '/api/v1/podcasts'