Add create user rest endpoint
diff --git a/core/kg/app/app.go b/core/kg/app/app.go
index 0c65fc8..0d8b312 100644
--- a/core/kg/app/app.go
+++ b/core/kg/app/app.go
@@ -1,19 +1,22 @@
 package app
 
 import (
+	"github.com/giolekva/pcloud/core/kg/model"
 	"github.com/giolekva/pcloud/core/kg/store"
 )
 
 // App represents an application layer of the kg
 type App struct {
 	store  store.Store
+	config *model.Config
 	logger logger
 }
 
 // NewApp creates new app
-func NewApp(store store.Store, logger logger) *App {
+func NewApp(store store.Store, config *model.Config, logger logger) *App {
 	return &App{
 		store:  store,
+		config: config,
 		logger: logger,
 	}
 }
diff --git a/core/kg/app/user.go b/core/kg/app/user.go
index 07ff301..dd25e84 100644
--- a/core/kg/app/user.go
+++ b/core/kg/app/user.go
@@ -1,6 +1,7 @@
 package app
 
 import (
+	"github.com/giolekva/pcloud/core/kg/log"
 	"github.com/giolekva/pcloud/core/kg/model"
 	"github.com/pkg/errors"
 )
@@ -13,3 +14,24 @@
 	}
 	return user, nil
 }
+
+func (a *App) CreateUser(user *model.User) (*model.User, error) {
+	if !a.isFirstUserAccount() {
+		return nil, errors.New("not a first user")
+	}
+
+	user.HashPassword()
+	updatedUser, err := a.store.User().Save(user)
+	if err != nil {
+		return nil, errors.Wrap(err, "can't save user to the DB")
+	}
+	return updatedUser, nil
+}
+
+func (a *App) isFirstUserAccount() bool {
+	count, err := a.store.User().Count()
+	if err != nil {
+		a.logger.Error("error fetching first user account", log.Err(err))
+	}
+	return count > 0
+}