diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,5 @@
+# Revision history for clang-compilation-database
+
+## 0.1.0.0  -- 2017-10-16
+
+* First version. Released on an unsuspecting world.
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2017 Aleksey Kliger
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+
+# Haskell library for working with Clang Compilation Database Format files
+
+This library implements a Haskell encoder and decoder for Clang's [JSON
+Compilation Database Format
+Specification](http://clang.llvm.org/docs/JSONCompilationDatabase.html) using
+[Aeson](http://hackage.haskell.org/package/aeson)
+
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/clang-compilation-database.cabal b/clang-compilation-database.cabal
new file mode 100644
--- /dev/null
+++ b/clang-compilation-database.cabal
@@ -0,0 +1,40 @@
+-- Initial aeson-compilation-database.cabal generated by cabal init.  For 
+-- further documentation, see http://haskell.org/cabal/users-guide/
+
+name:                clang-compilation-database
+version:             0.1.0.0
+synopsis:            JSON Compilation Database Format encoding and decoding
+description:         See README.md
+                     .
+                     This library provides a data type to represent a
+                     <http://clang.llvm.org/docs/JSONCompilationDatabase.html JSON Compilation Database Format file>
+                     .
+                     It may be useful for static analysis tools that need to know the exact commands executed
+                     by a build system such as make.
+homepage:            https://github.com/lambdageek/clang-compilation-database
+bug-reports:         https://github.com/lambdageek/clang-compilation-database/issues
+license:             MIT
+license-file:        LICENSE
+author:              Aleksey Kliger
+maintainer:          akliger at gmail dot com
+category:            Language
+build-type:          Simple
+extra-source-files:  ChangeLog.md README.md
+cabal-version:       >=1.10
+tested-with:         GHC == 7.10.*, GHC == 8.0.*, GHC == 8.2.*
+
+library
+  exposed-modules:     Clang.CompilationDatabase
+  -- other-modules:       
+  -- other-extensions:    
+  build-depends:       base >=4.8 && <4.11,
+                       bytestring >=0.10.6,
+                       aeson >=1.2.0.0,
+                       text >=1.2.0.2
+  hs-source-dirs:      src
+  default-language:    Haskell2010
+  ghc-options:         -Wall
+
+source-repository head
+  type:                git
+  location:            git://github.com/lambdageek/clang-compilation-database.git
diff --git a/src/Clang/CompilationDatabase.hs b/src/Clang/CompilationDatabase.hs
new file mode 100644
--- /dev/null
+++ b/src/Clang/CompilationDatabase.hs
@@ -0,0 +1,47 @@
+-- |
+-- Module : Clang.CompilationDatabase
+-- Description : JSON Compilation Database Format
+-- License : MIT
+-- Stability : experimental
+--
+-- Clang Compilation Database Format parser
+--
+-- The <http://clang.llvm.org/docs/JSONCompilationDatabase.html Clang Compilation Database Format> is a JSON
+-- file format for recording compiler invocations in build systems.
+--
+--
+{-# language DeriveGeneric #-}
+module Clang.CompilationDatabase where
+
+import GHC.Generics (Generic)
+import Data.Aeson (FromJSON, ToJSON{-, eitherDecode'-})
+-- import qualified Data.ByteString.Lazy as B
+import Data.Text (Text)
+
+-- | A Compilation database consists of a sequence of 'CommandObject' values each of which is a
+-- set of commands that acted upon a single source file.
+type CompilationDatabase = [CommandObject]
+
+-- | Each command object contains the translation unit’s main file, the working
+-- directory of the compile run and the actual compile command.
+data CommandObject = CommandObject {
+  directory :: Text, -- ^ The working directory during compilation
+  file :: Text, -- ^ The main translation unit processed by this compilation
+                -- step.  There may be multiple 'CommandObject' values in a
+                -- 'CompilationDatabase' for the same file if it was the main
+                -- file for multiple compilation steps.
+  command :: Maybe Text, -- ^ The command that was executed.  Double quotes and
+                         -- backslashes are escaped by a backslash.
+  arguments :: Maybe [Text], -- ^ The compile command executed as a list of
+                             -- strings.  Either 'command' or 'arguments' is
+                             -- required.  __TODO__ model this more faithfully.
+  output :: Maybe Text -- ^ Optional name of the output file created by this
+                       -- compilation step.
+  }
+  deriving (Generic, Show)
+
+instance FromJSON CommandObject
+instance ToJSON CommandObject
+
+-- test :: FilePath -> IO (Either String [CommandObject])
+-- test fp = fmap eitherDecode' (B.readFile fp)
