Gistnote is a Gist client app based on HTML5 and JavaScript.
It is deployed on GitHub Pages: https://gistnote.github.io
The client app sends requests directly to GitHub API using CORS, except OAuth 2 authorization request because the client secret should not be exposed.
- Client app
- GitHub Pages (Jekyll)
- HTML5 based Web Application
- CoffeeScript
- Vue.js
- Page.js
- Marked.js
- Highlight.js
- jQuery timeago
- Bootswatch
- Server app
- Google App Engine (JavaVM)
- Groovy 2.3
OAuth 2 authorization request is processed on the server side app. OAuth token is only stored in the local storage of the browser.
- User clicks the login button.
- Client app redirects to GitHub OAuth.
- GitHub OAuth processes the authorization request and redirects back to the client app with the authorization code.
- Client app exchanges the authorization code and token via the server app.
- Client app sends the authorization code to the server app.
- Server app sends the authorization code with the client secret to GitHub OAuth.
- GitHub OAuth responses the token.
- Client app stores the token in the local storage of the browser.
- Client app redirects to the top page.
CoffeeScript is compiled by Jekyll on GitHub Pages.
All dependencies of the client app is fetched by bower and packed into /public/lib.js
by gulp.
Install node dependencies and invoke gulp to build as follow:
npm install
npm install -g gulp
gulp
This is an open source software licensed under the Apache License Version 2.0. Send me an issue or pull request.