Dreams Core Banner

Introduction

Dreams Core React is a modern, responsive business management dashboard built with React 19, TypeScript, Vite, and Tailwind CSS v4. It provides prebuilt pages, reusable UI components, and powerful dashboards to manage employees, CRM, finance, inventory, projects, billing, payments, reports, and more from a single platform.

Requirement

Technologies
  • Node
  • Text editor as per your wish
System Requirements
  • React version = ^19.3.0
  • TypeScript version = ~6.0.2
  • Node js Package
  • Node version = ^24.4.1
  • Visual Studio Code
  • Terminal

Core Features

– Built with React 19 + TypeScript
– Vite 8 build tooling
– React Router v7 with lazy-loaded routes
– Redux Toolkit state management
– Tailwind CSS v4 (CSS-first config) with Preline v4 UI behaviours
– Light, dark and system theme modes
– Collapsible sidebar with hover-expand and a mobile overlay
– Sidebar translations: English, French, German and Arabic
– Around 500 prebuilt pages across 25+ business modules
– ApexCharts & Chart.js
– FullCalendar and drag & drop kanban boards
– Phosphor, Lucide & Font Awesome icon fonts
– React Compiler enabled
– Fully Responsive Design
– Compatible Browsers: Firefox, Safari, Opera, Edge, Chrome
– Easy to Customize with css Variables

File Structure

Project Overview

The project follows a modular structure with clear separation of concerns.

react/
├── public/
│   └── assets/img/          # logo.svg, logo-dark.svg, logo-small.svg, favicon.png, apple-icon.png, avatar, card, product...
├── src/
│   ├── components/          # shared UI components
│   ├── core/                # auth, data (shared TS types), errors
│   ├── hooks/               # useDataTable, useForm, useToast, useWizard...
│   ├── layout/              # authLayout, publicLayout
│   ├── providers/           # LayoutSync.tsx - writes the theme to the DOM
│   ├── redux/               # store.ts, hooks.ts, slices/ (authSlice, layoutSlice)
│   ├── routes/              # all_routes, router, router.link, authGuards, lazyRoute, lazyPage, dynamicTitle
│   ├── style/css/           # style.css (theme tokens + Tailwind entry), custom.css, date-range-picker.css
│   ├── utils/               # theme.ts, sidebar.ts, json/ (sidebar menu + translations)
│   ├── views/               # page modules
│   ├── environment.tsx
│   └── main.tsx
├── eslint.config.js
├── index.html
├── package.json
├── tsconfig.json
└── vite.config.ts
Shared Components (src/components/)

breadcrumb, carousel, charts, common-footer, common-header, common-sidebar, data-table, date-picker, date-range-picker, drawer, error-boundary, filter-drawer, form-feedback, image-with-base-path, import-export, modal, password-input, preview-code-toggle, range-slider, scroll-to-top, select, skeleton, submit-button, tag-input, time-picker, toast, ui, wizard

Page Modules (src/views/)

account, accounting-module, ai-analytics, application, auth-pages, banking-module, business-intelligence-module, crm-module, crypto-analytics, dashboard, ecommerce, finance-module, food-delivery, hospital-management, hotel-management, hrm-module, insights-module, lms-analytics, logistics-module, management-module, pages, project-management, reports, restaurant-pos, sales-analytics-module, school-management, seo-analytics, travel-booking, ui-interface

React Structure

Structure Overview

Dreams Core React uses React Router v7, lazy-loaded pages, and shared layouts to keep the app scalable and maintainable.

The app entry in src/main.tsx wraps the routes with the Redux Provider and BrowserRouter, then mounts the layout sync helper.

Below is the React app entry:

import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import { Provider } from "react-redux";
import { BrowserRouter } from "react-router-dom";

import "@phosphor-icons/web/regular/style.css";
import "@phosphor-icons/web/fill/style.css";
import "@phosphor-icons/web/duotone/style.css";
import "lucide-static/font/lucide.css";
import "@fortawesome/fontawesome-free/css/all.min.css";

import "flatpickr/dist/flatpickr.min.css";
import "./style/css/date-range-picker.css";
import "./style/css/style.css";
import "./style/css/custom.css";
import "preline";

import { base_path } from "./environment";
import LayoutSync from "./providers/LayoutSync";
import { store } from "./redux/store";
import DynamicTitle from "./routes/dynamicTitle";
import ALLRoutes from "./routes/router";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <Provider store={store}>
      <BrowserRouter basename={base_path}>
        <LayoutSync />
        <ALLRoutes />
        <DynamicTitle />
      </BrowserRouter>
    </Provider>
  </StrictMode>
);
Routing

