SAYED.DEV

Founder & Full-Stack Engineer (Personal project)

Zads

Personal education platform

  • Next.js 16
  • React
  • TypeScript
  • Node.js
  • PostgreSQL
  • Prisma
  • Geolocation
Zads Hero View

The problem

Families need a way to find nearby teachers and request tutoring, while teachers need a place to present their subjects and pricing. Zads brings teacher discovery, location-aware search, lesson pricing, and parent requests into one product.

How it is built

Built the backend with Node.js, Express, Prisma ORM, and PostgreSQL, covered by HTTP integration tests that run in GitHub Actions before each Vercel deploy. The web app started on Nuxt 3 and Vuetify and was migrated to a single Next.js 16 App Router app: 42 routes under /[locale], Arabic/English RTL via next-intl, Auth.js v5, CASL role-based access, Server Components on the public pages with a Server Action for contact requests. The full source, including the archived Nuxt apps, is public at github.com/SayedEsmail/zads.

Web app (Next.js 16 App Router on Vercel)
        ├── /[locale]/public · client · teacher · admin
        └── Auth.js v5 · CASL · next-intl (ar/en RTL)
                    │
                    ▼
        Node.js and Express backend
                    │
                    ▼
        Prisma ORM and PostgreSQL

Key decisions

Build the backend with Node.js, Express, Prisma, and PostgreSQL

These technologies form the backend and data layer for the multi-app product.

Use location-aware teacher discovery

Families need to find teachers near them, so search uses location mapping and distance routing.

Move toward a unified Next.js and React frontend

The migration is intended to bring the customer app and admin dashboards toward one frontend stack.

What it changed for the product

  • Connects families with nearby teachers through location-aware discovery.
  • Gives teachers flexible pricing options for their lessons.
  • Links parent sign-ups to tutor request workflows.

Hard parts and how I solved them

Finding nearby teachers

What I didBuilt geo-proximity search to match learners with nearby teachers using location mapping and distance routing.

Flexible lesson pricing

What I didImplemented dynamic pricing so teachers can offer different lesson arrangements.

Parent-to-tutor requests

What I didAutomated tutor requests from parent sign-ups to connect registration with the tutoring workflow.

Frontend migration

What I didBegan moving the Nuxt 3 and Vue 3 frontend toward a unified Next.js and React stack.

Stack and what each part does

  • Node.js and ExpressBackend API
  • Prisma ORMDatabase access
  • PostgreSQLApplication database
  • Nuxt 3 and Vue 3Customer web app and admin dashboards
  • CASLAccess control
  • FirebasePush notifications
  • Next.js and ReactTarget for the frontend migration in progress

Highlights

Location-aware search for nearby teachersTeacher discovery
Dynamic pricing and tutoring arrangementsLesson options
Tutor requests created from parent sign-upsParent workflow
Full-stack product with a frontend migration in progressPlatform development
Zads education platform landing page
Zads education platform landing page
Zads teacher dashboard
Zads teacher dashboard
Zads parent dashboard in Arabic
Zads parent dashboard in Arabic
Zads parent tutoring requests
Zads parent tutoring requests
Zads parent student profiles
Zads parent student profiles

Working on a similar product?

If you need someone to own a product frontend, lead a frontend team, or ship an Arabic and English interface, let's talk.