A React + Redux starter template written in TypeScript — designed as a clean foundation for building scalable Redux-powered React applications.
This repo includes common project structure, state management utilities, typed hooks, and best-practice conventions so you can start your Redux app quickly without repetitive boilerplate.
✔ Organized folder structure for components, state logic, hooks, types, and utilities ✔ Fully typed (TypeScript) Redux setup ✔ Base files for scalable state management ✔ Reusable React hooks ✔ Clean separation of domains and logic
├── app/ # App configuration, store setup, providers
├── components/ # UI components
├── data/ # Static data, mock data files
├── hooks/ # Custom React hooks
├── interface/ # TS interfaces used across the app
├── lib/ # Shared utilities and helpers
├── types/ # Type definitions
├── public/ # Static public assets
├── package.json # Project dependencies & scripts
├── tsconfig.json # TypeScript configuration
└── eslint.config.mjs# Linting configuration
Make sure you have Node.js and npm or bun installed.
To develop and run this project locally:
- Clone the repository
git clone https://github.com/muhammadranju/redux-project-setup.git
cd redux-project-setup- Install dependencies
npm install
# or
bun install- Start the development server
npm start
# or
bun run startVisit http://localhost:3000 in your browser to view the application.
This project uses a modern Redux architecture that aligns with common patterns such as:
- Centralized Redux store configuration (likely in
app/) - Typed Redux hooks (
useAppDispatch,useAppSelector) - Feature-based organizational slices/modules
- Separation of concerns between components and state logic
💡 Redux Toolkit is recommended for maintaining Redux logic simply and clearly, and many current projects follow this pattern.([Redux][1])
- Create a new folder under
features/or similar - Define state and reducers using Redux Toolkit or standard Redux setup
- Export selectors and actions
- Connect components using typed hooks
Example usage pattern:
import { useAppSelector, useAppDispatch } from "../hooks";
import { exampleAction } from "../features/exampleSlice";
const Component = () => {
const dispatch = useAppDispatch();
const data = useAppSelector((state) => state.example.value);
return (
<button onClick={() => dispatch(exampleAction())}>Dispatch Action</button>
);
};Use the commands in package.json to:
| Command | Description |
|---|---|
npm start |
Run the app in development mode |
npm run build |
Builds the app for production |
npm test |
Launches the test runner |
Contributions are welcome! Please open issues and submit pull requests to improve features, add documentation, or fix bugs.