Skip to content
/ ZAYQ Public

A premium, Apple-inspired e-commerce storefront for ZAYQ. Features a minimalist UI, feature-based architecture, and a high-conversion WhatsApp ordering flow.

License

Notifications You must be signed in to change notification settings

BeyteFlow/ZAYQ

ZAYQ

The Advanced Component-Based Platform for Product Management and Dynamic Web Applications

Build Issues Contributions License


🧭 Table of Contents


⭐ Overview

ZAYQ is a robust, interactive web application built on a modern Component-based Architecture, designed primarily for the sophisticated display, management, and administration of product data. It provides a highly modular and extensible framework, ideal for creating high-performance e-commerce frontends, internal product catalogs, or administrative panels.

The Problem

Developing complex, feature-rich interfacesβ€”especially those involving data management, filtering, searching, and presentation (like e-commerce sites or inventory systems)β€”often leads to monolithic, difficult-to-maintain codebases. Ensuring a smooth, interactive user experience while managing global state and asynchronous data fetching efficiently is a significant technical challenge that consumes valuable development resources and slows time-to-market. Furthermore, administrative functions, such as adding new products, require dedicated, secure, and well-structured pages that integrate seamlessly with the main application flow.

The Solution

ZAYQ eliminates these challenges by providing a pre-structured, high-performance foundation. By utilizing a strong component architecture, global state management (zustand), and robust data fetching (@tanstack/react-query), ZAYQ delivers an instant, interactive user experience. It already features dedicated components for essential product browsing capabilities (Toolbar, Search, Sort, Filters, Grid, Pagination) alongside dedicated admin pages (AddProductPage), offering a comprehensive starting point for any product-centric application. The clear separation of concerns in the structure ensures maintainability and scalability from day one.

Architecture Overview

ZAYQ is fundamentally a single-page web application (web_app) employing a modern Component-based Architecture. It is built entirely on the TypeScript ecosystem, leveraging React for the highly interactive user interface. Data persistence is handled via Firebase, which acts as the application's verifiable database layer, enabling real-time capabilities without relying on a custom backend service. The entire project is engineered for speed and developer experience using Vite for tooling and optimized for deployment on Vercel.


✨ Key Features

ZAYQ’s design is centered around delivering a seamless, highly functional interactive user interface, focusing on modularity, speed, and advanced data interaction capabilities.

πŸ’» Dynamic Product Management Interface

Leveraging the component architecture, ZAYQ features a full suite of front-end components dedicated to product handling and display.

  • Modular Product Views: Components like ProductCard and ProductGrid ensure uniform, high-fidelity presentation of catalog items across the ProductsPage.
  • Dedicated Administration: Includes the AddProductPage, providing a ready-made interface foundation for content administrators to manage the inventory directly through the application's flow.

⚑ Optimized State and Data Handling

The application utilizes cutting-edge libraries to manage complex data and application state effectively, ensuring a responsive user experience.

  • Global State Management: Implemented via zustand, enabling centralized, streamlined state management for crucial application data (such as product lists in product.store.ts), leading to faster application performance and predictable state changes.
  • Efficient Data Fetching: Utilizes @tanstack/react-query to handle server state, caching, background refetching, and synchronization, drastically improving the perceived speed and reliability of interacting with the firebase data store.

πŸ” Advanced Product Browsing Utilities

Users can efficiently navigate and discover products thanks to integrated, granular control mechanisms built into the interface.

  • Comprehensive Filtering and Sorting: Dedicated components like ProductFilters, SortSelect, and the SearchBar (within ProductToolbar) provide users with powerful tools to refine the product list instantly based on criteria.
  • Seamless Navigation: The Pagination.tsx component ensures that large product catalogs are handled gracefully, breaking down extensive lists into manageable, user-friendly chunks, minimizing initial load times.

🎨 Modular and Extensible Layout

ZAYQ is designed for quick adaptation and styling consistency, ensuring developers can rapidly extend or restyle the application.

  • Atomic Styling: Built on tailwindcss, ensuring rapid styling utility application and consistent, professional visual design across all components (e.g., HeroSection, ContactForm, Testimonials).
  • Shared Layout Components: Essential structural elements like Navbar.tsx and Footer.tsx are managed centrally in the layout directory, guaranteeing layout integrity across all defined pages (e.g., Homepage, About, Contact, ProductsPage).

