Skip to main content
@aymanbismail

CureWay

A multi-vendor pharmacy delivery platform connecting patients with pharmacies to browse medicines, upload prescriptions, and track orders. Built during the Code2Career program at Gaza Sky Geeks, where I was one of five developers on its frontend, setting up the route structure and building the auth flow and admin dashboard.

Tech Stack :
CureWay: screenshot 1 of 4
1 / 4

Project Overview

CureWay is a multi-vendor pharmacy delivery platform that connects patients with pharmacies. Patients browse a public medicine catalog, upload prescriptions, place orders, and track deliveries, while pharmacies manage inventory and fulfil orders, and administrators oversee users, pharmacies, and products across the platform.
The project was built during the Code2Career training program at Gaza Sky Geeks, with the REST API provided by a separate backend team. I was one of five developers on the web frontend. I set up the route structure and built the auth flow, the admin dashboard and the patient home page, then connected auth and the admin tables to the REST API.

Key Features

  • Public medicine catalog: browsable without authentication
  • Patient accounts: registration, authentication, and profile management
  • Prescription workflow: upload prescriptions for pharmacy verification
  • Order management: placement, tracking, and status updates
  • Multi-pharmacy support: multiple vendors operating on one platform
  • Role-based dashboards: tailored interfaces for patients, pharmacies, and admins

Technical Highlights

  • App Router architecture: Next.js 16 with route groups separating auth, patient, pharmacy, admin, and public areas
  • Client-side auth flow: access and refresh tokens kept in memory and localStorage, refreshed by an Axios interceptor on 401 while parallel requests wait in a queue
  • React Context auth provider: centralized session state shared across the app
  • Type-safe forms: React Hook Form with Zod schema validation, plus libphonenumber-js for phone number validation
  • Custom design system: semantic color families, typography and spacing scales, and reusable component classes
  • Turbopack: fast local development builds

My Contributions

  • Set up the App Router structure with route groups and role-based redirects for patients, pharmacies and admins (Next.js 16, React 19, strict TypeScript)
  • Built the client-side auth flow: a React Context session provider, token storage, and automatic refresh through an Axios interceptor
  • Developed type-safe forms with React Hook Form and Zod, including phone number validation
  • Built the admin dashboard and connected its tables to the admin API
  • Developed the patient home page and header, and reworked the search experience
  • Contributed reusable, token-driven UI components to the shared design system
  • Merged 24 pull requests into main, most of them from teammates, resolving merge conflicts and build errors along the way

Challenges & Solutions

Challenge: Five developers building one frontend in parallel, against an API owned by a separate backend team.
Solution: Worked through feature branches and pull requests, fixing merge conflicts and build errors when merging into main.
Result: Separate role-based areas for patients, pharmacies and admins in one codebase.
Challenge: Keeping users signed in across reloads without firing a refresh call for every failed request.
Solution: Kept both tokens in memory and localStorage, with an Axios interceptor that refreshes once on a 401 while other requests wait in a queue, then retries them.
Result: Sessions survive a reload, and parallel requests share a single refresh call.

Tech Stack

Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS 4, Framer Motion, Lucide React
Forms & Validation: React Hook Form, Zod, libphonenumber-js
State & Data: React Context (auth), Zustand (cart and orders), TanStack Query (pharmacy dashboard), Axios (REST API)
Tools: pnpm, ESLint, Turbopack

Need something like this?Tell me about your project