diff --git a/src/database/config.ts b/src/database/config.ts
new file mode 100644
index 0000000..2787592
--- /dev/null
+++ b/src/database/config.ts
@@ -0,0 +1,48 @@
+/*
+ * server component for the TimeLimit App
+ * Copyright (C) 2019 Jonas Lochmann
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import * as Sequelize from 'sequelize'
+import { SequelizeAttributes } from './types'
+
+export interface ConfigAttributes {
+ id: string
+ value: string | null
+}
+
+export type ConfigInstance = Sequelize.Instance & ConfigAttributes
+export type ConfigModel = Sequelize.Model
+
+export const attributes: SequelizeAttributes = {
+ id: {
+ type: Sequelize.STRING,
+ allowNull: false,
+ validate: {
+ notEmpty: true
+ },
+ primaryKey: true
+ },
+ value: {
+ type: Sequelize.STRING,
+ allowNull: false
+ }
+}
+
+export const createConfigModel = (sequelize: Sequelize.Sequelize): ConfigModel => sequelize.define('Config', attributes)
+
+export const configItemIds = {
+ statusMessage: 'status_message'
+}
diff --git a/src/database/migration/migrations/20190624-add-config-table.ts b/src/database/migration/migrations/20190624-add-config-table.ts
new file mode 100644
index 0000000..2593132
--- /dev/null
+++ b/src/database/migration/migrations/20190624-add-config-table.ts
@@ -0,0 +1,35 @@
+/*
+ * server component for the TimeLimit App
+ * Copyright (C) 2019 Jonas Lochmann
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+import { QueryInterface, Sequelize } from 'sequelize'
+import { attributes as configAttributes } from '../../config'
+
+export async function up (queryInterface: QueryInterface, sequelize: Sequelize) {
+ await sequelize.transaction({
+ type: 'EXCLUSIVE'
+ }, async (transaction) => {
+ await queryInterface.createTable('Configs', configAttributes, { transaction })
+ })
+}
+
+export async function down (queryInterface: QueryInterface, sequelize: Sequelize) {
+ await sequelize.transaction({
+ type: 'EXCLUSIVE'
+ }, async (transaction) => {
+ await queryInterface.dropTable('Configs', { transaction })
+ })
+}