βš™οΈ Firebase Integration Ready

The core structure includes necessary configuration for data persistence.

  • Ready for Cloud Data: Integration logic is housed in src/lib/firebase.ts, preparing the application structure for immediate connection to a Firebase database for real-time data storage and synchronization.

πŸ› οΈ Tech Stack & Architecture

ZAYQ is engineered using a modern, scalable architecture, employing only industry-leading tools and libraries. This robust foundation ensures high performance, maintainability, and a superior developer experience.

Category Technology Purpose Why it was Chosen
Architecture Component-based Architecture Structuring the entire application as a system of reusable, independent components. Promotes high modularity, scalability, code reuse, and simplifies maintenance of complex UI features (e.g., product grids and toolbars).
Frontend Core React (v19) Library for building the interactive user interface (UI) and managing component lifecycle. Provides a declarative, efficient way to render UI changes, essential for highly interactive web applications like ZAYQ.
Data Layer Firebase The verifiable database solution for data persistence and synchronization. Offers a powerful, flexible, and scalable way to handle application data without requiring custom backend development.
State Management Zustand Lightweight and fast global state management solution. Chosen for its simplicity, minimal boilerplate, and efficient handling of large, distributed state, perfect for managing global product data.
Data Fetching TanStack Query Comprehensive library for managing server state, caching, and synchronization. Dramatically improves application responsiveness and user experience by minimizing unnecessary data requests and handling loading/error states gracefully.
Tooling & Build Vite Next-generation frontend tooling and build system. Selected for its lightning-fast Hot Module Replacement (HMR) and optimized production builds, significantly speeding up development cycles.
Styling Tailwind CSS (v4) Utility-first CSS framework. Enables rapid UI development and ensures consistent, responsive styling across all components, from HeroSection to ProductFilters.
Routing React Router DOM (v7) Declarative routing library. Manages navigation and view changes within the Single Page Application (SPA), linking pages like /about, /contact, and /products.
Deployment Vercel Cloud platform for frontend development and static site hosting. Optimized for React and Vite deployments, offering automatic scaling and seamless global content delivery via the vercel.json configuration.

πŸ“ Project Structure

The ZAYQ project follows a clear, features-first directory structure, designed for maximum organization and scalability. Key application domains, like products, home, and about, are isolated into their own feature folders, minimizing coupling and enhancing maintainability.

