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
.env
file and add the following variables:
REACT_APP_BASE_URL=https://blog-backend-clarusway.herokuapp.com
Note: 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.