An open API service indexing awesome lists of open source software.

https://github.com/tanmoydhar1077/hobbyhub-client


https://github.com/tanmoydhar1077/hobbyhub-client

crud-operation javascript reactjs tawilwindcss

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# HobbyHub - A Local Hobby Group Organizer

🌐 **Live Site**: [https://hobbyhub-tanmoy.netlify.app/](https://hobbyhub-tanmoy.netlify.app/)

## πŸ“– Overview
HobbyHub is a dynamic platform designed to connect people through shared interests by allowing users to discover, join, or create local hobby-based groups. Whether it's reading, hiking, painting, or cooking, HobbyHub fosters real-world communities for real-world passions.

---

## πŸ“‹ Pages Overview

| Route | Page | Description | Protected |
|-------|------|-------------|-----------|
| `/` | 🏠 **Home** | Landing page with banner, featured groups, testimonials | ❌ |
| `/signin` | πŸ” **Login** | User authentication with email/password and Google | ❌ |
| `/signup` | πŸ“ **Register** | User registration with form validation | ❌ |
| `/allGroups` | πŸ“‹ **All Groups** | Browse all groups with search and filter | ❌ |
| `/groupDetails/:id` | πŸ“– **Group Details** | Individual group information and join option | βœ… |
| `/createGroup` | βž• **Create Group** | Form to create new hobby group | βœ… |
| `/myGroups` | πŸ‘€ **My Groups** | User's created groups with edit/delete options | βœ… |
| `/updateGroup/:id` | ✏️ **Update Group** | Edit existing group information | βœ… |
| `*` | ❌ **404 Not Found** | Error page for invalid routes | ❌ |

---

## 🎨 Dark Mode Implementation

HobbyHub features a comprehensive dark mode implementation with:

### πŸŒ™ Theme Features
- **System Preference Detection** - Automatically detects user's system theme
- **Persistent Storage** - Remembers user's theme choice across sessions
- **Smooth Transitions** - Animated theme switching with CSS transitions
- **Complete Coverage** - All components and pages support dark mode

### 🎯 Implementation Details
- **Context API** - Theme state management with React Context
- **Tailwind Dark Mode** - Utility-first approach with `dark:` variants
- **DaisyUI Integration** - Component library with built-in dark mode support
- **Custom Components** - All alerts, modals, and forms adapt to theme

### πŸ”§ Technical Stack
```javascript
// Theme Context Implementation
const ThemeContext = createContext();

// Tailwind Configuration
module.exports = {
darkMode: 'class',
plugins: [require('daisyui')]
}
```

---

## πŸ“‹ Table of Contents

- [πŸš€ Key Features](#-key-features)
- [πŸ› οΈ Technologies Used](#️-technologies-used)
- [πŸ“ Project Structure](#-project-structure)
- [⚑ Installation & Setup](#-installation--setup)
- [πŸ”— Repositories](#-repositories)
- [πŸ“‹ Pages Overview](#-pages-overview)
- [🎨 Dark Mode Implementation](#-dark-mode-implementation)
- [πŸ”’ Environment Variables](#-environment-variables)
- [πŸ“± Responsive Design](#-responsive-design)
- [πŸ§ͺ Testing](#-testing)
- [πŸ“„ License](#-license)

---

## πŸš€ Key Features

- πŸ” **Authentication System**
Secure login and registration using Firebase (Email/Password + Google Sign-In) with strong password validation and user feedback via SweetAlert2.

- πŸ›‘οΈ **Protected Routes**
Sensitive pages like group creation, personal groups, and updates are accessible only to authenticated users with protected routes.

- 🎨 **Unique and Responsive Design**
Custom UI design using Tailwind CSS v4 and DaisyUI, fully responsive for mobile, tablet, and desktop with modern glass-morphism effects.

- πŸŒ™ **Advanced Dark/Light Mode Toggle**
Comprehensive theme switching throughout the entire application with persistent user preference storage and smooth transitions.

- πŸ“… **Smart Event Management**
Groups with past start dates are automatically marked inactive, preventing new joins with dynamic status indicators.

- πŸ“¦ **Full CRUD Functionality**
Complete Create, Read, Update, Delete operations with real-time data updates from MongoDB database via secure Express server.

- 🎭 **Interactive UI Enhancements**
Integrated `React Awesome Reveal` for smooth animations, `React Tooltip` for helpful UX hints, and `SweetAlert2` for elegant notifications.

- πŸ” **Advanced Search & Filter**
Real-time search functionality with sorting options by date and category filtering.

- ⚑ **Performance Optimized**
Code splitting, lazy loading, and optimized bundle size for fast loading times.

---

## πŸ› οΈ Technologies Used

### Frontend
- **React 18** - Latest React features with concurrent rendering
- **Vite** - Lightning-fast build tool and dev server
- **Tailwind CSS v4** - Utility-first CSS framework with latest features
- **DaisyUI** - Tailwind CSS component library
- **React Router v7** - Client-side routing with new features

### Authentication & Backend
- **Firebase Authentication** - Secure user authentication
- **MongoDB** - NoSQL database for flexible data storage
- **Express.js** - RESTful API server

### UI Libraries & Tools
- **React Awesome Reveal** - Animation library for smooth transitions
- **React Tooltip** - Interactive tooltips for better UX
- **SweetAlert2** - Beautiful, responsive, customizable popup alerts
- **React Icons** - Popular icon packs as React components
- **React CountUp** - Animated counting numbers
- **Swiper.js** - Modern touch slider with hardware accelerated transitions

---

## πŸ“ Project Structure

```bash
HobbyHub-Client/
β”œβ”€β”€ πŸ“ public/
β”‚ β”œβ”€β”€ πŸ–ΌοΈ logo.png
β”‚ β”œβ”€β”€ πŸ–ΌοΈ vite.svg
β”‚ β”œβ”€β”€ πŸ“„ _redirects
β”‚ └── πŸ“ Fonts/
β”‚ └── πŸ”€ Malvie.otf
β”œβ”€β”€ πŸ“ src/
β”‚ β”œβ”€β”€ πŸ“„ main.jsx # Application entry point
β”‚ β”œβ”€β”€ πŸ“„ App.jsx # Root component
β”‚ β”œβ”€β”€ 🎨 App.css # Global application styles
β”‚ β”œβ”€β”€ 🎨 index.css # Global CSS with Tailwind imports
β”‚ β”œβ”€β”€ πŸ“ assets/ # Static assets
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ banner1.png
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ banner2.png
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ banner3.png
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ banner4.png
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ react.svg
β”‚ β”‚ └── πŸ“ images/
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ error.svg
β”‚ β”‚ β”œβ”€β”€ πŸ–ΌοΈ login.svg
β”‚ β”‚ └── πŸ–ΌοΈ signup.svg
β”‚ β”œβ”€β”€ πŸ“ components/ # Reusable UI components
β”‚ β”‚ β”œβ”€β”€ 🧩 Footer.jsx # Application footer
β”‚ β”‚ β”œβ”€β”€ 🧩 Groups.jsx # Group cards display
β”‚ β”‚ β”œβ”€β”€ 🧩 Navbar.jsx # Navigation with auth & theme toggle
β”‚ β”‚ β”œβ”€β”€ 🧩 Newsletter.jsx # Newsletter subscription
β”‚ β”‚ β”œβ”€β”€ 🧩 Spinner.jsx # Loading spinner component
β”‚ β”‚ β”œβ”€β”€ 🧩 Testimonials.jsx # User testimonials & stats
β”‚ β”‚ β”œβ”€β”€ 🧩 WhyJoin.jsx # Benefits section
β”‚ β”‚ └── πŸ“ Banner/
β”‚ β”‚ β”œβ”€β”€ 🧩 Banner.jsx # Hero carousel banner
β”‚ β”‚ └── 🎨 banner.css # Banner-specific styles
β”‚ β”œβ”€β”€ πŸ“ context/ # React Context providers
β”‚ β”‚ β”œβ”€β”€ βš™οΈ AuthContext.jsx # Authentication context
β”‚ β”‚ β”œβ”€β”€ πŸ”§ AuthProvider.jsx # Auth state management
β”‚ β”‚ β”œβ”€β”€ πŸŒ™ ThemeContext.jsx # Theme context
β”‚ β”‚ └── 🎨 ThemeProvider.jsx # Theme state management
β”‚ β”œβ”€β”€ πŸ“ firebase/ # Firebase configuration
β”‚ β”‚ └── πŸ”₯ firebase.config.js # Firebase app configuration
β”‚ β”œβ”€β”€ πŸ“ hooks/ # Custom React hooks
β”‚ β”‚ └── πŸͺ useTitle.js # Dynamic document title hook
β”‚ β”œβ”€β”€ πŸ“ layouts/ # Layout components
β”‚ β”‚ └── πŸ—οΈ Root.jsx # Main layout wrapper
β”‚ β”œβ”€β”€ πŸ“ pages/ # Page components
β”‚ β”‚ β”œβ”€β”€ 🏠 Home.jsx # Homepage with sections
β”‚ β”‚ β”œβ”€β”€ πŸ“‹ AllGroups.jsx # Browse all groups with search
β”‚ β”‚ β”œβ”€β”€ βž• CreateGroup.jsx # Create new group form
β”‚ β”‚ β”œβ”€β”€ πŸ‘€ MyGroups.jsx # User's created groups
β”‚ β”‚ β”œβ”€β”€ πŸ“ GroupDetails.jsx # Individual group details
β”‚ β”‚ β”œβ”€β”€ ✏️ UpdateGroup.jsx # Edit group information
β”‚ β”‚ β”œβ”€β”€ πŸ” Login.jsx # User login form
β”‚ β”‚ β”œβ”€β”€ πŸ“ Register.jsx # User registration form
β”‚ β”‚ └── ❌ NotFound.jsx # 404 error page
β”‚ └── πŸ“ routes/ # Routing configuration
β”‚ β”œβ”€β”€ πŸ›‘οΈ PrivateRoute.jsx # Protected route wrapper
β”‚ └── πŸ—ΊοΈ router.jsx # Application routing setup
β”œβ”€β”€ πŸ“„ package.json # Dependencies and scripts
β”œβ”€β”€ πŸ“„ package-lock.json # Locked dependency versions
β”œβ”€β”€ βš™οΈ vite.config.js # Vite configuration
β”œβ”€β”€ 🎨 tailwind.config.js # Tailwind CSS configuration
β”œβ”€β”€ πŸ“ eslint.config.js # ESLint configuration
β”œβ”€β”€ πŸ“„ index.html # HTML entry point
└── πŸ“– README.md # Project documentation
```

---

## ⚑ Installation & Setup

### Prerequisites
- Node.js (v18 or higher)
- npm or yarn package manager
- Git

### Clone the Repository
```bash
git clone https://github.com/TanmoyDhar1077/Hobbyhub-Client.git
cd Hobbyhub-Client
```

### Install Dependencies
```bash
npm install
# or
yarn install
```

### Environment Setup
Create a `.env.local` file in the root directory:
```env
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
```

### Run Development Server
```bash
npm run dev
# or
yarn dev
```

### Build for Production
```bash
npm run build
# or
yarn build
```

---

## πŸ“ Client Repository

πŸ”— **GitHub**: [HobbyHub-Client](https://github.com/TanmoyDhar1077/Hobbyhub-Client)

**Key Technologies:**
- React 18 with modern hooks
- Vite for blazing-fast development
- Tailwind CSS v4 + DaisyUI
- Firebase Authentication
- React Router v7
- SweetAlert2 for notifications
- React Awesome Reveal for animations

---

## πŸ› οΈ Server Repository

πŸ”— **GitHub**: [HobbyHub-Server](https://github.com/TanmoyDhar1077/Hobbyhub-Server)

**Key Technologies:**
- Node.js with Express.js
- MongoDB for data storage
- CORS for cross-origin requests
- Dotenv for environment security
- RESTful API architecture

---

## πŸ”’ Environment Variables

Environment variables are used to hide Firebase configuration and MongoDB credentials:

```env
# Firebase Configuration
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
```

> **Note:** Create a `.env.local` file in the project root and add your Firebase configuration variables.

---

## πŸ“± Responsive Design

HobbyHub is built with a mobile-first approach ensuring optimal experience across all devices:

### πŸ“Š Breakpoints
- **Mobile**: 320px - 768px
- **Tablet**: 768px - 1024px
- **Desktop**: 1024px+

### 🎯 Key Features
- Flexible grid layouts with CSS Grid and Flexbox
- Responsive typography with Tailwind's responsive utilities
- Touch-friendly interface with appropriate spacing
- Optimized images with proper aspect ratios
- Smooth animations that respect user's motion preferences

---

## πŸ§ͺ Testing

### Manual Testing Checklist
- βœ… Authentication (Email/Password & Google Sign-in)
- βœ… Protected routes functionality
- βœ… CRUD operations for groups
- βœ… Dark/Light mode toggle
- βœ… Responsive design across devices
- βœ… Form validations
- βœ… Search and filter functionality
- βœ… Loading states and error handling

### Browser Compatibility
- βœ… Chrome (Latest)
- βœ… Firefox (Latest)
- βœ… Safari (Latest)
- βœ… Edge (Latest)

---

## πŸš€ Performance Optimizations

- **Code Splitting** - Dynamic imports for route-based splitting
- **Lazy Loading** - Components loaded on demand
- **Image Optimization** - Proper sizing and format optimization
- **Bundle Analysis** - Regular monitoring of bundle size
- **Caching Strategy** - Service worker for offline functionality

---

## 🀝 Contributing

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

---

## πŸ“ž Contact

**Developer**: Tanmoy Dhar
**Email**: tanmoydhar1077@gmail.com
**GitHub**: [@TanmoyDhar1077](https://github.com/TanmoyDhar1077)
**LinkedIn**: [Tanmoy Dhar](https://www.linkedin.com/in/tanmoy-dhar-ripon-6126922ba/)

---

## πŸ“„ License

This project is developed as part of a course assignment and is not licensed for commercial use.

---

## 🌟 Acknowledgments

- **Firebase** - For robust authentication services
- **Tailwind CSS** - For the amazing utility-first CSS framework
- **DaisyUI** - For beautiful pre-built components
- **React Community** - For the incredible ecosystem and support

---

*Made with ❀️ by [Tanmoy Dhar](https://github.com/TanmoyDhar1077)*