diff --git a/db/migrations/0082__camelCase_options.sql b/db/migrations/0082__camelCase_options.sql
new file mode 100644
index 000000000..9dd45d6a1
--- /dev/null
+++ b/db/migrations/0082__camelCase_options.sql
@@ -0,0 +1,14 @@
+UPDATE "options" SET "name" = 'passwordVerificationHash' WHERE "name" = 'password_verification_hash';
+UPDATE "options" SET "name" = 'dbVersion' WHERE "name" = 'db_version';
+UPDATE "options" SET "name" = 'passwordDerivedKeySalt' WHERE "name" = 'password_derived_key_salt';
+UPDATE "options" SET "name" = 'documentId' WHERE "name" = 'document_id';
+UPDATE "options" SET "name" = 'lastSyncedPull' WHERE "name" = 'last_synced_pull';
+UPDATE "options" SET "name" = 'startNotePath' WHERE "name" = 'start_note_path';
+UPDATE "options" SET "name" = 'lastSyncedPush' WHERE "name" = 'last_synced_push';
+UPDATE "options" SET "name" = 'documentSecret' WHERE "name" = 'document_secret';
+UPDATE "options" SET "name" = 'lastBackupDate' WHERE "name" = 'last_backup_date';
+UPDATE "options" SET "name" = 'noteRevisionSnapshotTimeInterval' WHERE "name" = 'note_revision_snapshot_time_interval';
+UPDATE "options" SET "name" = 'protectedSessionTimeout' WHERE "name" = 'protected_session_timeout';
+UPDATE "options" SET "name" = 'encryptedDataKey' WHERE "name" = 'encrypted_data_key';
+UPDATE "options" SET "name" = 'encryptedDataKeyIv' WHERE "name" = 'encrypted_data_key_iv';
+UPDATE "options" SET "name" = 'passwordVerificationSalt' WHERE "name" = 'password_verification_salt';
diff --git a/src/public/javascripts/dialogs/options.js b/src/public/javascripts/dialogs/options.js
index 6a04432fd..01a925518 100644
--- a/src/public/javascripts/dialogs/options.js
+++ b/src/public/javascripts/dialogs/options.js
@@ -93,7 +93,7 @@ addTabHandler((function() {
 addTabHandler((function() {
     const $form = $("#protected-session-timeout-form");
     const $protectedSessionTimeout = $("#protected-session-timeout-in-seconds");
-    const optionName = 'protected_session_timeout';
+    const optionName = 'protectedSessionTimeout';
 
     function optionsLoaded(options) {
         $protectedSessionTimeout.val(options[optionName]);
@@ -117,7 +117,7 @@ addTabHandler((function() {
 addTabHandler((function () {
     const $form = $("#note-revision-snapshot-time-interval-form");
     const $timeInterval = $("#note-revision-snapshot-time-interval-in-seconds");
-    const optionName = 'note_revision_snapshot_time_interval';
+    const optionName = 'noteRevisionSnapshotTimeInterval';
 
     function optionsLoaded(options) {
         $timeInterval.val(options[optionName]);
@@ -143,7 +143,7 @@ addTabHandler((async function () {
     const appInfo = await server.get('app-info');
 
     $appVersion.html(appInfo.app_version);
-    $dbVersion.html(appInfo.db_version);
+    $dbVersion.html(appInfo.dbVersion);
     $buildDate.html(appInfo.build_date);
     $buildRevision.html(appInfo.build_revision);
     $buildRevision.attr('href', 'https://github.com/zadam/trilium/commit/' + appInfo.build_revision);
diff --git a/src/public/javascripts/migration.js b/src/public/javascripts/migration.js
index 522427ec9..30240650c 100644
--- a/src/public/javascripts/migration.js
+++ b/src/public/javascripts/migration.js
@@ -2,8 +2,8 @@ import server from './services/server.js';
 
 $(document).ready(() => {
     server.get('migration').then(result => {
-        const appDbVersion = result.app_db_version;
-        const dbVersion = result.db_version;
+        const appDbVersion = result.app_dbVersion;
+        const dbVersion = result.dbVersion;
 
         if (appDbVersion === dbVersion) {
             $("#up-to-date").show();
@@ -26,7 +26,7 @@ $("#run-migration").click(async () => {
 
     for (const migration of result.migrations) {
         const row = $('
')
-            .append($('| ').html(migration.db_version))
+            .append($(' | ').html(migration.dbVersion))
             .append($(' | ').html(migration.name))
             .append($(' | ').html(migration.success ? 'Yes' : 'No'))
             .append($(' | ').html(migration.success ? 'N/A' : migration.error));
diff --git a/src/public/javascripts/services/protected_session_holder.js b/src/public/javascripts/services/protected_session_holder.js
index 4e743d69b..b1d402e20 100644
--- a/src/public/javascripts/services/protected_session_holder.js
+++ b/src/public/javascripts/services/protected_session_holder.js
@@ -6,7 +6,7 @@ let protectedSessionTimeout = null;
 let protectedSessionId = null;
 
 $(document).ready(() => {
-    server.get('options').then(options => protectedSessionTimeout = options.protected_session_timeout);
+    server.get('options').then(options => protectedSessionTimeout = options.protectedSessionTimeout);
 });
 
 setInterval(() => {
diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js
index 545b600bb..751a8d3fb 100644
--- a/src/public/javascripts/services/tree.js
+++ b/src/public/javascripts/services/tree.js
@@ -369,7 +369,7 @@ function getNotePathFromAddress() {
 
 async function loadTree() {
     const resp = await server.get('tree');
-    startNotePath = resp.start_note_path;
+    startNotePath = resp.startNotePath;
 
     if (document.location.hash) {
         startNotePath = getNotePathFromAddress();
diff --git a/src/routes/api/login.js b/src/routes/api/login.js
index e976be95f..9e0277f52 100644
--- a/src/routes/api/login.js
+++ b/src/routes/api/login.js
@@ -21,11 +21,11 @@ async function loginSync(req) {
 
     const dbVersion = req.body.dbVersion;
 
-    if (dbVersion !== appInfo.db_version) {
-        return [400, { message: 'Non-matching db versions, local is version ' + appInfo.db_version }];
+    if (dbVersion !== appInfo.dbVersion) {
+        return [400, { message: 'Non-matching db versions, local is version ' + appInfo.dbVersion }];
     }
 
-    const documentSecret = await options.getOption('document_secret');
+    const documentSecret = await options.getOption('documentSecret');
     const expectedHash = utils.hmac(documentSecret, timestampStr);
 
     const givenHash = req.body.hash;
diff --git a/src/routes/api/migration.js b/src/routes/api/migration.js
index a6c6b6403..74f7ab012 100644
--- a/src/routes/api/migration.js
+++ b/src/routes/api/migration.js
@@ -6,8 +6,8 @@ const appInfo = require('../../services/app_info');
 
 async function getMigrationInfo() {
     return {
-        db_version: parseInt(await optionService.getOption('db_version')),
-        app_db_version: appInfo.db_version
+        dbVersion: parseInt(await optionService.getOption('dbVersion')),
+        app_dbVersion: appInfo.dbVersion
     };
 }
 
diff --git a/src/routes/api/options.js b/src/routes/api/options.js
index 2e3fefe93..4ce2da70a 100644
--- a/src/routes/api/options.js
+++ b/src/routes/api/options.js
@@ -4,7 +4,7 @@ const sql = require('../../services/sql');
 const optionService = require('../../services/options');
 
 // options allowed to be updated directly in options dialog
-const ALLOWED_OPTIONS = ['protected_session_timeout', 'note_revision_snapshot_time_interval'];
+const ALLOWED_OPTIONS = ['protectedSessionTimeout', 'noteRevisionSnapshotTimeInterval'];
 
 async function getOptions() {
     const options = await sql.getMap("SELECT name, value FROM options WHERE name IN ("
diff --git a/src/routes/api/recent_notes.js b/src/routes/api/recent_notes.js
index 38b6f1a20..7700724c9 100644
--- a/src/routes/api/recent_notes.js
+++ b/src/routes/api/recent_notes.js
@@ -33,7 +33,7 @@ async function addRecentNote(req) {
 
     await recentNote.save();
 
-    await optionService.setOption('start_note_path', notePath);
+    await optionService.setOption('startNotePath', notePath);
 
     return await getRecentNotes();
 }
diff --git a/src/routes/api/setup.js b/src/routes/api/setup.js
index 644cd42dd..8794c3095 100644
--- a/src/routes/api/setup.js
+++ b/src/routes/api/setup.js
@@ -11,11 +11,11 @@ async function setup(req) {
 
     await optionService.setOption('username', username);
 
-    await optionService.setOption('password_verification_salt', utils.randomSecureToken(32));
-    await optionService.setOption('password_derived_key_salt', utils.randomSecureToken(32));
+    await optionService.setOption('passwordVerificationSalt', utils.randomSecureToken(32));
+    await optionService.setOption('passwordDerivedKeySalt', utils.randomSecureToken(32));
 
     const passwordVerificationKey = utils.toBase64(await myScryptService.getVerificationHash(password));
-    await optionService.setOption('password_verification_hash', passwordVerificationKey);
+    await optionService.setOption('passwordVerificationHash', passwordVerificationKey);
 
     await passwordEncryptionService.setDataKey(password, utils.randomSecureToken(16));
 
diff --git a/src/routes/api/sync.js b/src/routes/api/sync.js
index 10728ec9a..e4b0212e4 100644
--- a/src/routes/api/sync.js
+++ b/src/routes/api/sync.js
@@ -26,8 +26,8 @@ async function fillSyncRows() {
 }
 
 async function forceFullSync() {
-    await optionService.setOption('last_synced_pull', 0);
-    await optionService.setOption('last_synced_push', 0);
+    await optionService.setOption('lastSyncedPull', 0);
+    await optionService.setOption('lastSyncedPush', 0);
 
     log.info("Forcing full sync.");
 
diff --git a/src/routes/api/tree.js b/src/routes/api/tree.js
index dfd90b691..9276582a1 100644
--- a/src/routes/api/tree.js
+++ b/src/routes/api/tree.js
@@ -51,7 +51,7 @@ async function getTree() {
     });
 
     return {
-        start_note_path: await optionService.getOption('start_note_path'),
+        startNotePath: await optionService.getOption('startNotePath'),
         branches: branches,
         notes: notes
     };
diff --git a/src/routes/login.js b/src/routes/login.js
index 27425c68b..3066fa8b9 100644
--- a/src/routes/login.js
+++ b/src/routes/login.js
@@ -33,7 +33,7 @@ async function login(req, res) {
 }
 
 async function verifyPassword(guessedPassword) {
-    const hashed_password = utils.fromBase64(await optionService.getOption('password_verification_hash'));
+    const hashed_password = utils.fromBase64(await optionService.getOption('passwordVerificationHash'));
 
     const guess_hashed = await myScryptService.getVerificationHash(guessedPassword);
 
diff --git a/src/services/anonymization.js b/src/services/anonymization.js
index 76a9abae4..aafb8f0f8 100644
--- a/src/services/anonymization.js
+++ b/src/services/anonymization.js
@@ -20,8 +20,8 @@ async function anonymize() {
     await db.run("UPDATE note_revisions SET title = 'title', content = 'text'");
     await db.run("UPDATE branches SET prefix = 'prefix' WHERE prefix IS NOT NULL");
     await db.run(`UPDATE options SET value = 'anonymized' WHERE name IN 
-                    ('document_secret', 'encrypted_data_key', 'password_verification_hash', 
-                     'password_verification_salt', 'password_derived_key_salt')`);
+                    ('documentSecret', 'encryptedDataKey', 'passwordVerificationHash', 
+                     'passwordVerificationSalt', 'passwordDerivedKeySalt')`);
     await db.run("VACUUM");
 
     await db.close();
diff --git a/src/services/app_info.js b/src/services/app_info.js
index 582ec9724..f3a6d3ea5 100644
--- a/src/services/app_info.js
+++ b/src/services/app_info.js
@@ -7,7 +7,7 @@ const APP_DB_VERSION = 81;
 
 module.exports = {
     app_version: packageJson.version,
-    db_version: APP_DB_VERSION,
+    dbVersion: APP_DB_VERSION,
     build_date: build.build_date,
     build_revision: build.build_revision
 };
\ No newline at end of file
diff --git a/src/services/backup.js b/src/services/backup.js
index 687020ff3..865f9ad6b 100644
--- a/src/services/backup.js
+++ b/src/services/backup.js
@@ -11,7 +11,7 @@ const cls = require('./cls');
 
 async function regularBackup() {
     const now = new Date();
-    const lastBackupDate = dateUtils.parseDateTime(await optionService.getOption('last_backup_date'));
+    const lastBackupDate = dateUtils.parseDateTime(await optionService.getOption('lastBackupDate'));
 
     console.log(lastBackupDate);
 
@@ -32,7 +32,7 @@ async function backupNow() {
 
         log.info("Created backup at " + backupFile);
 
-        await optionService.setOption('last_backup_date', dateUtils.nowDate());
+        await optionService.setOption('lastBackupDate', dateUtils.nowDate());
     });
 }
 
diff --git a/src/services/change_password.js b/src/services/change_password.js
index 9aa4c6950..d50b86176 100644
--- a/src/services/change_password.js
+++ b/src/services/change_password.js
@@ -20,7 +20,7 @@ async function changePassword(currentPassword, newPassword) {
     await sql.doInTransaction(async () => {
         await passwordEncryptionService.setDataKey(newPassword, decryptedDataKey);
 
-        await optionService.setOption('password_verification_hash', newPasswordVerificationKey);
+        await optionService.setOption('passwordVerificationHash', newPasswordVerificationKey);
     });
 
     return {
diff --git a/src/services/messaging.js b/src/services/messaging.js
index 8e5e8168b..839440f28 100644
--- a/src/services/messaging.js
+++ b/src/services/messaging.js
@@ -66,7 +66,7 @@ async function sendMessageToAllClients(message) {
 async function sendPing(client, lastSentSyncId) {
     const syncData = await sql.getRows("SELECT * FROM sync WHERE id > ?", [lastSentSyncId]);
 
-    const lastSyncedPush = await optionService.getOption('last_synced_push');
+    const lastSyncedPush = await optionService.getOption('lastSyncedPush');
 
     const changesToPushCount = await sql.getValue("SELECT COUNT(*) FROM sync WHERE id > ?", [lastSyncedPush]);
 
diff --git a/src/services/migration.js b/src/services/migration.js
index e02c84d9e..7419bde80 100644
--- a/src/services/migration.js
+++ b/src/services/migration.js
@@ -12,7 +12,7 @@ async function migrate() {
     // backup before attempting migration
     await backupService.backupNow();
 
-    const currentDbVersion = parseInt(await optionService.getOption('db_version'));
+    const currentDbVersion = parseInt(await optionService.getOption('dbVersion'));
 
     fs.readdirSync(resourceDir.MIGRATIONS_DIR).forEach(file => {
         const match = file.match(/([0-9]{4})__([a-zA-Z0-9_ ]+)\.(sql|js)/);
@@ -63,7 +63,7 @@ async function migrate() {
                     throw new Error("Unknown migration type " + mig.type);
                 }
 
-                await optionService.setOption("db_version", mig.dbVersion);
+                await optionService.setOption("dbVersion", mig.dbVersion);
 
             });
 
diff --git a/src/services/my_scrypt.js b/src/services/my_scrypt.js
index 44f311259..ed724bb22 100644
--- a/src/services/my_scrypt.js
+++ b/src/services/my_scrypt.js
@@ -4,13 +4,13 @@ const optionService = require('./options');
 const scrypt = require('scrypt');
 
 async function getVerificationHash(password) {
-    const salt = await optionService.getOption('password_verification_salt');
+    const salt = await optionService.getOption('passwordVerificationSalt');
 
     return getScryptHash(password, salt);
 }
 
 async function getPasswordDerivedKey(password) {
-    const salt = await optionService.getOption('password_derived_key_salt');
+    const salt = await optionService.getOption('passwordDerivedKeySalt');
 
     return getScryptHash(password, salt);
 }
diff --git a/src/services/notes.js b/src/services/notes.js
index e6b7d3758..b8e274f82 100644
--- a/src/services/notes.js
+++ b/src/services/notes.js
@@ -165,7 +165,7 @@ async function saveNoteRevision(note) {
     const labelsMap = await note.getLabelMap();
 
     const now = new Date();
-    const noteRevisionSnapshotTimeInterval = parseInt(await optionService.getOption('note_revision_snapshot_time_interval'));
+    const noteRevisionSnapshotTimeInterval = parseInt(await optionService.getOption('noteRevisionSnapshotTimeInterval'));
 
     const revisionCutoff = dateUtils.dateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000));
 
diff --git a/src/services/options.js b/src/services/options.js
index 5f41d579d..cc20c5a99 100644
--- a/src/services/options.js
+++ b/src/services/options.js
@@ -47,24 +47,24 @@ async function createOption(name, value, isSynced) {
 }
 
 async function initOptions(startNotePath) {
-    await createOption('document_id', utils.randomSecureToken(16), false);
-    await createOption('document_secret', utils.randomSecureToken(16), false);
+    await createOption('documentId', utils.randomSecureToken(16), false);
+    await createOption('documentSecret', utils.randomSecureToken(16), false);
 
     await createOption('username', '', true);
-    await createOption('password_verification_hash', '', true);
-    await createOption('password_verification_salt', '', true);
-    await createOption('password_derived_key_salt', '', true);
-    await createOption('encrypted_data_key', '', true);
-    await createOption('encrypted_data_key_iv', '', true);
+    await createOption('passwordVerificationHash', '', true);
+    await createOption('passwordVerificationSalt', '', true);
+    await createOption('passwordDerivedKeySalt', '', true);
+    await createOption('encryptedDataKey', '', true);
+    await createOption('encryptedDataKey_iv', '', true);
 
-    await createOption('start_note_path', startNotePath, false);
-    await createOption('protected_session_timeout', 600, true);
-    await createOption('note_revision_snapshot_time_interval', 600, true);
-    await createOption('last_backup_date', dateUtils.nowDate(), false);
-    await createOption('db_version', appInfo.db_version, false);
+    await createOption('startNotePath', startNotePath, false);
+    await createOption('protectedSessionTimeout', 600, true);
+    await createOption('noteRevisionSnapshotTimeInterval', 600, true);
+    await createOption('lastBackupDate', dateUtils.nowDate(), false);
+    await createOption('dbVersion', appInfo.dbVersion, false);
 
-    await createOption('last_synced_pull', appInfo.db_version, false);
-    await createOption('last_synced_push', 0, false);
+    await createOption('lastSyncedPull', appInfo.dbVersion, false);
+    await createOption('lastSyncedPush', 0, false);
 }
 
 module.exports = {
diff --git a/src/services/password_encryption.js b/src/services/password_encryption.js
index 2ebe8e326..6bc1831e7 100644
--- a/src/services/password_encryption.js
+++ b/src/services/password_encryption.js
@@ -6,7 +6,7 @@ const dataEncryptionService = require('./data_encryption');
 async function verifyPassword(password) {
     const givenPasswordHash = utils.toBase64(await myScryptService.getVerificationHash(password));
 
-    const dbPasswordHash = await optionService.getOption('password_verification_hash');
+    const dbPasswordHash = await optionService.getOption('passwordVerificationHash');
 
     return givenPasswordHash === dbPasswordHash;
 }
@@ -16,20 +16,20 @@ async function setDataKey(password, plainTextDataKey) {
 
     const encryptedDataKeyIv = utils.randomString(16);
 
-    await optionService.setOption('encrypted_data_key_iv', encryptedDataKeyIv);
+    await optionService.setOption('encryptedDataKeyIv', encryptedDataKeyIv);
 
     const buffer = Buffer.from(plainTextDataKey);
 
     const newEncryptedDataKey = dataEncryptionService.encrypt(passwordDerivedKey, encryptedDataKeyIv, buffer);
 
-    await optionService.setOption('encrypted_data_key', newEncryptedDataKey);
+    await optionService.setOption('encryptedDataKey', newEncryptedDataKey);
 }
 
 async function getDataKey(password) {
     const passwordDerivedKey = await myScryptService.getPasswordDerivedKey(password);
 
-    const encryptedDataKeyIv = await optionService.getOption('encrypted_data_key_iv');
-    const encryptedDataKey = await optionService.getOption('encrypted_data_key');
+    const encryptedDataKeyIv = await optionService.getOption('encryptedDataKeyIv');
+    const encryptedDataKey = await optionService.getOption('encryptedDataKey');
 
     const decryptedDataKey = dataEncryptionService.decrypt(passwordDerivedKey, encryptedDataKeyIv, encryptedDataKey);
 
diff --git a/src/services/sql_init.js b/src/services/sql_init.js
index 6f33abe46..9100b7041 100644
--- a/src/services/sql_init.js
+++ b/src/services/sql_init.js
@@ -76,12 +76,12 @@ function setDbReadyAsResolved() {
 }
 
 async function isDbUpToDate() {
-    const dbVersion = parseInt(await sql.getValue("SELECT value FROM options WHERE name = 'db_version'"));
+    const dbVersion = parseInt(await sql.getValue("SELECT value FROM options WHERE name = 'dbVersion'"));
 
-    const upToDate = dbVersion >= appInfo.db_version;
+    const upToDate = dbVersion >= appInfo.dbVersion;
 
     if (!upToDate) {
-        log.info("App db version is " + appInfo.db_version + ", while db version is " + dbVersion + ". Migration needed.");
+        log.info("App db version is " + appInfo.dbVersion + ", while db version is " + dbVersion + ". Migration needed.");
     }
 
     return upToDate;
diff --git a/src/services/sync.js b/src/services/sync.js
index 31921703c..fe1c0c445 100644
--- a/src/services/sync.js
+++ b/src/services/sync.js
@@ -71,14 +71,14 @@ async function sync() {
 async function login() {
     const timestamp = dateUtils.nowDate();
 
-    const documentSecret = await optionService.getOption('document_secret');
+    const documentSecret = await optionService.getOption('documentSecret');
     const hash = utils.hmac(documentSecret, timestamp);
 
     const syncContext = { cookieJar: rp.jar() };
 
     const resp = await syncRequest(syncContext, 'POST', '/api/login/sync', {
         timestamp: timestamp,
-        dbVersion: appInfo.db_version,
+        dbVersion: appInfo.dbVersion,
         hash: hash
     });
 
@@ -92,11 +92,11 @@ async function login() {
 }
 
 async function getLastSyncedPull() {
-    return parseInt(await optionService.getOption('last_synced_pull'));
+    return parseInt(await optionService.getOption('lastSyncedPull'));
 }
 
 async function setLastSyncedPull(syncId) {
-    await optionService.setOption('last_synced_pull', syncId);
+    await optionService.setOption('lastSyncedPull', syncId);
 }
 
 async function pullSync(syncContext) {
@@ -163,11 +163,11 @@ async function pullSync(syncContext) {
 }
 
 async function getLastSyncedPush() {
-    return parseInt(await optionService.getOption('last_synced_push'));
+    return parseInt(await optionService.getOption('lastSyncedPush'));
 }
 
 async function setLastSyncedPush(lastSyncedPush) {
-    await optionService.setOption('last_synced_push', lastSyncedPush);
+    await optionService.setOption('lastSyncedPush', lastSyncedPush);
 }
 
 async function pushSync(syncContext) {
diff --git a/src/services/sync_table.js b/src/services/sync_table.js
index eb6ef6d40..cf80522c8 100644
--- a/src/services/sync_table.js
+++ b/src/services/sync_table.js
@@ -56,7 +56,7 @@ async function addEntitySync(entityName, entityId, sourceId) {
     if (!syncSetup.isSyncSetup) {
         // this is because the "server" instances shouldn't have outstanding pushes
         // useful when you fork the DB for new "client" instance, it won't try to sync the whole DB
-        await sql.execute("UPDATE options SET value = (SELECT MAX(id) FROM sync) WHERE name IN('last_synced_push', 'last_synced_pull')");
+        await sql.execute("UPDATE options SET value = (SELECT MAX(id) FROM sync) WHERE name IN('lastSyncedPush', 'lastSyncedPull')");
     }
 } |