Gwiki

A Google Drive-based wiki platform

Hi! This is a demo of the tiny, feature-poor, not-really-finished wiki interface I built over Google Drive. Google's extremely strict security policies require me to put this intro page here to explain what this is and why I'm asking for the OAuth permissions I'm asking for, so here goes.

This website is a DEMO. It is not meant to be used full-time by you to be your wiki. This is because signing into Google and using the wiki actually gives me read access to all your google drive files, which is not what you should be doing. Granted, 100% of that access remains on your browser, but in principle, you shouldn't be giving anyone that level of access who's not making your life way better in some concrete way.

That said, for the demo to work, you have to give me access to your files, and I promise that this page never calls back to my server or any other server to initiate connections there. All Google Drive access happens between your browser and Google servers only. If you're interested, you can also read the privacy policy and terms of service that Google forced me to write in order to keep this app online.

If you're still interested in demoing the app, click here.

Self-Hosting

This app is designed to be self-hosted (specifically to avoid all the permissions mess mentioned above). To do so, follow these steps:

  1. Clone the repo to where you want it.
  2. Run `composer install` (yes, I've used Composer even though this is a Javascript project because I just like it better than NPM).
  3. Go to https://console.developers.google.com and create an OAuth client ID and an API key (use this for guidance if you need help).
  4. Make sure to add your hostname to the client ID and API Key whitelists.
  5. Finally, if you're using my default setup, you'll have to copy `src/config.local.js.template` to `src/config.local.js` and enter in your new credentials. If you're not using my default setup, look at `examples/app.html` to see how I initialized everything. It's kind of a complicated process because of the way I built the app (see readme for implementation details.)

With that, you should be able to get it up and running.

Tips and Tricks