diff --git a/_states/rundeck_project.py b/_states/rundeck_project.py
new file mode 100644
index 0000000..2e877a6
--- /dev/null
+++ b/_states/rundeck_project.py
@@ -0,0 +1,58 @@
+import logging
+
+LOG = logging.getLogger(__name__)
+
+
+def present(name, description=''):
+    ret = {
+        'name': name,
+        'changes': {},
+        'result': False,
+        'comment': '',
+        'pchanges': {},
+    }
+    if __opts__['test'] == True:
+        ret['comment'] = 'Nothing to change in the test mode.'
+        ret['result'] = None
+        return ret
+    params = {
+        "description": description,
+    }
+    project = __salt__['rundeck.get_project'](name)
+    if project:
+        config = __salt__['rundeck.create_project_config'](
+            name, params, config=project["config"])
+        if project["config"] != config:
+            LOG.warning("{}: {}".format(project["config"], config))
+            __salt__['rundeck.update_project_config'](name, project, config)
+            ret['comment'] = "Project {} was updated.".format(name)
+            ret['changes'][name] = "UPDATED"
+        else:
+            ret['comment'] = "Project {} is already up to date.".format(name)
+    else:
+        __salt__['rundeck.create_project'](name, params)
+        ret['comment'] = "Project {} was created.".format(name)
+        ret['changes'][name] = "CREATED"
+    ret['result'] = True
+    return ret
+
+
+def absent(name):
+    ret = {
+        'name': name,
+        'changes': {},
+        'result': False,
+        'comment': '',
+        'pchanges': {},
+    }
+    if __opts__['test'] == True:
+        ret['comment'] = 'Nothing to remove in the test mode.'
+        ret['result'] = None
+        return ret
+    project = __salt__['rundeck.get_project'](name)
+    if project:
+        __salt__['rundeck.delete_project'](name)
+        ret['changes'][name] = 'DELETED'
+        ret['comment'] = "Project {} was removed.".format(name)
+    ret['result'] = True
+    return ret
