Skip to content

iamfatihay/Blog-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Blog App - Modern React Blog Platform

This project is a user-friendly blog platform developed using modern React technologies.

πŸš€ Features

✨ Modern UI/UX

  • 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

πŸ”§ Technical Features

  • 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

πŸ“± User Experience

  • 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

πŸ›‘οΈ Security and Performance

  • 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

πŸ› οΈ Installation

Requirements

  • Node.js (v16 or higher)
  • npm or yarn

Steps

  1. Clone the project:
git clone <repository-url>
cd Blog-App
  1. Install dependencies:
npm install
  1. 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.

  1. Start the project:
npm start
  1. Open in browser:
http://localhost:3000

πŸ“ Project Structure

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

🎨 Design System

Color Palette

  • Primary: Blue tones (#0ea5e9)
  • Secondary: Gray tones (#64748b)
  • Background: Gradient backgrounds
  • Text: Dark gray tones

Typography

  • Font Family: Inter (Google Fonts)
  • Font Weights: 300, 400, 500, 600, 700

Components

  • Cards: Rounded corners, shadow effects
  • Buttons: Hover animations
  • Forms: Modern input design
  • Navigation: Fixed header, glass effect

πŸš€ Performance Optimizations

  1. React.memo: BlogCard component optimized
  2. useMemo: Filtered blog list memoized
  3. useCallback: Event handlers optimized
  4. Lazy Loading: Page-based lazy loading
  5. Code Splitting: Route-based code splitting

πŸ”§ Development

Available Scripts

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)

Adding New Features

  1. Create feature branch
  2. Develop necessary components
  3. Test
  4. Create pull request

πŸ“± Responsive Design

  • Mobile First: Mobile-first design approach
  • Breakpoints:
    • xs: 0px
    • sm: 600px
    • md: 960px
    • lg: 1280px
    • xl: 1920px

πŸ›‘οΈ Error Management

  • Error Boundary: Application-wide error catching
  • Toast Notifications: User notifications
  • Loading States: Loading status display
  • Fallback UI: Alternative interface in error states

πŸ“ˆ SEO Optimization

  • React Helmet: Meta tag management
  • Semantic HTML: Meaningful HTML structure
  • Alt Text: Visual accessibility
  • Structured Data: Search engine optimization

🀝 Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Create Pull Request

πŸ“„ License

This project is licensed under the MIT License.

πŸ™ Acknowledgments

  • Material-UI team
  • React team
  • Tailwind CSS team
  • All open source contributors

Note: This project is developed for educational purposes and is continuously updated.