diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.3.2.0
+
+Added `haskellSchema` shortcut
+
 ## 0.3.1.0
 
 Add `Semigroup` instances to prepare for GHC 8.4 and Stackage nightly
diff --git a/Database/Beam/Migrate/Simple.hs b/Database/Beam/Migrate/Simple.hs
--- a/Database/Beam/Migrate/Simple.hs
+++ b/Database/Beam/Migrate/Simple.hs
@@ -16,6 +16,8 @@
   , defaultUpToDateHooks
   , bringUpToDate, bringUpToDateWithHooks
 
+  , haskellSchema
+
   , module Database.Beam.Migrate.Actions
   , module Database.Beam.Migrate.Types ) where
 
@@ -27,6 +29,7 @@
 import           Database.Beam.Migrate.Types
 import           Database.Beam.Migrate.Actions
 import           Database.Beam.Migrate.Log
+import           Database.Beam.Haskell.Syntax
 
 import           Control.Monad.Cont
 import           Control.Monad.Writer
@@ -273,3 +276,37 @@
                        -> String
 backendMigrationScript render mig =
   migrateScript ((++"\n") . T.unpack) ((++"\n") . render) (migrationStep "Migration Script" (\() -> mig))
+
+-- | Given a 'BeamMigrationBackend', get a string representing a Haskell module
+-- that would be a good starting point for further development.
+--
+-- For example, for a postgres database named @chinook@
+--
+-- > import Database.Beam.Migrate.Simple
+-- > import Database.Beam.Postgres (runBeamPostgres)
+-- > import Database.Beam.Postgres.Migrate (migrationBackend)
+-- > import Database.PostgreSQL.Simple
+-- >
+-- > getSchema :: IO String
+-- > getSchema = do pg <- connectPostgreSQL
+-- >                runBeamPostgres pg (haskellSchema migrationBackend)
+--
+-- Backends that have a migration backend typically export it under the module
+-- name @Database.Beam./Backend/.Migrate@.
+haskellSchema :: MonadBeam cmd be hdl m
+              => BeamMigrationBackend cmd be handle m
+              -> m String
+haskellSchema BeamMigrationBackend { backendGetDbConstraints = getCs
+                                   , backendConvertToHaskell = HaskellPredicateConverter conv2Hs } = do
+  constraints <- getCs
+  let hsConstraints = [ hsConstraint | c <- constraints, Just hsConstraint <- [ conv2Hs c ] ]
+
+      solver = heuristicSolver (defaultActionProvider @HsAction) [] hsConstraints
+
+  case finalSolution solver of
+    Solved cmds   ->
+      let hsModule = hsActionsToModule "NewBeamSchema" (map migrationCommand cmds)
+      in case renderHsSchema hsModule of
+           Left err -> fail ("Error writing Haskell schema: " ++ err)
+           Right modStr -> pure modStr
+    Candidates {} -> fail "Could not form Haskell schema"
diff --git a/beam-migrate.cabal b/beam-migrate.cabal
--- a/beam-migrate.cabal
+++ b/beam-migrate.cabal
@@ -1,5 +1,5 @@
 name:                beam-migrate
-version:             0.3.1.0
+version:             0.3.2.0
 synopsis:            SQL DDL support and migrations support library for Beam
 description:         This package provides type classes to allow backends to implement
                      SQL DDL support for beam. This allows you to use beam syntax to
@@ -62,7 +62,7 @@
   build-depends:       base                 >=4.9     && <5.0,
                        beam-core            >=0.7     && <0.8,
                        text                 >=1.2     && <1.3,
-                       aeson                >=0.11    && <1.3,
+                       aeson                >=0.11    && <1.4,
                        bytestring           >=0.10    && <0.11,
                        free                 >=4.12    && <5.1,
                        time                 >=1.6     && <1.10,
