Karate Dojo Platform Debugging & Enhancements

Job ID: 39581577

Budget: $30 – $250 USD

Hi! I need an experienced Next.js + Supabase + TypeScript developer to help me debug and fix a few critical issues in a Karate Dojo management platform.

Here is what I need:

PROJECT CONTEXT
The app is built with Next.js (TypeScript) and Supabase.

Roles: student, admin, super_user.

Super Users can impersonate admins and view their respective Dojo.

Data such as Dojos, Payment Methods, Profiles, etc., is stored in Supabase.

I will provide the full codebase in .zip and Supabase schema with demo data.

WHAT NEEDS TO BE FIXED
Impersonation Mode Broken

When a super_user impersonates an Admin and enters a Dojo, data appears collapsed or does not load.

Payment Categories, Payment Methods, Settings, etc. do not show properly.

Sometimes "Impersonation Mode" triggers even when logging in directly as admin.

Needs to reset/refresh properly when impersonating and when stopping impersonation.

Role-Based Data Fetching Needs Refactor

Currently, many components rely directly on profile.dojo_id, which doesn’t update on impersonation.

We need to implement a proper shared state (e.g., activeDojoId) and replace all direct calls to profile.dojo_id.

Improve Context / Hooks

Update AuthContext to manage impersonation properly.

Add hook like useActiveDojo() for correct contextual rendering.

Verify & Fix Components

Components like DojoSettings, PaymentCategories, PaymentMethods, etc., need to:

Use the correct active dojo_id

Display data when impersonated properly

Not expose or allow edits if permissions are incorrect

IDEAL DEVELOPER
Very strong in Next.js + Supabase + TypeScript

Understands role-based apps and context/state management

Can suggest smart ways to clean up and refactor for maintainability

Ideally available for future collaboration

Let me know:

Timeline and estimated cost

If you're familiar with Supabase impersonation or similar logic

If you need access to Supabase DB or just mock data

Looking forward to working with you!