diff --git a/src/routes/(app)/database/characters/[id]/edit/+page.server.ts b/src/routes/(app)/database/characters/[id]/edit/+page.server.ts
new file mode 100644
index 00000000..ad19aec4
--- /dev/null
+++ b/src/routes/(app)/database/characters/[id]/edit/+page.server.ts
@@ -0,0 +1,34 @@
+import type { PageServerLoad } from './$types'
+import { entityAdapter } from '$lib/api/adapters/entity.adapter'
+import { error, redirect } from '@sveltejs/kit'
+
+export const load: PageServerLoad = async ({ params, parent }) => {
+ // Get parent data to access role
+ const parentData = await parent()
+
+ // Role check - must be editor level (>= 7) to edit
+ if (!parentData.role || parentData.role < 7) {
+ throw redirect(303, `/database/characters/${params.id}`)
+ }
+
+ try {
+ const character = await entityAdapter.getCharacter(params.id)
+
+ if (!character) {
+ throw error(404, 'Character not found')
+ }
+
+ return {
+ character,
+ role: parentData.role
+ }
+ } catch (err) {
+ console.error('Failed to load character:', err)
+
+ if (err instanceof Error && 'status' in err && err.status === 404) {
+ throw error(404, 'Character not found')
+ }
+
+ throw error(500, 'Failed to load character')
+ }
+}
diff --git a/src/routes/(app)/database/characters/[id]/edit/+page.svelte b/src/routes/(app)/database/characters/[id]/edit/+page.svelte
new file mode 100644
index 00000000..5dc9ccbe
--- /dev/null
+++ b/src/routes/(app)/database/characters/[id]/edit/+page.svelte
@@ -0,0 +1,224 @@
+
+
+
+
+
+ {#if character}
+
+
+
+
+
+
+
+ {#if character?.id && character?.granblueId}
+
+ {/if}
+
+
+ {:else}
+
+
Character Not Found
+
The character you're looking for could not be found.
+
+
+ {/if}
+
+
+
diff --git a/src/routes/(app)/database/summons/[id]/edit/+page.server.ts b/src/routes/(app)/database/summons/[id]/edit/+page.server.ts
new file mode 100644
index 00000000..22474969
--- /dev/null
+++ b/src/routes/(app)/database/summons/[id]/edit/+page.server.ts
@@ -0,0 +1,34 @@
+import type { PageServerLoad } from './$types'
+import { entityAdapter } from '$lib/api/adapters/entity.adapter'
+import { error, redirect } from '@sveltejs/kit'
+
+export const load: PageServerLoad = async ({ params, parent }) => {
+ // Get parent data to access role
+ const parentData = await parent()
+
+ // Role check - must be editor level (>= 7) to edit
+ if (!parentData.role || parentData.role < 7) {
+ throw redirect(303, `/database/summons/${params.id}`)
+ }
+
+ try {
+ const summon = await entityAdapter.getSummon(params.id)
+
+ if (!summon) {
+ throw error(404, 'Summon not found')
+ }
+
+ return {
+ summon,
+ role: parentData.role
+ }
+ } catch (err) {
+ console.error('Failed to load summon:', err)
+
+ if (err instanceof Error && 'status' in err && err.status === 404) {
+ throw error(404, 'Summon not found')
+ }
+
+ throw error(500, 'Failed to load summon')
+ }
+}
diff --git a/src/routes/(app)/database/summons/[id]/edit/+page.svelte b/src/routes/(app)/database/summons/[id]/edit/+page.svelte
new file mode 100644
index 00000000..5041ab60
--- /dev/null
+++ b/src/routes/(app)/database/summons/[id]/edit/+page.svelte
@@ -0,0 +1,339 @@
+
+ {#if summon}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if editData.flb}
+
+ {/if}
+ {#if editData.ulb}
+
+ {/if}
+ {#if editData.transcendence}
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+ {:else}
+
+
Summon Not Found
+
The summon you're looking for could not be found.
+
+
+ {/if}
+
+
+
diff --git a/src/routes/(app)/database/weapons/[id]/edit/+page.server.ts b/src/routes/(app)/database/weapons/[id]/edit/+page.server.ts
new file mode 100644
index 00000000..2396b5e5
--- /dev/null
+++ b/src/routes/(app)/database/weapons/[id]/edit/+page.server.ts
@@ -0,0 +1,34 @@
+import type { PageServerLoad } from './$types'
+import { entityAdapter } from '$lib/api/adapters/entity.adapter'
+import { error, redirect } from '@sveltejs/kit'
+
+export const load: PageServerLoad = async ({ params, parent }) => {
+ // Get parent data to access role
+ const parentData = await parent()
+
+ // Role check - must be editor level (>= 7) to edit
+ if (!parentData.role || parentData.role < 7) {
+ throw redirect(303, `/database/weapons/${params.id}`)
+ }
+
+ try {
+ const weapon = await entityAdapter.getWeapon(params.id)
+
+ if (!weapon) {
+ throw error(404, 'Weapon not found')
+ }
+
+ return {
+ weapon,
+ role: parentData.role
+ }
+ } catch (err) {
+ console.error('Failed to load weapon:', err)
+
+ if (err instanceof Error && 'status' in err && err.status === 404) {
+ throw error(404, 'Weapon not found')
+ }
+
+ throw error(500, 'Failed to load weapon')
+ }
+}
diff --git a/src/routes/(app)/database/weapons/[id]/edit/+page.svelte b/src/routes/(app)/database/weapons/[id]/edit/+page.svelte
new file mode 100644
index 00000000..a7a4e97f
--- /dev/null
+++ b/src/routes/(app)/database/weapons/[id]/edit/+page.svelte
@@ -0,0 +1,359 @@
+
+ {#if weapon}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if editData.flb}
+
+ {/if}
+ {#if editData.ulb}
+
+ {/if}
+ {#if editData.transcendence}
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {:else}
+
+
Weapon Not Found
+
The weapon you're looking for could not be found.
+
+
+ {/if}
+
+
+