diff --git a/server/achievements/EarnedAchievement.coffee b/server/achievements/EarnedAchievement.coffee
index 685a502c6..088a919b3 100644
--- a/server/achievements/EarnedAchievement.coffee
+++ b/server/achievements/EarnedAchievement.coffee
@@ -20,4 +20,10 @@ EarnedAchievementSchema.pre 'save', (next) ->
 EarnedAchievementSchema.index({user: 1, achievement: 1}, {unique: true, name: 'earned achievement index'})
 EarnedAchievementSchema.index({user: 1, changed: -1}, {name: 'latest '})
 
+EarnedAchievementSchema.static 'recalculate', (callback) ->
+  callback('pass')
+
 module.exports = EarnedAchievement = mongoose.model('EarnedAchievement', EarnedAchievementSchema)
+
+
+
diff --git a/server/achievements/earned_achievement_handler.coffee b/server/achievements/earned_achievement_handler.coffee
index ebab1e45d..8869f5c6d 100644
--- a/server/achievements/earned_achievement_handler.coffee
+++ b/server/achievements/earned_achievement_handler.coffee
@@ -1,3 +1,4 @@
+log = require 'winston'
 mongoose = require('mongoose')
 EarnedAchievement = require './EarnedAchievement'
 Handler = require '../commons/Handler'
@@ -9,4 +10,7 @@ class EarnedAchievementHandler extends Handler
   hasAccess: (req) ->
     req.method is 'GET'
 
+  recalculate: (req, res) ->
+    EarnedAchievement.recalculate (data) => @sendSuccess(res, data)
+
 module.exports = new EarnedAchievementHandler()
diff --git a/server/commons/mapping.coffee b/server/commons/mapping.coffee
index 98efbad6a..4b859632c 100644
--- a/server/commons/mapping.coffee
+++ b/server/commons/mapping.coffee
@@ -14,6 +14,7 @@ module.exports.handlers =
 
 module.exports.routes =
   [
+    'routes/admin'
     'routes/auth'
     'routes/contact'
     'routes/db'
diff --git a/server/routes/admin.coffee b/server/routes/admin.coffee
new file mode 100644
index 000000000..012f0d865
--- /dev/null
+++ b/server/routes/admin.coffee
@@ -0,0 +1,24 @@
+log = require 'winston'
+errors = require '../commons/errors'
+handlers = require('../commons/mapping').handlers
+
+module.exports.setup = (app) ->
+  app.all '/admin/*', (req, res) ->
+    res.setHeader('Content-Type', 'application/json')
+
+    module = req.path[7..]
+    parts = module.split('/')
+    module = parts[0]
+
+    return errors.unauthorized(res, 'Must be admin to access this area.') unless req.user?.isAdmin()
+
+    try
+      moduleName = module.replace '.', '_'
+      name = handlers[moduleName]
+      handler = require('../' + name)
+
+      return handler[parts[1]](req, res, parts[2..]...) if parts[1] of handler
+
+    catch error
+      log.error("Error trying db method '#{req.route.method}' route '#{parts}' from #{name}: #{error}")
+      errors.notFound(res, "Route #{req.path} not found.")