diff --git a/packages/web/src/routes/progress/[id]/+page.svelte b/packages/web/src/routes/progress/[id]/+page.svelte
index 75596f1..b97b730 100755
--- a/packages/web/src/routes/progress/[id]/+page.svelte
+++ b/packages/web/src/routes/progress/[id]/+page.svelte
@@ -80,26 +80,32 @@
{#if data.task?.tasksToTopics}
{#each data.task?.tasksToTopics as topic}
-
+
{/each}
{/if}
diff --git a/packages/web/src/routes/progress/topics/[id]/+page.server.ts b/packages/web/src/routes/progress/topics/[id]/+page.server.ts
new file mode 100644
index 0000000..cca7413
--- /dev/null
+++ b/packages/web/src/routes/progress/topics/[id]/+page.server.ts
@@ -0,0 +1,18 @@
+import { db } from '$lib/db';
+import { topics } from '$lib/db/schema';
+import { eq } from 'drizzle-orm';
+
+export const load = async ({ params }) => {
+ return {
+ topic: await db.query.topics.findFirst({
+ with: {
+ topicsToTasks: {
+ with: {
+ task: true
+ }
+ }
+ },
+ where: eq(topics.id, params.id)
+ })
+ };
+};
diff --git a/packages/web/src/routes/progress/topics/[id]/+page.svelte b/packages/web/src/routes/progress/topics/[id]/+page.svelte
new file mode 100644
index 0000000..e168d9e
--- /dev/null
+++ b/packages/web/src/routes/progress/topics/[id]/+page.svelte
@@ -0,0 +1,14 @@
+
+
+{data.topic.name}
+
+Tasks ({data.topic?.topicsToTasks.length})
+{#each data.topic?.topicsToTasks as task}
+
+{/each}