diff --git a/src/lib/Form/Meta.svelte b/src/lib/Form/Meta.svelte
index 761f124..de8f6bd 100644
--- a/src/lib/Form/Meta.svelte
+++ b/src/lib/Form/Meta.svelte
@@ -1,7 +1,13 @@
+
Online users
+
+ {#if !data.error}
+ {#if data.users.length > 0}
+
+ {#each data.users as user}
+
+
+ {user.username}
+ {user.email}
+
+
+ Joined
+ {user.joined}
+
+
+ {/each}
+
+ {:else}
+
No users online
+ {/if}
+ {:else}
+
{data.message}
+ {/if}
+
\ No newline at end of file
diff --git a/src/routes/pubnix/faq/+page.svelte b/src/routes/pubnix/faq/+page.svelte
new file mode 100644
index 0000000..f7bb455
--- /dev/null
+++ b/src/routes/pubnix/faq/+page.svelte
@@ -0,0 +1,12 @@
+
+
Pubnix FAQ
+
+
Here are some frequently asked questions about the pubnix.
+
+
What is a pubnix?
+
A pubnix is a [[Unix?]] server provided by a person or a group to a group for non-commercial recreational goals.
+
\ No newline at end of file
diff --git a/src/routes/pubnix/register/+page.server.ts b/src/routes/pubnix/register/+page.server.ts
new file mode 100644
index 0000000..b1e617d
--- /dev/null
+++ b/src/routes/pubnix/register/+page.server.ts
@@ -0,0 +1,40 @@
+import type { Actions } from "./$types";
+import Joi from "joi";
+import { fail } from "@sveltejs/kit";
+import { env } from "$env/dynamic/private";
+
+export const actions: Actions = {
+ default: async ({ request, fetch, getClientAddress }) => {
+ const formData = await request.formData();
+
+ const BodyTypeSchema = Joi.object({
+ username: Joi.string().required(),
+ email: Joi.string().email().required()
+ });
+
+ if (BodyTypeSchema.validate(Object.fromEntries(formData.entries())).error) {
+ return fail(400, { error: true, message: String(BodyTypeSchema.validate(Object.fromEntries(formData.entries())).error) });
+ } else {
+ const request = await fetch("https://publapi.projectsegfau.lt/signup", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify({
+ username: formData.get("username"),
+ email: formData.get("email"),
+ ip: getClientAddress()
+ })
+ }).then((res) => res.json())
+ .catch((err) => {
+ return fail(400, { error: true, message: "Error: " + err });
+ });
+
+ if (request.ok) {
+ return { success: true, message: request.message, username: request.username, email: request.email };
+ } else {
+ return fail(400, { error: true, message: "Error: " + request.status });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/routes/pubnix/register/+page.svelte b/src/routes/pubnix/register/+page.svelte
new file mode 100644
index 0000000..fd81539
--- /dev/null
+++ b/src/routes/pubnix/register/+page.svelte
@@ -0,0 +1,41 @@
+
+
+
+
All users
+
+ {#if !data.error}
+ {#if data.users.length > 0}
+
+ {#each data.users as user}
+
+
+ {user.username}
+ {user.email}
+
+
+ Joined
+ {user.joined}
+
+
+ {/each}
+
+ {:else}
+
There are no users
+ {/if}
+ {:else}
+
{data.message}
+ {/if}
+
\ No newline at end of file
diff --git a/uno.config.ts b/uno.config.ts
index 9d2e410..1daf89e 100644
--- a/uno.config.ts
+++ b/uno.config.ts
@@ -50,7 +50,7 @@ export default defineConfig({
lg: "1024px",
xl: "1280px",
"2xl": "1536px",
- nav: "1030px"
+ nav: "1090px"
}
},