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 developed as part of the Code2Career training program at Gaza Sky Geeks — a collaborative environment with dedicated Backend, Mobile, and QA teams. My contribution was focused entirely on the web frontend: building the patient-, pharmacy-, and admin-facing interfaces and integrating them with the REST API provided by the backend team.
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 token held in memory with a refresh token in localStorage, refreshed automatically via an Axios interceptor on 401 responses
- 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
- Built the web frontend for patient, pharmacy, and admin roles using Next.js 16, React 19, and strict TypeScript
- Implemented the client-side authentication flow — in-memory access tokens, localStorage refresh tokens, and automatic refresh through an Axios interceptor
- Developed type-safe forms with React Hook Form and Zod, including phone number validation
- Integrated the frontend with the REST API delivered by the backend team
- Contributed reusable, token-driven UI components to the shared design system
- Collaborated cross-functionally with the Backend, Mobile, and QA teams within the Code2Career program
Challenges & Solutions
Challenge: Delivering the web frontend within a multi-team training program where the backend API, mobile app, and QA were owned by separate teams.
Solution: Built against the agreed REST API contract, consuming backend endpoints and adapting to changes through clear cross-team communication.
Result: A functioning web frontend integrated with the shared backend, delivered in step with the wider team.
Challenge: Keeping authenticated sessions both secure and seamless on the client.
Solution: Kept the access token in memory and the refresh token in localStorage, with an Axios interceptor that transparently refreshes expired tokens on 401 responses.
Result: Users stay signed in across sessions without holding long-lived credentials in application state.
Tech Stack
Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS 4, Framer Motion, Lucide React
Forms & Validation: React Hook Form, Zod, libphonenumber-js
Integration: Axios (REST API)
Tools: pnpm, ESLint, Turbopack