Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Picture uploading for the rest of us

branch: master

Test encoding

latest commit 40e3792a5e
Jérémie Laval authored
Octocat-spinner-32 Content Unwrap posting js
Octocat-spinner-32 Effects Restore metadata when we are applying transformation too
Octocat-spinner-32 AccessLogger.cs Update logger for latest manos
Octocat-spinner-32 Apachai.cs Test encoding
Octocat-spinner-32 BackingStore.cs Correctly set the stale entry in the backing store
Octocat-spinner-32 ConfigManager.cs Allow configuration of Redis stuff
Octocat-spinner-32 ContextExtensions.cs Force UTF8 serving of raw content
Octocat-spinner-32 Hasher.cs Fix short link generation and display short url + permalink in a dedi…
Octocat-spinner-32 HtmlPaths.cs Stats powered
Octocat-spinner-32 Json.cs First workish drop
Octocat-spinner-32 JsonStringDictionary.cs Escape json values in dictionary
Octocat-spinner-32 Makefile
Octocat-spinner-32 OAuth.cs Tell from which step the OAuth error came from
Octocat-spinner-32 PictureContentModule.cs Update to Manos master
Octocat-spinner-32 Increase README char count
Octocat-spinner-32 ServiceStack.Redis.dll Switch to use ServiceStack higher-level library for Redis
Octocat-spinner-32 StaticContentModule.cs Update to Manos master
Octocat-spinner-32 TagLibMetadata.cs Restore metadata when we are applying transformation too
Octocat-spinner-32 Twitter.cs Style fixing and cleanification
Octocat-spinner-32 UrlShortener.cs Remove shortener occurence
Octocat-spinner-32 authenticating.html.tpl Update HTML
Octocat-spinner-32 Add automatic html generation script
Octocat-spinner-32 config.json.template Adding some configuration love
Octocat-spinner-32 home.html.tpl Add alt to existing image
Octocat-spinner-32 post.html.tpl Add automatic html generation script
Octocat-spinner-32 redis-sharp.cs Use redis as a cache backend, use a more specific class for generatin…
Octocat-spinner-32 sign.html.tpl Typo
Octocat-spinner-32 stats.html.tpl Put a little "Last updated" field in stats


Picture uploading for the rest of us

Apachaï is designed to be a small and lightweight photo and picture sharing application (for services like Twitter) built on the Manos framework. A running instance is available at


It depends on a Redis server available and on ServiceStack .NET binding to it (included).

Apachaï also leverages code from TweetStation and Pinta but it's not needed to have any of them installed.

Of course, you need Manos installed if you want to launch the application (no need for another webserver though).

How to run

To run Apachaï you need to adjust a few things. First, rename config.json.template to config.json and adjust the settings there. Following is a small description for each of them:

  • serverBaseUrl: that's the URL of the host you deploying unto (example:
  • twitterKey and twitterSecret: get one over at
  • twitterCallback: theorically it should be set to something like serverBaseUrl/AuthCallback but who knows.
  • testInstance: a boolean, if true the application will work standalone and will never do a single call to Twitter. Useful for debugging purpose.
  • imagesDirectory: a path (relative or absolute) to a folder where your want the picture sent to be stored. Defaults to the 'Pictures' value (you have to create the folder in the root directory yourself though).
  • redisServers: an IP or host array of string where we can join Redis server instances, by default we simply use

Then just in case, walk a bit in the javascript code under Content/js as I may have hardcoded some stuff to (promise, I try to avoid this but sometimes I'm lazy). A grep should do the trick.

Finally just hit manos -s in the root folder and you are all set.


All code, markup and others are released under the permissive MIT license.

Copyright (c) Jérémie "garuma" Laval

Something went wrong with that request. Please try again.