Routing is handled by react-router-dom v7. The basename comes from base_path in src/environment.tsx, which reads Vite's BASE_URL.

  • src/routes/all_routes.tsx – central map of path constants used across the app.
  • src/routes/router.link.tsx – exports authRoutes, sessionRoutes, errorRoutes, protectedRoutes and notFoundRoute. Around 500 entries, each shaped { id, path, element, route, meta_title }.
  • src/routes/router.tsx – nests auth, session and error routes under AuthLayout and protectedRoutes under ProtectedRoute + PublicLayout. Unknown URLs render the 404 page in place.
  • src/routes/authGuards.tsx – ProtectedRoute and SessionRoute guards.
  • src/routes/lazyRoute.tsx – React.lazy + Suspense (via lazyPage.tsx) with a skeleton fallback for every code-split page.
  • src/routes/dynamicTitle.tsx – sets document.title from each route's meta_title.
Note

The import() literal must stay inline at each call site in router.link.tsx. Extracting it into a variable breaks Vite's static analysis and therefore code-splitting.

Installation Guide

Prerequisites
Node.js and NPM :

Ensure that Node.js is installed and running on your system.

Package Manager

Use npm (recommended with this project lockfile) or Yarn if preferred.

npm -v
Vite

Vite is used as the build tool. It is installed automatically as a project dependency – no global installation required.

Installation Steps
1
Extract & Navigate

After downloading, extract the Dreams Core package and navigate to the react directory.

2
Install Dependencies
npm install

Before proceeding you'll need to install npm packages. You can do this by running npm install from the root of your project to install all the necessary dependencies.

3
Start Development Server
npm run dev

For running a project, run the command

4
Open in Browser

Open your browser at http://localhost:5173/. Vite serves on its default port 5173. Local development runs at the root; only production builds use the /react/ base path (see vite.config.ts).

5
Build for Production
npm run build

This runs tsc -b && vite build and outputs the production bundle to the dist/ directory. Use npm run preview to serve that build locally before deploying.

Production builds set base to /react/ in vite.config.ts, so the built app expects to be served under a /react/ path. Change base there if you deploy at the domain root.

Tailwind Config

CSS-first configuration

This project uses Tailwind CSS v4, which is configured in CSS rather than JavaScript. There is no tailwind.config.js and no content array. Tailwind is wired in through the @tailwindcss/vite plugin in vite.config.ts.

The configuration lives at the top of src/style/css/style.css:

@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&family=Noto+Sans+Arabic:wght@100..900&display=swap");

@import "tailwindcss";
@import "../../../node_modules/preline/variants.css";
@source not "../../../dist";

@layer theme, base, components, utilities;
@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
What each directive does
  • @import "tailwindcss" – loads Tailwind's layers, preflight and utilities.
  • @import "preline/variants.css" – Preline v4 variants used for dropdowns, overlays and tabs; the behaviour itself is initialised from import "preline" in src/main.tsx.
  • @source not – keeps Tailwind from scanning the dist build output.
  • @custom-variant dark – makes every dark: utility key off the data-theme attribute.
Note

src/style/css/custom.css holds component-level overrides layered on top of the theme tokens in style.css.

Fonts

The default typography font for the template is Plus Jakarta Sans (with Noto Sans Arabic as a fallback). If you want to change it to another Google font (like Inter or Roboto):

Open the style file src/style/css/style.css and update the @import statement at the top of the file as well as the font variables in the @theme block:

/* 1. Import the new Google Font at the very top of style.css */
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap");

/* 2. Update the variables inside the @theme block */
@theme {
    --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
    --font-display: "Inter", ui-sans-serif, sans-serif;
}

Color System

All theme colors are defined as design tokens under the @theme directive in your src/style/css/style.css file. These variables control the look and feel of components:

@theme {
    --font-sans: "Plus Jakarta Sans", "Noto Sans Arabic", ui-sans-serif, system-ui, sans-serif;

    --color-primary-500: #24997c;
    --color-primary-600: #187f65;
    --color-primary: var(--color-primary-600);   /* brand: deep teal */

    --color-accent-500: #e8830f;
    --color-accent: var(--color-accent-500);     /* brand: warm copper */

    /* Semantic colors */
    --color-success: var(--color-success-600);
    --color-warning: var(--color-warning-600);
    --color-danger: var(--color-danger-600);
    --color-info: var(--color-info-600);
}

Every brand and semantic color ships with a full 50–950 shade scale (for example --color-primary-50 to --color-primary-950), plus a neutral scale for surfaces and text.

Changing Element Colors

To re-brand the whole template, point the main token at a different shade of its scale. Every component that uses primary follows:

@theme {
    --color-primary: var(--color-primary-700);
}

Dark Mode

How it Works

