diff --git a/app/src/App.svelte b/app/src/App.svelte
index 33b9041f7270577008cdecea73942aee4d0fea5a..a0db631ed758637d6bf85d22010eb9ccd1a130ce 100755
--- a/app/src/App.svelte
+++ b/app/src/App.svelte
@@ -7,6 +7,7 @@ import { ScreenLock } from "./screenlock.js";
 import { ConfigManager, defaultConfig } from './configmanager.js';
 import { Task } from './taskmanager.js';
 import { Subject } from './subjects.js';
+import { ServerAPI } from './network.js';
 
 import Dialog from "./Dialog.svelte";
 
@@ -17,8 +18,9 @@ const screenlock = new ScreenLock();
 const conf = new ConfigManager();
 const taskmgr = new Task();
 const subj = new Subject();
+const net = new ServerAPI();
 
-window.subj = subj;
+window.net = net;
 
 let subjectAdded = false;
 
@@ -40,22 +42,25 @@ let timedLockSwitchIsDisabled = false;
 let settings = {};
 
 async function setup() {
-	try {
-		let lang = await conf.readConfig().misc.lang
+	// Aparentemente la mera presencia del try-catch causa el error
+	/*try {
+		let lang = JSON.parse(await conf.readConfig()).misc.lang;
 	} catch (e) {
 		console.log(e);
 		await conf.writeConfig(defaultConfig);
-		let lang = await conf.readConfig().misc.lang
-	}
+		let lang = JSON.parse(await conf.readConfig()).misc.lang;
+	}*/
 	
-	currentLang = lang;
-	try {
+	//currentLang = lang;
+	currentLang = JSON.parse(await conf.readConfig()).misc.lang || "en";
+	return locales[currentLang] || locales["en"];
+	/*try {
 		console.log(locales[lang])
 		return locales[lang];
 	} catch (e) {
-		console.log(locales["en"])
+		//console.log(locales["en"])
 		return locales["en"];
-	}
+	}*/
 }
 /*
 async function getLangs() {
@@ -91,11 +96,13 @@ function saveSettings() {
 		<div class="hero-body">
 			<h1 is:fade>LibreHomework</h1>
 			<p>{dict.summary}</p>
-			<!--<p>¿Ponemos algo más aquí? Se siente vacío</p>-->
-			<!--<button class="btn" on:click={() => {
-				screenlock.Block();
-				screenlocked = screenlock.locked;
-			}}>{screenlocked ? dict.unlock_screen : dict.lock_screen}</button>-->
+			{#await net.getDailyMessage()}
+			<p class="loading has-text-link"></p>
+			{:then msg}
+				<p>{dict.daily_message}{#if !msg.error}<span>: {msg.data}</span>{/if}</p>
+			{:catch e}
+			<p>{dict.daily_message}</p>
+			{/await}
 		</div>
 	</div>
 	<svg id="visual" viewBox="0 0 580 95" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><path d="M0 90L11.5 90.7C23 91.3 46 92.7 69 92.3C92 92 115 90 138.2 88.2C161.3 86.3 184.7 84.7 207.8 88.7C231 92.7 254 102.3 277 105C300 107.7 323 103.3 346 102.2C369 101 392 103 415.2 103.7C438.3 104.3 461.7 103.7 484.8 102.8C508 102 531 101 554 102.8C577 104.7 600 109.3 623 106.3C646 103.3 669 92.7 692.2 89.8C715.3 87 738.7 92 761.8 95.7C785 99.3 808 101.7 831 102.3C854 103 877 102 888.5 101.5L900 101L900 0L888.5 0C877 0 854 0 831 0C808 0 785 0 761.8 0C738.7 0 715.3 0 692.2 0C669 0 646 0 623 0C600 0 577 0 554 0C531 0 508 0 484.8 0C461.7 0 438.3 0 415.2 0C392 0 369 0 346 0C323 0 300 0 277 0C254 0 231 0 207.8 0C184.7 0 161.3 0 138.2 0C115 0 92 0 69 0C46 0 23 0 11.5 0L0 0Z" fill="#303742"></path><path d="M0 74L11.5 72.8C23 71.7 46 69.3 69 68.7C92 68 115 69 138.2 74.2C161.3 79.3 184.7 88.7 207.8 89.8C231 91 254 84 277 80.5C300 77 323 77 346 75.3C369 73.7 392 70.3 415.2 70.5C438.3 70.7 461.7 74.3 484.8 74.2C508 74 531 70 554 70.2C577 70.3 600 74.7 623 74.5C646 74.3 669 69.7 692.2 67.7C715.3 65.7 738.7 66.3 761.8 67.5C785 68.7 808 70.3 831 74.8C854 79.3 877 86.7 888.5 90.3L900 94L900 0L888.5 0C877 0 854 0 831 0C808 0 785 0 761.8 0C738.7 0 715.3 0 692.2 0C669 0 646 0 623 0C600 0 577 0 554 0C531 0 508 0 484.8 0C461.7 0 438.3 0 415.2 0C392 0 369 0 346 0C323 0 300 0 277 0C254 0 231 0 207.8 0C184.7 0 161.3 0 138.2 0C115 0 92 0 69 0C46 0 23 0 11.5 0L0 0Z" fill="#284676"></path><path d="M0 69L11.5 67.2C23 65.3 46 61.7 69 57.5C92 53.3 115 48.7 138.2 48.2C161.3 47.7 184.7 51.3 207.8 55.7C231 60 254 65 277 64C300 63 323 56 346 55.7C369 55.3 392 61.7 415.2 64.2C438.3 66.7 461.7 65.3 484.8 63C508 60.7 531 57.3 554 54C577 50.7 600 47.3 623 48.5C646 49.7 669 55.3 692.2 59.7C715.3 64 738.7 67 761.8 67.5C785 68 808 66 831 62.2C854 58.3 877 52.7 888.5 49.8L900 47L900 0L888.5 0C877 0 854 0 831 0C808 0 785 0 761.8 0C738.7 0 715.3 0 692.2 0C669 0 646 0 623 0C600 0 577 0 554 0C531 0 508 0 484.8 0C461.7 0 438.3 0 415.2 0C392 0 369 0 346 0C323 0 300 0 277 0C254 0 231 0 207.8 0C184.7 0 161.3 0 138.2 0C115 0 92 0 69 0C46 0 23 0 11.5 0L0 0Z" fill="#2e51aa"></path><path d="M0 28L11.5 29.2C23 30.3 46 32.7 69 34.7C92 36.7 115 38.3 138.2 37.2C161.3 36 184.7 32 207.8 31.7C231 31.3 254 34.7 277 34.8C300 35 323 32 346 32.7C369 33.3 392 37.7 415.2 39.3C438.3 41 461.7 40 484.8 37.5C508 35 531 31 554 31.3C577 31.7 600 36.3 623 38.8C646 41.3 669 41.7 692.2 41.2C715.3 40.7 738.7 39.3 761.8 37.7C785 36 808 34 831 33.5C854 33 877 34 888.5 34.5L900 35L900 0L888.5 0C877 0 854 0 831 0C808 0 785 0 761.8 0C738.7 0 715.3 0 692.2 0C669 0 646 0 623 0C600 0 577 0 554 0C531 0 508 0 484.8 0C461.7 0 438.3 0 415.2 0C392 0 369 0 346 0C323 0 300 0 277 0C254 0 231 0 207.8 0C184.7 0 161.3 0 138.2 0C115 0 92 0 69 0C46 0 23 0 11.5 0L0 0Z" fill="#5755d9"></path></svg>
@@ -112,6 +119,9 @@ function saveSettings() {
 		<li class="tab-item { tab == 3 ? 'active' : ''}">
 			<a href="#network" on:click={() => { tab = 3 }}>{dict.network}</a>
 		</li>
+		<li class="tab-item { tab == 5 ? 'active' : ''}">
+			<a href="#exam" on:click={() => { tab = 5 }}>{dict.exam}</a>
+		</li>
 		<li class="tab-item { tab == 4 ? 'active' : ''}">
 			<a href="#settings" on:click={() => { tab = 4 }}>{dict.settings}</a>
 		</li>
@@ -348,7 +358,11 @@ function saveSettings() {
 	</div>
 	{:else if tab == 3}
 	<div class="empty bg-dark pt-3 pb-6" out:fade="{{ duration: 200 }}">
-		<p class="empty-title h4" in:slide="{{delay: 100}}">Coming soon...</p>
+		<p class="empty-title h4" in:slide="{{delay: 100}}">{dict.coming_soon}</p>
+	</div>
+	{:else if tab == 5}
+	<div class="empty bg-dark pt-3 pb-6" out:fade="{{ duration: 200 }}">
+		<p class="empty-title h4" in:slide="{{delay: 100}}">{dict.coming_soon}</p>
 	</div>
 	{:else if tab == 4}
 	<div class="empty bg-dark pt-3 pb-6" out:fade="{{ duration: 200 }}">
diff --git a/app/src/configmanager.js b/app/src/configmanager.js
index 509ce09707c106c6e2f774a961ca6146de391e3d..2b0a403322790f7a06c8e4145163b12b8d956d21 100644
--- a/app/src/configmanager.js
+++ b/app/src/configmanager.js
@@ -1,11 +1,10 @@
 import { invoke } from "@tauri-apps/api/tauri";
 
-let syslang = invoke("get_syslang").then(lang => {return lang});
-
-export const defaultConfig = {"misc": {"lang": syslang}, "colors": {"primary": "#3942ed", "secondary": "5056c7"}}
-
+export const defaultConfig = { "misc": { "lang": "en" }, "colors": { "primary": "#3942ed", "secondary": "5056c7" } }
 export class ConfigManager {
     async initDefaultConfig() {
+    	let dconf = defaultConfig;
+    	dconf.misc.lang = await invoke("get_syslang") || "en";    	
         return await invoke("write_config_file", {"contents": JSON.stringify(
             defaultConfig, null, 4)});
     }
diff --git a/app/src/locales.json b/app/src/locales.json
index d2161eba2d7d243d85610e8d4ec57693f0f12629..e762206a5a29f337573c770602978a9263585048 100644
--- a/app/src/locales.json
+++ b/app/src/locales.json
@@ -45,7 +45,10 @@
         "seconds": "Seconds",
         "about_timed_lock": "Enter the amount of hours, minutes and/or seconds you want the timed lock to last. All values are optional, and the default timeout is five seconds.",
         "network": "Network",
-        "network_error": "Network error"
+        "network_error": "Network error",
+        "coming_soon": "Coming soon...",
+        "exam": "Exams",
+        "daily_message": "Daily message"
     },
     "es": {
         "language": "Idioma",
@@ -93,7 +96,10 @@
         "seconds": "Segundos",
         "about_timed_lock": "Introduce la cantidad de horas, minutos y/o segundos que quieres que tarde el bloqueo de pantalla. Todos los valores son opcionales, y la espera por defecto son cinco segundos.",
         "network": "Red",
-        "network_error": "Error de red"
+        "network_error": "Error de red",
+        "coming_soon": "Próximamente...",
+        "exam": "Exámenes",
+        "daily_message": "Mensaje diario"
     },
     "eo": {
         "language": "Lingvo",
@@ -140,7 +146,10 @@
         "minutes": "Minutoj",
         "seconds": "Sekundoj",
         "about_timed_lock": "Enigu la kvanto da horoj, minutoj kaj/aŭ sekundoj, kiuj vi volas, ke la tempata ŝlosado daŭros. Ĉiuj kampoj estas nedevigaj, kaj la defaŭlta tempo estas kvin sekundoj.",
-        "network": "",
-        "network_error": ""
+        "network": "Reto",
+        "network_error": "Reta eraro",
+        "coming_soon": "BaldaÅ­e...",
+        "exam": "Testoj",
+        "daily_message": "Ĉiutaga mesaĝo"
     }
 }
diff --git a/app/src/main.js b/app/src/main.js
index 203f3fe9eb18dbe762fa2a18147ff1be93b173f4..d4f00eb78360c55ab72809e906a89bb6b5623498 100755
--- a/app/src/main.js
+++ b/app/src/main.js
@@ -2,7 +2,6 @@ import { app, invoke } from '@tauri-apps/api';
 import { ConfigManager } from "./configmanager.js";
 //import { ScreenLock } from './screenlock';
 import App from './App.svelte';
-import ServerAPI from "./network.js"
 
 const svapp = new App({
 	target: document.body
diff --git a/app/src/network.js b/app/src/network.js
index e21321d54619e570ecd3263b01c8553c3799efce..be6322ca667bb62dd6503d664633d1923e86d5e3 100644
--- a/app/src/network.js
+++ b/app/src/network.js
@@ -11,7 +11,7 @@ class ApiResponse {
 }
 
 
-class ServerAPI {
+export class ServerAPI {
     
     async getDailyMessage() {
         return new ApiResponse(await invoke("request", {"url": "dailymessage"}));
@@ -59,6 +59,4 @@ class ServerAPI {
         }}));
     }
 
-}
-
-export default ServerAPI;
\ No newline at end of file
+}
\ No newline at end of file