• Stars
    star
    126
  • Rank 284,543 (Top 6 %)
  • Language
    JavaScript
  • Created over 14 years ago
  • Updated almost 13 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Github Repository Finder, now powered by GitHub API and Heroku

Github Finder

GithubFinder is a fast Github repository browser. The browser is inspired after Mac OSX Finder.
Github File Finder

To see the finder in action, go to http://sr3d.github.com/GithubFinder

Features

Github File Greasemonkey Button

  • Bookmarklet: If you don't have GreaseMonkey/Greasekit installed, you can drag the bookmarklet to your address bar. The bookmarklet will open a new GHFinder window of the currently viewed repository.
  • Switch between repos and branches with ease.
  • Keyboard navigation support with arrow keys.
  • Text files can be previewed inline with syntax highlighting (support Ruby, JavaScript, CSS, and HTML) with Textmate-like Twilight theme.
  • Files can be diff-ed directly between commits (diff is done by difflib).
  • 100% javascript with full cross-domain support. For functionalities that Github API, the app relies on a proxy running on Heroku (http://ghfinder-proxy.heroku.com) to get the data.
  • flexible framework to customize and extend the existing functionalities.
  • GitHub JS API wrapper (/javascripts/gh.js).

10K App

Github Finder is built as a contest entry into the 10K Apart contest (http://10k.aneventapart.com/).. I wanted to develop a real useful app instead of a mindless canvas drawing (which is cool, but not that useful), and I always wanted to browse Github repositories easier and faster.

Build

Since the app needs to be under 10,240 bytes, it needs special optimization to achieve this size. The unminifed, uncompressed JS is about 30+ KB, all compressed down to 8.5KB or so.

To build the app, run the provided ./build script to automatically bundle up everything into the ./app folder

For an IE9 build, run ./ie9build

App Bootstrap

The minified app is working as follow:

  • bootstrap.js loads code from png and eval
  • javascripts/app.js file is executed (this file is appended at the end of the files list)

Architecture

The code is somewhat modularized with a main class (F, defined in /javascripts/f.js) for the Finder itself. This class can be extended to add more functionalities through various plugins. Currently the plugins are

  • Diff: allowing user to diff 2 different files from Github.
  • Code Highlighter: currently supports Ruby, JavaScript, CSS, and HTML.
  • Keyboard navigation: user can use the arrow keys to navigate.
  • ResizablePanel: enable the panels to be resizeable.
  • GithubReadme: automatically grab the Readme files from github. Currently supported Markdown (.md, .markdown), Textile (.textile) readme files (Github only renders these files automatically)
  • Bookmarklet: lets user create a bookmark to quickly access GithubFinder
  • Greasemonk/Greasekit userscript: extend Github's interface with a button linking to Github Finder to allow quick access.

Combined with the build script, this architecture is flexible enough to enable or disable certain components to achieve the right size/features.

The Application also relies on JSONP to grab the data from Github. The provided proxy.php script can handle both normal Ajax Requests and JSONP requests. However, the proxy now is done by a small Sinatra app running on Heroku at http://ghfinder-proxy.heroku.com. The source for this app is at http://github.com/sr3d/http://github.com/sr3d/GHFinder-Proxy

Credits

Github Finder is possible by leveraging these tools:

About

  • My name is Alex Le. I'm an entrepreneur and I build web applications. I'm a single founder bootstrapping Marrily (http://marrily.com), an online wedding planner. Come check it out! My blog is at http://alexle.net

More Repositories

1

javascript-ebooks

[BOOKS][The most interesting JavaScript books]
56
star
2

titanium_activerecord

port of ActiveJS's ActiveRecord to support Appcelerator's Titanium
JavaScript
17
star
3

titanium_logger

Remote Logger for Titanium Mobile applications using Ruby's EventMachine
JavaScript
9
star
4

activejs-1584174

A fork of ActiveJS that supports Titanium
JavaScript
8
star
5

buttonizer

a cool HTML5/CSS3 button generator. Collaborative project with Mimim.co
JavaScript
6
star
6

JsDTD

Work in Progress - javascript desktop tower defense
JavaScript
4
star
7

iGithub

A simple github client for iPhone using Appcelerator
3
star
8

wordpressio

3
star
9

d.school

Hasso Plattner Institute of Design at Stanford University (d.school) WordPress Theme
PHP
2
star
10

TomorrowIt

Simple to-do list app with Don't Break The Chain feature
JavaScript
2
star
11

ruby-debug1.9

unacked gem for ruby 1.9.3
C
2
star
12

storification

Demo JavaScript client for Storify using jQueryMobile
JavaScript
2
star
13

selenium-test

Ruby
2
star
14

zuckjs

http://zuckjs.com
Ruby
1
star
15

MangaWatch

Tracking Manga and export as PDF to Kindle DX
1
star
16

acts_as_metadata

Allow custom attributes on models. This is pre-dated Rails 3.2 attributes stuff.
Ruby
1
star
17

heart

Wordnik Hearts, with Parallax
Ruby
1
star
18

iMotional

Objective-C
1
star
19

ds

ds
JavaScript
1
star
20

Kindle-Mobi-Convert

Automatically Download Novel from VNThuQuan.net and convert to Mobi file for Amazon Kindle
Ruby
1
star
21

dschool_iphone

1
star
22

sr3d.github.com

Alex Le
CSS
1
star
23

effectcheck_wp

EffectCheck Plugin for WordPress to check the sentiments of the current post.
PHP
1
star
24

FluffyFriends

OhNoDoom stuff
JavaScript
1
star
25

Marrily-Affiliate

Affiliate Site for Marrily
1
star
26

PayPal-IPN-Forwarder

A simple proxy to forward any PayPal IPN data from PayPal to any URL.
1
star
27

Google-CodeJam-2009

My solution to the 2009 Goolge Code Jam
Ruby
1
star
28

text3d

1
star
29

rails_wizard

The gem and recipe collection for RailsWizard
Ruby
1
star
30

wordnik_plus

1
star
31

status-net-mirror

Mirror of http://www.gitorious.org/statusnet-client/statusnet-client. I mirror this repo so I can use GithubFinder :)
JavaScript
1
star
32

Prototype-Highcharts-Adapter

An Adapter to utilize the Highcharts javascript plotting library with the Prototype framework
JavaScript
1
star