The theme mode (light, dark or system) is managed in Redux and persisted to localStorage under the key dreamscore-theme. A sync component writes the resolved theme to a data-theme attribute on the <html> element, which a Tailwind custom variant reads to apply dark: utility classes.

src/redux/slices/layoutSlice.ts holds the mode, initialised from localStorage and changed with setThemeMode():

export type ThemeMode = "light" | "dark" | "system";

dispatch(setThemeMode("dark"));   // also writes "dreamscore-theme" to localStorage

src/providers/LayoutSync.tsx is the single bridge that writes the attribute to the DOM whenever the mode changes. In system mode it also follows OS-level changes:

document.documentElement.setAttribute("data-theme", resolveTheme(themeMode));

In src/style/css/style.css, a custom Tailwind variant reacts to that attribute so any dark: utility applies automatically:

@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));

/* usage example */
<div class="bg-white dark:bg-neutral-900"></div>

The project's index.html ships with <html lang="en" data-theme="light"> and a small inline script that applies the saved theme before first paint, so the page never flashes the wrong theme.

Icons

Dreams Core includes multiple popular icon packages ready for use. They are installed from npm and imported in src/main.tsx. You can use any of the following icon libraries:

1. Lucide Icons

Use Lucide icons with the icon-[name] class prefix:

<i class="icon-house"></i>
<i class="icon-users"></i>
<i class="icon-settings"></i>
2. Phosphor Icons

Use Phosphor icons with the ph-[style] ph-[name] prefix classes. The duotone, regular and fill styles are imported:

<i class="ph-duotone ph-plus-circle"></i>
<i class="ph-fill ph-calendar"></i>
<i class="ph ph-user"></i>
3. Font Awesome Icons

Use Font Awesome Free icons with standard classes:

<i class="fa-solid fa-hashtag"></i>
<i class="fa-brands fa-react"></i>

Layout Options

Dreams Core ships a single application shell (src/layout/publicLayout.tsx) with a responsive sidebar, topbar and content area, plus a bare authLayout for the sign-in and error pages. Sidebar behaviour is driven from Redux (src/redux/slices/layoutSlice.ts):

type LayoutState = {
  themeMode: ThemeMode;        // "light" | "dark" | "system"
  language: Language;          // "en" | "fr" | "de" | "ar"
  sidebarCollapsed: boolean;   // persisted as "dreamscore-sidebar-collapsed"
  mobileSidebarOpen: boolean;
};

All layouts support light and dark modes.

Default Layout

The default vertical layout with a left sidebar, topbar, and center content area. It is applied to every page behind ProtectedRoute.

  • Sidebar: Navigation menu, logo, and collapsible dropdowns, built from src/utils/json/sidebarMenu.ts.
  • Topbar: Search input, language and theme switchers, alerts, and profile actions.
  • Responsive: Collapses into an overlay sidebar on tablets and mobile screens automatically.

Mini Sidebar

A screen-saving option that collapses the sidebar to show icons only. When sidebarCollapsed is true, publicLayout.tsx adds the is-collapsed class to the .app-shell wrapper.

  • Icon View: Collapses the sidebar to maximize the main work area.
  • Hover Expand: Hovering over the collapsed sidebar expands it to reveal module text labels.
  • Toggle: Switch between default and mini sidebar using the collapse button in the sidebar. The choice is remembered in localStorage.

Component Reference

Dreams Core comes with 24+ pre-styled UI components. You can find these files in your src/views/ui-interface/ directory (e.g. base-ui/uiAccordion.tsx) or click below to view their live layouts:

License

Dreams Core is developed by Dreams Technologies and is available under both Envato Extended & Regular License options.

Regular License

Usage by either yourself or a single client is permitted for a single end product, provided that end users are not subject to any charges.

Extended License

For use by you or one client in a single end product for which end users may be charged.

What are the main differences between the Regular License and the Extended License?

Note

If you operate as a freelancer or agency, you have the option to acquire the Extended License, which permits you to utilize the item across multiple projects on behalf of your clients.

Support

If you have any questions or run into issues with the template, feel free to contact us via email at support@dreamstechnologies.com.

Response Time: Typically 12–24 hours on weekdays (GMT+5:30). Support covers template bugs, errors, and standard features. It does not cover custom installations or custom coding changes.

Contact Support

Custom Work

Do you need custom development for your application?

If you need customization, new page integration, feature setups, or database connections, our engineering team can help tailor this template to your precise specifications.

  • Tailoring features to your exact branding and workflow.
  • Deploying the template to your production servers.
  • Integrating backend endpoints and databases.
thanks

Thank You

Thank you for choosing Dreams Core! We hope this template facilitates building your application. We kindly ask you to share your feedback by leaving a rating on ThemeForest.

Leave a Review