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
- Host: GitHub
- URL: https://github.com/tanmoydhar1077/hobbyhub-client
- Owner: TanmoyDhar1077
- Created: 2025-06-02T08:15:10.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-18T20:54:23.000Z (12 months ago)
- Last Synced: 2025-06-18T21:37:12.522Z (12 months ago)
- Topics: crud-operation, javascript, reactjs, tawilwindcss
- Language: JavaScript
- Homepage:
- Size: 1.27 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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)*