This project is a user-friendly blog platform developed using modern React technologies.
- Responsive Design: Perfect appearance on all devices
- Modern Material-UI Design: Compliant with Material Design principles
- Tailwind CSS: Fast and consistent styling
- Gradient Backgrounds: Modern visual effects
- Glass Morphism: Transparent and blur effects
- React 18: Latest React features
- Redux Toolkit: Advanced state management
- React Router v6: Modern routing system
- Formik & Yup: Form management and validation
- Axios: HTTP requests
- React Helmet: SEO optimization
- Redux Persist: Data persistence
- Search Function: Quick search in blog posts
- Like System: Likes and interactions
- Comment System: User interactions
- Profile Management: Personal profile page
- Blog Management: Add, edit, delete posts
- Responsive Navigation: Mobile-compatible menu
- Error Boundary: Error catching and user-friendly error messages
- Loading States: Loading indicators
- React.memo: Performance optimization
- useMemo & useCallback: Prevent unnecessary renders
- Lazy Loading: Improve page performance
- Node.js (v16 or higher)
- npm or yarn
- Clone the project:
git clone <repository-url>
cd Blog-App- Install dependencies:
npm install- Set up environment variables:
Create a
.envfile and add the following variables:
REACT_APP_BASE_URL=https://blog-backend-clarusway.herokuapp.comNote: Demo data will be used if API connection is not available.
- Start the project:
npm start- Open in browser:
http://localhost:3000
src/
├── app/
│ └── store.jsx # Redux store configuration
├── components/
│ ├── auth/
│ │ ├── LoginForm.jsx
│ │ └── RegisterForm.jsx
│ ├── blog/
│ │ ├── BlogCard.jsx
│ │ ├── CommentForm.jsx
│ │ ├── DeleteModal.jsx
│ │ ├── NewBlogForm.jsx
│ │ └── UpdateModal.jsx
│ ├── ErrorBoundary.jsx
│ ├── Loading.jsx
│ ├── Footer.jsx
│ └── NavBar.jsx
├── features/
│ ├── authSlice.jsx # Authentication state
│ └── blogSlice.jsx # Blog state
├── hooks/
│ ├── useAuthCalls.jsx
│ ├── useAxios.jsx
│ └── useBlogCalls.jsx
├── pages/
│ ├── About.jsx
│ ├── Dashboard.jsx
│ ├── Detail.jsx
│ ├── Login.jsx
│ ├── MyBlogs.jsx
│ ├── NewBlog.jsx
│ ├── NotFound.jsx
│ ├── Profile.jsx
│ └── Register.jsx
├── router/
│ ├── AppRouter.jsx
│ └── PrivateRouter.jsx
├── styles/
│ └── globalStyle.jsx
├── App.js
├── index.css
└── index.js
- Primary: Blue tones (#0ea5e9)
- Secondary: Gray tones (#64748b)
- Background: Gradient backgrounds
- Text: Dark gray tones
- Font Family: Inter (Google Fonts)
- Font Weights: 300, 400, 500, 600, 700
- Cards: Rounded corners, shadow effects
- Buttons: Hover animations
- Forms: Modern input design
- Navigation: Fixed header, glass effect
- React.memo: BlogCard component optimized
- useMemo: Filtered blog list memoized
- useCallback: Event handlers optimized
- Lazy Loading: Page-based lazy loading
- Code Splitting: Route-based code splitting
npm start # Start development server
npm run build # Create production build
npm test # Run tests
npm run eject # Create React App eject (use with caution)- Create feature branch
- Develop necessary components
- Test
- Create pull request
- Mobile First: Mobile-first design approach
- Breakpoints:
- xs: 0px
- sm: 600px
- md: 960px
- lg: 1280px
- xl: 1920px
- Error Boundary: Application-wide error catching
- Toast Notifications: User notifications
- Loading States: Loading status display
- Fallback UI: Alternative interface in error states
- React Helmet: Meta tag management
- Semantic HTML: Meaningful HTML structure
- Alt Text: Visual accessibility
- Structured Data: Search engine optimization
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Create Pull Request
This project is licensed under the MIT License.
- Material-UI team
- React team
- Tailwind CSS team
- All open source contributors
Note: This project is developed for educational purposes and is continuously updated.