diff --git a/Makefile b/Makefile
new file mode 100644
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,2 @@
+all:
+	ghc main.hs -o slidbeta
diff --git a/README b/README
new file mode 100644
--- /dev/null
+++ b/README
@@ -0,0 +1,1 @@
+WS qui fait du markdown -> revealjs
diff --git a/main.hs b/main.hs
new file mode 100644
--- /dev/null
+++ b/main.hs
@@ -0,0 +1,14 @@
+import Text.Pandoc
+
+writerOption :: WriterOptions
+writerOption = def { writerHtml5  = True,
+                     writerSlideVariant=RevealJsSlides }
+
+myPandoc :: Pandoc
+myPandoc = readMarkdown def  "# slide 1\nJe suis un slide !"
+
+main :: IO()
+main = do
+  putStrLn httpl
+  where
+    httpl = writeHtmlString writerOption myPandoc  
diff --git a/site_key.txt b/site_key.txt
new file mode 100644
--- /dev/null
+++ b/site_key.txt
@@ -0,0 +1,1 @@
+;TÜ±h?` 1S½}ÝÂ}ã7²mæÌ&@ïèËÓJ¥óþI Ï5*ÿm¨Flän0¹EÉÏÿ/yÇ~¾£%U2¤Sqä¸d¹Õ]R,
diff --git a/slideme.cabal b/slideme.cabal
new file mode 100644
--- /dev/null
+++ b/slideme.cabal
@@ -0,0 +1,32 @@
+Name:                slidemews
+Version:             0.2
+Synopsis:            ws convert markdown to reveal-js
+Description:         Simple WebService to convert markdown to reveal-js
+License:             AllRightsReserved
+Author:              Jean-Alexandre Peyroux
+Maintainer:          m@j4.pe
+Stability:           Experimental
+Category:            Web
+Build-type:          Simple
+Cabal-version:       >=1.2
+
+Executable slidemews
+  hs-source-dirs: src
+  main-is: Main.hs
+
+  Build-depends:
+    base                      >= 4     && < 5,
+    bytestring                >= 0.9.1 && < 0.11,
+    MonadCatchIO-transformers >= 0.2.1 && < 0.4,
+    mtl                       >= 2     && < 3,
+    snap-core                 >= 0.9   && < 0.11,
+    snap-server               >= 0.9   && < 0.11,
+    aeson		      >= 0.7,
+    pandoc		      >= 1.12,
+    utf8-string		      >= 0.3
+
+  if impl(ghc >= 6.12.0)
+    ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields -O2
+                 -fno-warn-unused-do-bind
+  else
+    ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields -O2
diff --git a/slidemews.cabal b/slidemews.cabal
new file mode 100644
--- /dev/null
+++ b/slidemews.cabal
@@ -0,0 +1,32 @@
+Name:                slidemews
+Version:             0.2
+Synopsis:            ws convert markdown to reveal-js
+Description:         Simple WebService to convert markdown to reveal-js
+License:             GPL
+Author:              Jean-Alexandre Peyroux
+Maintainer:          m@j4.pe
+Stability:           Experimental
+Category:            Web
+Build-type:          Simple
+Cabal-version:       >=1.2
+
+Executable slidemews
+  hs-source-dirs: src
+  main-is: Main.hs
+
+  Build-depends:
+    base                      >= 4     && < 5,
+    bytestring                >= 0.9.1 && < 0.11,
+    MonadCatchIO-transformers >= 0.2.1 && < 0.4,
+    mtl                       >= 2     && < 3,
+    snap-core                 >= 0.9   && < 0.11,
+    snap-server               >= 0.9   && < 0.11,
+    aeson		      >= 0.7,
+    pandoc		      >= 1.12,
+    utf8-string		      >= 0.3
+
+  if impl(ghc >= 6.12.0)
+    ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields 
+                 -fno-warn-unused-do-bind
+  else
+    ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields 
diff --git a/src/.emacs.desktop b/src/.emacs.desktop
new file mode 100644
--- /dev/null
+++ b/src/.emacs.desktop
@@ -0,0 +1,62 @@
+;; -*- mode: emacs-lisp; coding: emacs-mule; -*-
+;; --------------------------------------------------------------------------
+;; Desktop File for Emacs
+;; --------------------------------------------------------------------------
+;; Created Tue Jan 28 23:11:06 2014
+;; Desktop file format version 206
+;; Emacs version 24.3.1
+
+;; Global section:
+(setq desktop-missing-file-warning nil)
+(setq tags-file-name nil)
+(setq tags-table-list nil)
+(setq search-ring nil)
+(setq regexp-search-ring nil)
+(setq register-alist nil)
+(setq file-name-history '("~/codaz/slideme/src/" "/home/ja/codaz/slideme/test.html" "/home/ja/codaz/slideme/src/Main.hs" "/home/ja/codaz/slideme/slideme.cabal" "/home/ja/codaz/slideme/main.hs" "~/codaz/slideme/src/Main.hs" "/home/ja/codaz/slideme/slideme.cabal" "/home/ja/codaz/slideme/src/Main.hs" "/home/ja/codaz/slideme/src/Site.hs" "/home/ja/codaz/slideme/src/Application.hs" "/home/ja/codaz/slideme/src/Site.hs" "/home/ja/codaz/slideme/src/Application.hs"))
+
+;; Buffer section -- buffers listed in same order as in buffer list:
+(desktop-create-buffer 206
+  "/home/ja/codaz/slideme/src/Main.hs"
+  "Main.hs"
+  'haskell-mode
+  '(auto-complete-mode undo-tree-mode)
+  53
+  '(978 nil)
+  nil
+  nil
+  '((tab-width . 8) (indent-tabs-mode) (buffer-file-coding-system . undecided-unix)))
+
+(desktop-create-buffer 206
+  "/home/ja/codaz/slideme/test.html"
+  "test.html"
+  'html-mode
+  '(undo-tree-mode)
+  116
+  '(58 nil)
+  nil
+  nil
+  '((buffer-file-coding-system . utf-8-unix)))
+
+(desktop-create-buffer 206
+  "/home/ja/codaz/slideme/slideme.cabal"
+  "slideme.cabal"
+  'haskell-cabal-mode
+  '(undo-tree-mode)
+  968
+  '(802 nil)
+  nil
+  nil
+  '((buffer-file-coding-system . undecided-unix)))
+
+(desktop-create-buffer 206
+  "/home/ja/codaz/slideme/main.hs"
+  "main.hs"
+  'haskell-mode
+  '(auto-complete-mode undo-tree-mode)
+  279
+  '(292 nil)
+  nil
+  nil
+  '((tab-width . 8) (indent-tabs-mode) (buffer-file-coding-system . undecided-unix)))
+
diff --git a/src/Main.hs b/src/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/Main.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Main where
+
+import           Control.Applicative
+import           Snap.Core
+import           Snap.Util.FileServe
+import           Snap.Http.Server
+import           Data.Aeson
+import           Text.Pandoc
+
+import qualified Codec.Binary.UTF8.String as W8
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Char8 as C8
+
+main :: IO ()
+main = quickHttpServe site
+
+data SMResult = SMResult {
+    msg :: String
+} deriving Show
+
+instance ToJSON SMResult where
+     toJSON (SMResult msg) = object ["msg" .= msg]
+
+instance FromJSON SMResult where
+    parseJSON (Object v) = SMResult <$>
+                            v .: "msg"
+     -- A non-Object value is of the wrong type, so fail.
+
+writerOption :: WriterOptions
+writerOption = def { writerHtml5  = True,
+                     writerSlideVariant=RevealJsSlides }
+
+myPandoc :: String -> Pandoc
+myPandoc mkd = readMarkdown def mkd
+
+mkd2html :: C8.ByteString -> String
+mkd2html mkd = writeHtmlString writerOption (myPandoc mkd')
+    where mkd' = W8.decode $ BS.unpack mkd
+
+site :: Snap ()
+site =
+    ifTop (writeBS "/slideme") <|>
+    route [ ("help", writeBS "me")
+          , ("slideme/", method POST slideMe)
+          , ("slideme/:mkd", slideMe)
+          ] <|>
+    dir "static" (serveDirectory ".")
+
+slideMe :: Snap ()
+slideMe = do
+    param <- getParam "mkd"
+    case param of
+        Just p -> writeBS $ BS.concat $ BL.toChunks $ Data.Aeson.encode $ SMResult (mkd2html p)
+        Nothing -> writeBS "{'msg':'error'}"
diff --git a/test.html b/test.html
new file mode 100644
--- /dev/null
+++ b/test.html
@@ -0,0 +1,11 @@
+<html>
+<head></head>
+<body>
+
+<form METHOD="POST" ACTION="http://127.0.0.1:8000/slideme/">
+<textarea name="mkd" width="20" height="20">
+</textarea>
+<input type="submit" value="ok">
+</form>
+</body>
+</html>
