OOOlorede.
Back to Projects
FrontendFeaturedFebruary 2024

Seamless Point

All-in-one platform for logistics, utility payments, and on-demand technical services.

Next.jsReactTypeScriptTailwind CSSZustandTanStack QueryPaystackRadix UIReact Hook FormZod
Seamless Point
Overview

Seamless Point is a comprehensive web platform built to unify everyday essential services. Users can effortlessly schedule nationwide and international package deliveries, securely pay for utility bills and data bundles, and connect with vetted technicians on demand. By consolidating these disparate services into a single interface, it provides a frictionless user experience powered by a robust Next.js frontend communicating with a scalable external API.

Architecture

The application leverages the Next.js App Router for optimal routing and rendering. Next.js Server Actions securely communicate with the external backend API, handling authentication, data fetching, and business logic encapsulation. Global UI state is managed by Zustand, while TanStack Query handles server state, caching, and optimistic updates for dashboard metrics. Payment processing is integrated via Paystack, with a custom mathematics module that accurately pre-computes complex local and international fee structures (kobo math) on the edge. Authentication flows use a mix of local JWTs and Google OAuth.

Technical Decisions
01

Architecture

Chose

Decoupled Next.js frontend communicating with an external backend API

Why

Allowed the frontend to focus purely on UI/UX, caching, and client state management, while the backend independently scales to handle heavy transaction loads and third-party webhooks for logistics and utility payments.

Trade-off

Requires strict synchronisation between frontend TypeScript interfaces and backend API contracts, increasing overhead for type sharing.

02

State Management

Chose

TanStack Query alongside Zustand

Why

Zustand provides a lightweight, boilerplate-free solution for localised UI states (multi-step forms, modals), while TanStack Query exclusively manages asynchronous server state, ensuring efficient caching and reducing redundant network requests.

Trade-off

Introduces two separate state management paradigms, requiring clear architectural boundaries on what state lives where.

03

Payment Integration

Chose

Custom Paystack fee computation logic on the client

Why

Ensures the UI accurately displays gross and net charges to users in real-time (handling local caps, waivers, and international flat rates) before initiating the transaction with the payment gateway.

Trade-off

Adds computation complexity to the frontend that must be kept precisely in sync with Paystack's official pricing structures to prevent discrepancies.

Future Improvements

Implement real-time tracking for logistics and delivery requests using WebSockets

Transition to a strictly typed monorepo (e.g., Turborepo) to natively share TypeScript interfaces between frontend and backend

Expand automated test coverage using Playwright for end-to-end critical user flows