Home
Softono

AlibabaClone Frontend

Open source TypeScript
12
Stars
1
Forks
0
Issues
1
Watchers
1 year
Last Commit

 About AlibabaClone Frontend

A modern React frontend for a Transportation Management System, featuring state management with Zustand, responsive styling using TailwindCSS, and seamless API communication.

Platforms

Web Self-hosted iOS

Languages

TypeScript

Need Help Installing AlibabaClone Frontend?

We provide expert installation service for this software. Our team will install, configure, and secure AlibabaClone Frontend on your server. plans start at just $30.

AlibabaClone Frontend

View on GitHub

Transportation Management App – Frontend

πŸ“ About the Project

home

Welcome to the frontend of the Transportation Management System, a modern web interface for managing transportations, tickets, passengers, and accounts. Built with React and powered by Zustand, Axios, and TailwindCSS, this app emphasizes a clean, scalable architecture and a delightful user experience.

πŸ’‘ This frontend is powered by APIs provided by the Transportation Management Backend, which follows Clean Architecture and exposes a secure REST interface.


πŸ› οΈ Tech Stack

Purpose Tool
Component-based UI and static typing React, TypeScript
Client-side routing React Router
HTTP client for API communication Axios
Lightweight global state management Zustand
Utility-first styling TailwindCSS
Build tooling Vite

🧭 Architectural Overview

The application is designed with a focus on clarity, modularity, and maintainability. It applies modern frontend best practices to ensure that UI, state management, and data access remain cohesive yet decoupled.

Core Principles

  • Predictable State Management
    State is managed using Zustand, with well-defined slices that promote separation of concerns and ease of composition.
  • Centralized API Communication
    All external API interactions are handled through a single, abstracted Axios instance, simplifying request handling and error interception.
  • Reusable UI Components
    The UI is built with TailwindCSS and follows a modular component approach, encouraging reuse and consistency across views.
  • Structured Routing Strategy
    Navigation is handled through React Router DOM, leveraging nested and dynamic routes for scalability and clear navigation flow.
  • Unidirectional Data Flow
    Data flows in a single direction, keeping the interaction between components, state, and services intuitive and traceable.

πŸ—‚οΈ Project Structure

The project uses a feature-based folder structure for better scalability and separation of concerns.

/src
 ┣ /components       # Reusable UI components
 ┣ /features         # Feature-based UI & logic
 ┃ ┣ /tickets
 ┃ ┣ /accounts
 ┃ ┣ /routes
 β”— ┃ β”— /vehicles
 ┣ /lib
 ┣ /shared
 ┃ ┣ /api              # Axios instance & endpoint modules
 ┃ ┣ /components
 ┃ ┣ /layout
 ┃ ┃ ┣ /App.tsx          # Root component
 ┃ ┃ /models
 ┣ /store            
 

πŸ”—API Integration

All API calls are made through a centralized Axios instance with built-in support for:

  • Interceptors (e.g., auth tokens)
  • Base URL environment configuration
  • Error handling & retry strategies

API access is abstracted per domain, for example:

const Auth = {
  register: (data: RegisterRequestDto) =>
    request.post<AuthResponseDto>('/auth/register', data),
  login: (data: LoginRequestDto) =>
    request.post<AuthResponseDto>('/auth/login', data),
};

🧾Strong Typing

The app uses TypeScript DTOs for API requests and responses, improving type safety and development speed.

Example:

export interface LoginRequestDto {
  phoneNumber: string;
  password: string;
}

πŸ”„State Management

Using Zustand for simple, powerful, and testable global state:

import { AuthResponseDto } from '@/shared/models/authentication/AuthResponseDto';
import {create} from 'zustand';

interface User {
  phoneNumber: string;
  roles: string[];
}

interface AuthState {
  isLoggedIn: boolean;
  user: User | null;
  token: string | null;
  login: (response: AuthResponseDto) => void;
  logout: () => void;
}

export const useAuthStore = create<AuthState>((set) => ({
	...
}));

πŸ” Authentication & JWT Handling

  • JWT token is stored in a Zustand store with localStorage persistence.
  • Axios interceptors automatically attach the token to every request.
  • Secure routes rely on the presence of a valid token in the store.

🎨 Styling

TailwindCSS is used to maintain a consistent, responsive, and fast design workflow.

  • Custom theme & utility classes configured in tailwind.config.js
  • Follows mobile-first and accessibility-friendly conventions
  • Shared styles (e.g., button, input components) live in /components/ui

Themes

The app supports built-in themes with full dynamic switching capability using CSS variables.

  • 4 default themes
  • Easy to switch themes across the app using a single toggle or dropdown.
  • Theme styles are scoped via class names (e.g., .theme-dark) and applied to the root container.

Example Theme Definition

.theme-dark {
  --background:           #121212;
  --surface:              #1E1E1E;
  --text-primary:         #ffffff;
  --text-secondary:       #3b3b3b;
  --border:               #2C2C2C;
  --ring:                 #3B82F6;

  --primary:              #3B82F6;
  --primary-foreground:   #ffffff;
  --primary-hover:        #2563EB;
  ...
}

theme-02 theme-03 theme-04


πŸ›£οΈRouting

The app uses react-router-dom@to define routes in a centralized file:

<Router>
      <Navbar /> {/* Navbar will show on all pages */}
      <div className="pt-16">
        {" "}
        {/* padding top if navbar is fixed */}
        <Routes>
          <Route path="/" element={<SearchPage />} />
          <Route
            path="/:vehicleId/:fromCityId/:toCityId"
            element={<SearchResultsPage />}
          />
          <Route path="/reserve" element={<ReservationLayout />}>
            <Route path="travelers" element={<TravelerDetailsForm />} />
            <Route path="review" element={<ReviewAndConfirm />} />
            ...
          </Route>
          ...
        </Routes>
      </div>
    </Router>

Includes support for:

  • Protected routes
  • Nested layouts
  • Route parameters

πŸš€Getting Started

  1. Clone the repository

    git clone https://github.com/MehrdadShirvani/AlibabaClone-Frontend.git
    cd transportation-frontend
    
  2. Install dependencies

    npm install
    
  3. Run the app

    npm run dev
    

πŸ“Έ Screenshots

home Screenshot 2025-06-29 135302 Screenshot 2025-06-29 135329 traveler-selection review-confirm download-ticket ticket-order-detail


πŸ“š Resources

React with TypeScript

Tailwind CSS

Axios

Zustand

React Router DOM


πŸ¦β€πŸ”₯ Order of the Phoenix

This project is part of the first initiative by The Order of the Phoenix β€” a student-led movement aimed at building a culture of self-driven learning, teamwork, and meaningful project development. What started as a grassroots .NET learning group evolved into a full-stack travel management system inspired by platforms like Alibaba.ir, built with clean architecture on the backend and a modern React frontend.

πŸ”— For more information, and to explore the full documentation and creation process, visit: ASP.NET Project Documentation

I should specially thank:

Amin Ghoorchian

Ali Taherzadeh

For their guidance, help and accompaniment.


πŸ“ License

MIT License – see LICENSE file for details.