A modern, full-featured e-commerce platform built with React and Firebase, showcasing best practices in front-end development and state management.
-
User Authentication
- Email/Password sign-up and login
- Google OAuth integration
- Persistent user sessions
- Secure authentication flow using Firebase Auth
-
Shopping Experience
- Browse products by categories
- Dynamic product filtering
- Shopping cart functionality
- Seamless checkout process
- Real-time cart updates
- Wishlist functionality
- Size guide for clothing
- Product reviews and ratings
- Responsive product grid layout
-
Product Management
- Dynamic category filtering
- Featured products showcase
- Detailed product pages
- Product image optimization
- Recently viewed products tracking
-
State Management
- Redux Toolkit implementation
- Optimized performance with Redux selectors
- Persistent cart state
- Centralized store management
-
Styling & UI
- Styled-components for component-level styling
- Responsive design
- Custom button components
- Dynamic navigation
- Cart dropdown preview
- Hero banner with featured collections
- Category showcase
- Featured products section
- Newsletter subscription
- Benefits highlights section
- Detailed product views
- Size guide integration
- Customer reviews and ratings
- Add to wishlist functionality
- Recently viewed products tracking
- Real-time cart updates
- Quantity adjustment
- Persistent cart state
- Cart summary
- Quick checkout process
- Frontend Framework: React.js
- Routing: React Router v6
- State Management: Redux Toolkit
- Authentication: Firebase Auth
- Database: Firebase Firestore
- Styling: Styled Components
- Type Checking: JavaScript
- Build Tool: Create React App
The project follows a modern React application architecture with:
- Component-based structure
- Container/Presentational pattern
- Redux slice pattern for state management
- Firebase integration for backend services
- Reusable styled components
- React Hooks for state and lifecycle management
src/
βββ components/ # Reusable UI components
βββ routes/ # Route components and layouts
βββ store/ # Redux store configuration and slices
βββ utils/ # Helper functions and Firebase config
βββ assets/ # Static assets and images
βββ styles/ # Global styles and theme
- Navigation: Responsive header with cart preview
- Directory: Dynamic category navigation
- Shop: Product listing with category filtering
- Cart: Real-time cart management with dropdown
- Checkout: Order summary and payment flow
- Authentication: User sign-in and registration forms
-
Redux Toolkit Integration
- Simplified Redux setup with createSlice
- Efficient state updates with ImmerJS
- Type-safe action creators
- Memoized selectors for performance
-
Firebase Integration
- Real-time database listeners
- Batch write operations
- Secure user authentication
- Document/Collection management
- Clone the repository
git clone https://github.com/your-username/crown-clothing.git- Install dependencies
cd crown-clothing
npm install-
Set up Firebase
- Create a Firebase project
- Enable Authentication (Email/Password and Google)
- Set up Firestore database
- Add Firebase config to environment variables
-
Start the development server
npm startCreate a .env file in the root directory:
REACT_APP_FIREBASE_API_KEY=your_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_auth_domain
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_storage_bucket
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_id- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE.md file for details.
- Create React App documentation
- Redux Toolkit documentation
- Firebase documentation
- Styled Components documentation
- React Router documentation
μ΄μ»€λ¨Έμ€ νλ«νΌ κ°λ° νλ‘μ νΈλ₯Ό ν΅ν΄ μ κ° κ°μ§ κΈ°μ λ ₯κ³Ό λ¬Έμ ν΄κ²° λ₯λ ₯μ μ¦λͺ νκ³ μ νμ΅λλ€. Reactμ Firebaseλ₯Ό κΈ°λ°μΌλ‘ ν μ΄ νλ‘μ νΈλ λ¨μν κΈ°μ ꡬνμ λμ΄, μ€μ μ¬μ©μ κ²½νμ κ³ λ €ν μλΉμ€λ₯Ό λ§λλ κ²μ λͺ©νλ‘ νμ΅λλ€. νΉν μν κ΄λ¦¬, μ±λ₯ μ΅μ ν, λ°μν λμμΈ κ΅¬ν κ³Όμ μμ νλ‘ νΈμλ κ°λ°μλ‘μμ μλμ ν¬κ² ν₯μμν¬ μ μμμ΅λλ€.
μ΄μ»€λ¨Έμ€ νλ«νΌμΌλ‘, μ€μκ° μν μ λ°μ΄νΈ, μ¬μ©μ μΈμ¦, μ₯λ°κ΅¬λ κ΄λ¦¬, μμ리μ€νΈ κΈ°λ₯, μν 리뷰 λ± μ’ ν©μ μΈ μΌν κ²½νμ μ 곡ν©λλ€.
-
μ¬μ©μ μΈμ¦
- μ΄λ©μΌ/λΉλ°λ²νΈ νμκ°μ λ° λ‘κ·ΈμΈ
- κ΅¬κΈ μμ λ‘κ·ΈμΈ ν΅ν©
- μΈμ μ μ§ κΈ°λ₯
- νμ΄μ΄λ² μ΄μ€ μΈμ¦μ ν΅ν 보μ κ°ν
-
μΌν κ²½ν
- μΉ΄ν κ³ λ¦¬λ³ μν λΈλΌμ°μ§
- λμ μν νν°λ§
- μ₯λ°κ΅¬λ κΈ°λ₯
- μνν κ²°μ νλ‘μΈμ€
- μ€μκ° μ₯λ°κ΅¬λ μ λ°μ΄νΈ
-
μν κ΄λ¦¬
- λμ μΉ΄ν κ³ λ¦¬ νν°λ§
- μΆμ² μν μΉμ
- μμΈ μν νμ΄μ§
- μν μ΄λ―Έμ§ μ΅μ ν
- μ΅κ·Ό λ³Έ μν μΆμ
-
μΌν κ²½ν
- μ€μκ° μ₯λ°κ΅¬λ
- μμ리μ€νΈ κΈ°λ₯
- μλ₯ μ¬μ΄μ¦ κ°μ΄λ
- μν 리뷰 λ° νμ
- λ°μν μν 그리λ λ μ΄μμ
-
ννμ΄μ§
- μΆμ² 컬λ μ νμ΄λ‘ λ°°λ
- μΉ΄ν κ³ λ¦¬ μΌμΌμ΄μ€
- μΆμ² μν μΉμ
- λ΄μ€λ ν° κ΅¬λ
- νν νμ΄λΌμ΄νΈ μΉμ
-
μ₯λ°κ΅¬λ
- μ€μκ° μ₯λ°κ΅¬λ μ λ°μ΄νΈ
- μλ μ‘°μ
- μ₯λ°κ΅¬λ μν μ μ§
- μ₯λ°κ΅¬λ μμ½
- λΉ λ₯Έ 체ν¬μμ νλ‘μΈμ€
-
μν κ΄λ¦¬
- Redux Toolkit ꡬν
- Redux μ λ ν°λ₯Ό ν΅ν μ±λ₯ μ΅μ ν
- μ₯λ°κ΅¬λ μν μ μ§
- μ€μ μ§μ€μ μ€ν μ΄ κ΄λ¦¬
-
μ€νμΌλ§ λ° UI
- Styled-componentsλ₯Ό νμ©ν μ»΄ν¬λνΈ λ 벨 μ€νμΌλ§
- λ°μν λμμΈ
- 컀μ€ν λ²νΌ μ»΄ν¬λνΈ
- λμ λ€λΉκ²μ΄μ
- μ₯λ°κ΅¬λ λλ‘λ€μ΄ ν리뷰
- νλ‘ νΈμλ νλ μμν¬: React.js
- λΌμ°ν : React Router v6
- μν κ΄λ¦¬: Redux Toolkit
- μΈμ¦: Firebase Auth
- λ°μ΄ν°λ² μ΄μ€: Firebase Firestore
- μ€νμΌλ§: Styled Components
- νμ 체ν¬: JavaScript
- λΉλ λꡬ: Create React App
νλμ μΈ React μ ν리μΌμ΄μ μν€ν μ²λ₯Ό λ°λ¦ λλ€:
- μ»΄ν¬λνΈ κΈ°λ° κ΅¬μ‘°
- 컨ν μ΄λ/νλ μ ν μ΄μ ν¨ν΄
- Redux μ¬λΌμ΄μ€ ν¨ν΄μ ν΅ν μν κ΄λ¦¬
- νμ΄μ΄λ² μ΄μ€ λ°±μλ μλΉμ€ ν΅ν©
- μ¬μ¬μ© κ°λ₯ν μ€νμΌ μ»΄ν¬λνΈ
- React Hooksλ₯Ό ν΅ν μν λ° μλͺ μ£ΌκΈ° κ΄λ¦¬
src/
βββ components/ # μ¬μ¬μ© κ°λ₯ν UI μ»΄ν¬λνΈ
βββ routes/ # λΌμ°νΈ μ»΄ν¬λνΈ λ° λ μ΄μμ
βββ store/ # Redux μ€ν μ΄ μ€μ λ° μ¬λΌμ΄μ€
βββ utils/ # ν¬νΌ ν¨μ λ° Firebase μ€μ
βββ assets/ # μ μ μμ
λ° μ΄λ―Έμ§
βββ styles/ # μ μ μ€νμΌ λ° ν
λ§
- λ€λΉκ²μ΄μ : μ₯λ°κ΅¬λ νλ¦¬λ·°κ° ν¬ν¨λ λ°μν ν€λ
- λλ ν 리: λμ μΉ΄ν κ³ λ¦¬ λ€λΉκ²μ΄μ
- μ΅: μΉ΄ν κ³ λ¦¬ νν°λ§μ΄ μλ μν λͺ©λ‘
- μ₯λ°κ΅¬λ: λλ‘λ€μ΄μ΄ μλ μ€μκ° μ₯λ°κ΅¬λ κ΄λ¦¬
- κ²°μ : μ£Όλ¬Έ μμ½ λ° κ²°μ νλ¦
- μΈμ¦: μ¬μ©μ λ‘κ·ΈμΈ λ° νμκ°μ νΌ
-
Redux Toolkit ν΅ν©
- createSliceλ₯Ό ν΅ν κ°μνλ Redux μ€μ
- ImmerJSλ₯Ό ν΅ν ν¨μ¨μ μΈ μν μ λ°μ΄νΈ
- νμ μΈμ΄ν μ‘μ μμ±μ
- μ±λ₯μ μν λ©λͺ¨μ΄μ μ΄μ λ μ λ ν°
-
Firebase ν΅ν©
- μ€μκ° λ°μ΄ν°λ² μ΄μ€ 리μ€λ
- μΌκ΄ μ°κΈ° μμ
- μμ ν μ¬μ©μ μΈμ¦
- λ¬Έμ/컬λ μ κ΄λ¦¬
- μ μ₯μ ν΄λ‘
git clone https://github.com/your-username/crown-clothing.git- μμ‘΄μ± μ€μΉ
cd crown-clothing
npm install-
Firebase μ€μ
- Firebase νλ‘μ νΈ μμ±
- μΈμ¦ νμ±ν (μ΄λ©μΌ/λΉλ°λ²νΈ λ° κ΅¬κΈ)
- Firestore λ°μ΄ν°λ² μ΄μ€ μ€μ
- νκ²½ λ³μμ Firebase μ€μ μΆκ°
-
κ°λ° μλ² μμ
npm startλ£¨νΈ λλ ν 리μ .env νμΌ μμ±:
REACT_APP_FIREBASE_API_KEY=your_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_auth_domain
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_storage_bucket
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_id- μ μ₯μ ν¬ν¬νκΈ°
- κΈ°λ₯ λΈλμΉ μμ± (
git checkout -b feature/λ©μ§κΈ°λ₯) - λ³κ²½μ¬ν μ»€λ° (
git commit -m 'λ©μ§ κΈ°λ₯ μΆκ°') - λΈλμΉμ νΈμ (
git push origin feature/λ©μ§κΈ°λ₯) - Pull Request μ΄κΈ°
μ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€λ₯Ό λ°λ¦ λλ€ - μμΈν λ΄μ©μ LICENSE.md νμΌμ μ°Έμ‘°νμΈμ.
- Create React App λ¬Έμ
- Redux Toolkit λ¬Έμ
- Firebase λ¬Έμ
- Styled Components λ¬Έμ
- React Router λ¬Έμ