πŸ“‚ BeyteFlow-ZAYQ-3311705/
β”œβ”€β”€ πŸ“‚ .github/                             # GitHub configuration and workflow management
β”‚   β”œβ”€β”€ πŸ“„ CODEOWNERS                       # Defines team/user ownership for specific files/paths
β”‚   └── πŸ“‚ workflows/                       # Continuous Integration (CI) definitions
β”‚       └── πŸ“„ ci.yml                       # GitHub Actions workflow for continuous integration
β”œβ”€β”€ πŸ“‚ public/                              # Static assets accessible directly
β”‚   └── πŸ“„ favicon.svg                      # Application favicon/icon
β”œβ”€β”€ πŸ“‚ src/                                 # Main application source code
β”‚   β”œβ”€β”€ πŸ“‚ admin/                           # Dedicated components and logic for administrative features
β”‚   β”‚   β”œβ”€β”€ πŸ“„ .gitkeep                     # Placeholder
β”‚   β”‚   └── πŸ“‚ page/
β”‚   β”‚       └── πŸ“„ AddProductPage.tsx       # UI for adding new items to the catalog/database
β”‚   β”œβ”€β”€ πŸ“‚ assets/                          # Static assets referenced by the application
β”‚   β”‚   └── πŸ“„ react.svg                    # React logo or related asset
β”‚   β”‚   └── πŸ“‚ components/                  # Shared, low-level UI components
β”‚   β”‚       β”œβ”€β”€ πŸ“‚ layout/                  # Structural components defining application layout
β”‚   β”‚       β”‚   β”œβ”€β”€ πŸ“„ Footer.tsx           # Global application footer
β”‚   β”‚       β”‚   └── πŸ“„ Navbar.tsx           # Global application navigation bar
β”‚   β”‚       └── πŸ“‚ ui/
β”‚   β”‚           └── πŸ“„ .gitkeep             # Placeholder for generic UI elements (e.g., buttons, inputs)
β”‚   β”œβ”€β”€ πŸ“‚ features/                        # Core, domain-specific features of the application (Feature Slices)
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ ProductDetail/               # Feature slice dedicated to displaying single product details
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ hooks/
β”‚   β”‚   β”‚   β”‚   └── πŸ“„ useProductDetail.ts  # Custom hook for fetching and managing product detail state
β”‚   β”‚   β”‚   └── πŸ“‚ types/
β”‚   β”‚   β”‚       └── πŸ“„ index.ts             # TypeScript definitions for product detail data
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ about/                       # Feature slice for the 'About Us' section
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“„ About.tsx                # Main About page component
β”‚   β”‚   β”‚   └── πŸ“‚ components/              # Sub-components specific to the About page
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ AboutHero.tsx        # Hero banner for the About page
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ AboutStory.tsx       # Narrative component for the company story
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ BrandPromise.tsx     # Component detailing the brand's commitment
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ CoreFeatures.tsx     # Highlighted features section
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ FeatureGrid.tsx      # Grid layout for various features
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ ModelGrid.tsx        # Grid for displaying team members or models
β”‚   β”‚   β”‚       └── πŸ“„ Testimonials.tsx     # User testimonial component
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ contact/                     # Feature slice for the 'Contact Us' section
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“„ Contact.tsx              # Main Contact page component
β”‚   β”‚   β”‚   └── πŸ“‚ components/
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ ContactForm.tsx      # Component for user submissions
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ ContactHero.tsx      # Hero banner for the Contact page
β”‚   β”‚   β”‚       └── πŸ“„ ContactInfo.tsx      # Component displaying contact details
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ home/                        # Feature slice for the main landing page
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“„ Homepage.tsx             # Main entry component for the Home view
β”‚   β”‚   β”‚   └── πŸ“‚ components/
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ CasesSection.tsx     # Component showcasing use cases or case studies
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ ComingSoonSection.tsx# Placeholder or future content section
β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ HeroSection.tsx      # Main introductory banner component
β”‚   β”‚   β”‚       └── πŸ“„ TaglineSection.tsx   # Component displaying the project's core messaging
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ products/                    # Core feature slice for product browsing and display
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ components/              # UI components specific to the product catalog
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ Page/
β”‚   β”‚   β”‚   β”‚   β”‚   └── πŸ“„ ProductsPage.tsx # Main page component displaying the product catalog
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ Pagination/
β”‚   β”‚   β”‚   β”‚   β”‚   └── πŸ“„ Pagination.tsx   # Component for navigating large product sets
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ ProductFilters/
β”‚   β”‚   β”‚   β”‚   β”‚   └── πŸ“„ ProductFilters.tsx# Component containing filter options (e.g., category, price)
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ ProductGrid/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“„ ProductCard.tsx  # Component for rendering an individual product item
β”‚   β”‚   β”‚   β”‚   β”‚   └── πŸ“„ ProductGrid.tsx  # Component arranging ProductCards in a responsive grid
β”‚   β”‚   β”‚   β”‚   └── πŸ“‚ ProductToolbar/
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ ProductToolbar.tsx# Container component for search and sort controls
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ πŸ“„ SearchBar.tsx    # Input field for searching the catalog
β”‚   β”‚   β”‚   β”‚       └── πŸ“„ SortSelect.tsx   # Dropdown for selecting sorting criteria
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ hooks/
β”‚   β”‚   β”‚   β”‚   └── πŸ“„ .gitkeep             # Placeholder for product-specific custom hooks
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ services/
β”‚   β”‚   β”‚   β”‚   └── πŸ“„ .gitkeep             # Placeholder for API or data fetching services
β”‚   β”‚   β”‚   └── πŸ“‚ types/
β”‚   β”‚   β”‚       └── πŸ“„ .gitkeep             # Placeholder for product-related TypeScript types
β”‚   β”‚   └── πŸ“‚ shop/
β”‚   β”‚       └── πŸ“„ .gitkeep                 # Placeholder for general shopping cart or checkout logic
β”‚   β”œβ”€β”€ πŸ“‚ hooks/
β”‚   β”‚   └── πŸ“„ .gitkeep                     # Global, reusable custom hooks
β”‚   β”œβ”€β”€ πŸ“‚ lib/                             # Core libraries and third-party configurations
β”‚   β”‚   └── πŸ“„ firebase.ts                  # Initialization and configuration for Firebase services
β”‚   β”œβ”€β”€ πŸ“‚ pages/
β”‚   β”‚   └── πŸ“„ .gitkeep                     # Placeholder for root-level pages, if needed
β”‚   β”œβ”€β”€ πŸ“‚ store/                           # Global application state management (Zustand)
β”‚   β”‚   └── πŸ“„ product.store.ts             # Zustand store module for managing product data state
β”‚   β”œβ”€β”€ πŸ“‚ styles/
β”‚   β”‚   └── πŸ“„ .gitkeep                     # Placeholder for global styles or custom CSS
β”‚   β”œβ”€β”€ πŸ“‚ utils/
β”‚   β”‚   └── πŸ“„ .gitkeep                     # Global utility functions (e.g., formatters, validators)
β”‚   β”œβ”€β”€ πŸ“„ App.tsx                          # Main application component and router configuration
β”‚   β”œβ”€β”€ πŸ“„ index.css                        # Global CSS styles
β”‚   └── πŸ“„ main.tsx                         # Application entry point (ReactDOM rendering)
β”œβ”€β”€ πŸ“„ .gitignore                           # Files and directories ignored by Git
β”œβ”€β”€ πŸ“„ index.html                           # Main HTML entry file
β”œβ”€β”€ πŸ“„ eslint.config.js                     # ESLint configuration for code quality
β”œβ”€β”€ πŸ“„ package-lock.json                    # Locked dependencies versions
β”œβ”€β”€ πŸ“„ package.json                         # Project metadata, dependencies, and NPM scripts
β”œβ”€β”€ πŸ“„ tsconfig.app.json                    # TypeScript configuration specific to the application code
β”œβ”€β”€ πŸ“„ tsconfig.json                        # Base TypeScript compiler options
β”œβ”€β”€ πŸ“„ tsconfig.node.json                   # TypeScript configuration for Node environment files (like Vite config)
β”œβ”€β”€ πŸ“„ vite.config.ts                       # Vite build tool configuration
└── πŸ“„ vercel.json                          # Vercel deployment configuration

