diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015 Tomas Tauber
+
+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/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/src/Travis.hs b/src/Travis.hs
new file mode 100644
--- /dev/null
+++ b/src/Travis.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-|
+Module      : Travis
+Description : A simple client implementation using Travis CI API.
+Copyright   : (c) Tomas Tauber, 2015
+License     : MIT
+Maintainer  : Tomas Tauber <tomtau@hku.hk>
+Stability   : experimental
+
+A simple client implementation using Travis CI API: <http://docs.travis-ci.com/api/>.
+-}
+module Travis where
+
+import           Data.Aeson           (decode)
+import           Network.HTTP.Conduit
+import           Travis.Types         (BuildRaw (..), BuildsRaw (..),
+                                       RepoRaw (..), RepositoryRaw (..))
+
+type AccountName = String
+
+type RepositoryName = String
+
+-- |Travis CI base API URL
+travisAPIBaseURL = "https://api.travis-ci.org/repos/" :: String
+-- |Travis CI API v2 headers
+requestH = [("Accept", "application/vnd.travis-ci.2+json"),
+            ("User-Agent", "HaskellHTTPConduit/2.1.8")]
+
+-- |fetches information about public repository on Travis CI
+-- may return a tuple of repository and its builds information
+fetchRepository :: AccountName -> RepositoryName -> IO (Maybe RepositoryRaw, Maybe [BuildRaw])
+fetchRepository acname reponame = do
+  -- repository info
+  let coreUrl = travisAPIBaseURL ++ acname ++ "/" ++ reponame
+  req1 <- parseUrl coreUrl
+  let request1 = req1 { requestHeaders = requestH}
+  manager <- newManager conduitManagerSettings
+  _response1 <- httpLbs request1 manager
+  let repository = decode (responseBody _response1) :: Maybe RepoRaw
+  -- build info
+  let buildsUrl = coreUrl ++ "/builds"
+  req2 <- parseUrl buildsUrl
+  let request2 = req2 { requestHeaders = requestH}
+  _response2 <- httpLbs request2 manager
+  let repobuilds = decode (responseBody _response2) :: Maybe BuildsRaw
+  return (fmap repo repository, fmap builds repobuilds)
diff --git a/src/Travis/Types.hs b/src/Travis/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Travis/Types.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric     #-}
+{-# LANGUAGE OverloadedStrings #-}
+module Travis.Types where
+
+import           Data.Aeson       (FromJSON (..), ToJSON (..), Value (..),
+                                   withObject, (.:))
+import           Data.Aeson.Types (Object (..), Parser (..), defaultOptions,
+                                   fieldLabelModifier, genericParseJSON,
+                                   genericToJSON)
+import           GHC.Generics     (Generic)
+
+-- |Data types representing: <http://docs.travis-ci.com/api/?http#repositories>
+-- TODO: more precise parsing / types
+data RepoRaw =
+  RepoRaw { repo :: RepositoryRaw
+    } deriving (Show, Generic)
+
+data RepositoryRaw =
+  RepositoryRaw {  id                     :: Int
+                 , slug                   :: String
+                 , active                 :: Bool
+                 , description            :: String
+                 , last_build_id          :: Int
+                 , last_build_number      :: String
+                 , last_build_state       :: String
+                 , last_build_duration    :: Int
+                 , last_build_started_at  :: String
+                 , last_build_finished_at :: String
+                 , github_language        :: String
+           } deriving (Show, Generic)
+
+instance FromJSON RepositoryRaw
+instance ToJSON RepositoryRaw
+
+instance FromJSON RepoRaw
+instance ToJSON RepoRaw
+
+-- |Data types representing: <http://docs.travis-ci.com/api/?http#builds>
+-- TODO: more precise parsing / types
+data BuildsRaw =
+  BuildsRaw { builds  :: [BuildRaw]
+            , jobs    :: Maybe [Object]
+            , commits :: [Object]
+   } deriving (Show, Generic)
+
+data BuildRaw =
+  BuildRaw { _commit_id           :: Int
+           , _config              :: Object
+           , _duration            :: Int
+           , _finished_at         :: String
+           , _id                  :: Int
+           , _job_ids             :: [Int]
+           , _number              :: String
+           , _pull_request        :: Bool
+           , _pull_request_number :: Maybe Int
+           , _pull_request_title  :: Maybe String
+           , _repository_id       :: Int
+           , _started_at          :: String
+           , _state               :: String
+           } deriving (Show, Generic)
+
+instance FromJSON BuildsRaw
+instance ToJSON BuildsRaw
+
+instance FromJSON BuildRaw where
+  parseJSON = genericParseJSON defaultOptions {
+                fieldLabelModifier = drop 1 }
+
+instance ToJSON BuildRaw where
+  toJSON = genericToJSON defaultOptions {
+             fieldLabelModifier = drop 1 }
diff --git a/travis.cabal b/travis.cabal
new file mode 100644
--- /dev/null
+++ b/travis.cabal
@@ -0,0 +1,22 @@
+name:                travis
+version:             0.1.0.0
+synopsis:            A simple client implementation using Travis CI API.
+description:         A simple client implementation using Travis CI API.
+homepage:            http://github.com/tomtau/travis#readme
+license:             MIT
+license-file:        LICENSE
+author:              Tomas Tauber
+maintainer:          tomtau@hku.hk
+category:            Web
+build-type:          Simple
+cabal-version:       >=1.10
+
+Library
+  hs-source-dirs:      src
+  exposed-modules:     Travis, Travis.Types
+  default-language:    Haskell2010
+  build-depends:       aeson,
+                       base >= 4.7 && < 5,
+                       bytestring,
+                       http-conduit,
+                       transformers