πŸš€ Getting Started

ZAYQ is built using modern TypeScript and requires a Node.js environment to run the development server and build process.

Prerequisites

Ensure you have the following tools installed on your system:

  • Node.js (LTS version recommended): Required for running npm and the development server.
  • npm: Used as the package manager (verified in package-lock.json).
  • TypeScript: The primary language for the codebase, handled via local dependencies.

Installation

Follow these steps to set up the project locally:

  1. Clone the repository:

    git clone https://github.com/your-repo/BeyteFlow-ZAYQ-3311705.git
    cd BeyteFlow-ZAYQ-3311705
  2. Install dependencies: Use npm to install all necessary packages, including react, tailwindcss, zustand, and firebase.

    npm install
  3. Configure TypeScript: The project uses several TypeScript configuration files (tsconfig.json, tsconfig.app.json, tsconfig.node.json) to manage compiler options and file resolution. These are set up automatically upon installation.

  4. Firebase Setup (Required Data Layer): Although no environment variables were detected, for the firebase.ts file to connect and function, you will need to manually configure your Firebase project credentials within that file or ensure the appropriate environment injection method is used during development/deployment (Vercel integration highly recommended).


πŸ”§ Usage

ZAYQ is structured as a Single Page Application (SPA). Once the development server is running, the interactive user interface is available in your browser, enabling access to all configured pages (/home, /products, /about, /contact) and administrative features.

Available Scripts

The core functionality of the application is accessed via standard npm scripts defined in package.json.

Script Command Description
dev vite Starts the development server using Vite, complete with HMR (Hot Module Replacement). This is the primary script for local development.
build tsc -b && vite build Compiles TypeScript files and creates a production-ready optimized bundle of the application.
lint eslint . Runs the linter across the project files to enforce code standards and identify potential issues.
preview vite preview Serves the production build locally, allowing you to test the compiled, optimized version before deployment.

Running the Development Server

To start iterating on the ZAYQ interface, run the following script:

npm run dev

The application will typically be accessible at http://localhost:5173 (or similar port).

Accessing Key Functionality

Once running, the web application provides the following core pathways and interactive elements:

  1. Product Catalog Interaction (/products):

    • Navigate to the ProductsPage.tsx.
    • Interact with the Product Toolbar (ProductToolbar.tsx) to utilize the built-in SearchBar.tsx and SortSelect.tsx to refine the view.
    • Apply custom criteria using the ProductFilters.tsx component.
    • Browse large lists using the Pagination.tsx interface.
  2. Administrative Access (Example):

    • The structure includes an administrative flow page (admin/page/AddProductPage.tsx) which is ready to accept user input for catalog additions.
  3. Static Content Pages:

    • Use the Navbar.tsx to access marketing and informational pages, including the Homepage.tsx, About.tsx, and Contact.tsx.

Building for Production

To create the optimized assets for deployment (e.g., to Vercel, as suggested by vercel.json):

npm run build

This command first runs the TypeScript compiler (tsc -b) to ensure type safety, followed by the Vite build process, generating the compressed output in the dist directory.


🀝 Contributing

We welcome contributions to improve ZAYQ! Your input helps make this project better for everyone, ensuring it remains a state-of-the-art foundation for product-centric web applications.

How to Contribute

To contribute, please follow the standard GitHub workflow:

  1. Fork the repository - Click the 'Fork' button at the top right of this page.
  2. Create a feature branch
    git checkout -b feature/new-admin-component
  3. Make your changes - Improve code, documentation, or features. Ensure your TypeScript remains clean and type-safe, leveraging zustand for state and @tanstack/react-query for data fetching where applicable.
  4. Test thoroughly - Ensure all existing functionality works as expected, particularly product browsing (ProductsPage) and administrative views (AddProductPage).
    npm run dev # Check functionality manually
    # Note: Although no testing suite was detected, local testing is essential.
  5. Commit your changes - Write clear, descriptive commit messages.
    git commit -m 'Feat: Implement dynamic rendering for ProductCard based on size'
  6. Push to your branch
    git push origin feature/new-admin-component
  7. Open a Pull Request - Submit your changes to the main branch for review.

Development Guidelines

  • βœ… Code Style: Follow the existing TypeScript and React conventions. Utilize the defined ESLint configuration (eslint.config.js).
  • πŸ“ Documentation: Add JSDoc comments to complex functions, custom hooks (useProductDetail.ts), and global store modules (product.store.ts).
  • πŸ“š Architecture: Maintain strict adherence to the Component-based Architecture, ensuring components remain modular and focused on a single responsibility.
  • πŸ”„ Dependencies: Only add new dependencies if absolutely necessary, favoring the powerful capabilities of the existing stack (React, Zustand, TanStack Query).
  • 🎯 Commits: Keep commits focused and atomic, addressing only one feature or fix per commit where possible.

Ideas for Contributions

We're looking for help with the following areas, aligned with the project's current structure:

  • πŸ› Bug Fixes: Address any issues related to data presentation or interaction (e.g., filtering logic).
  • ✨ New Features: Implement advanced features, such as product comparison or user authentication flows integrated with Firebase.
  • πŸ“– Documentation: Enhance the documentation for core feature slices like products/ and admin/.
  • 🎨 UI/UX: Refine the styling of core layout components (Navbar, Footer) and product interaction elements using tailwindcss.
  • ⚑ Performance: Optimize the data fetching patterns in the services and hooks layers to minimize Firebase calls.

Code Review Process

  • All submissions require review by a maintainer before merging.
  • Maintainers will provide constructive feedback on architecture, efficiency, and adherence to style guides.
  • Changes may be requested before approval.

Questions?

Feel free to open an issue for any questions or concerns regarding the project structure, features, or contributing process. We're here to help!


πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for complete details.

What this means:

  • βœ… Commercial use: You can use, copy, and distribute this project commercially.
  • βœ… Modification: You are free to modify the source code to suit your needs.
  • βœ… Distribution: You can distribute this software in source or binary form.
  • βœ… Private use: You can use this project privately for internal development.
  • ⚠️ Liability: The software is provided "as is", without warranty of any kind.
  • ⚠️ Trademark: This license does not grant rights to use the ZAYQ name or any associated trademarks.

Made with ❀️ by the ZAYQ Team

⬆️ Back to Top

About

A premium, Apple-inspired e-commerce storefront for ZAYQ. Features a minimalist UI, feature-based architecture, and a high-conversion WhatsApp ordering flow.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 8

Languages