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

https://github.com/nurislam243/techtinker-client-side

TechTinker is a responsive service-sharing app for tech device repairs. Users can add, book, and manage services securely with Firebase Auth, JWT, and MongoDB. Built with React, Tailwind CSS, and Express.
https://github.com/nurislam243/techtinker-client-side

cors expressjs firebase-auth jwt mongodb nodejs react-router reactjs tailwindcss

Last synced: 3 months ago
JSON representation

TechTinker is a responsive service-sharing app for tech device repairs. Users can add, book, and manage services securely with Firebase Auth, JWT, and MongoDB. Built with React, Tailwind CSS, and Express.

Awesome Lists containing this project

README

          

# ๐Ÿ’ป TechTinker - Tech Device Service Sharing Platform

**TechTinker** is a full-featured, responsive service-sharing web application where users can offer and book various tech device-related services. The platform focuses on smooth user experience, secure authentication, and seamless service interactions with modern UI/UX design.

---
## Home Page-
![TechTinker Home Page](src/assets/Screenshot%20(117).png)

## ๐ŸŒ Live Website

๐Ÿ”— **Live Site Link**: [https://techtinker2.web.app/](https://techtinker2.web.app/)

๐Ÿ”— **Server Repository**: [https://github.com/nurislam243/TechTinker-server-side](https://github.com/nurislam243/TechTinker-server-side)

---

## ๐Ÿ“Œ Selected Category

> **Electronic Item Repairing Services**

---

## ๐Ÿš€ Core Features

- ๐Ÿ” **Authentication**: Secure login & registration using **Firebase Authentication** with Email/Password and Google Sign-In.
- โž• **Add / Manage Services**: Users can add, update, and delete services they provide.
- ๐Ÿ“ฆ **Service Booking**: Any logged-in user can book available services with details.
- ๐Ÿงพ **Status Update**: Service providers can update status (Pending โ†’ Working โ†’ Completed).
- ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ **Dashboard Menu**: Users get a personalized dashboard with 4 private routes.
- ๐Ÿ” **Search Feature**: Easily search services by name on the All Services page.
- ๐ŸŒ“ **Dark/Light Theme Toggle**: System-wide theme customization with one-click toggle.
- ๐ŸŽฏ **Protected Routes**: JWT-based route protection for sensitive pages.
- ๐Ÿ’ฌ **SweetAlert2**: Stylish alerts for all actions (no default alert).
- ๐Ÿ“ฑ **Fully Responsive**: Optimized for Mobile, Tablet, and Desktop devices.
- ๐Ÿง  **Persistent Login**: Users remain logged in even after page reload (JWT verified).
- ๐Ÿงข **Dynamic Titles**: Page title updates automatically based on route using `react-helmet-async`.
- ๐Ÿšซ **404 Page**: Custom error page for invalid routes with a "Go Home" button.

---

## ๐Ÿ†• Extra Features

- ๐Ÿ”ฝ **Shrinkable Navbar with Top Bar**:
- Topbar hides and navbar height shrinks on scroll for modern UI.
- โญ **Service Review & Rating System**:
- Users can leave reviews and star ratings on service detail page.
- Other users can also view these reviews and ratings.
- ๐Ÿงฒ **Sticky Scroll Effects**:
- Scroll-based visual enhancements for smooth user experience.

---

---

## ๐Ÿšฆ React Router Routes Overview

The application uses `react-router-dom` for client-side routing with nested routes and loader support.

### ๐ŸŒ Main Layout Routes

| Route Path | Component | Access | Description |
|------------------------|------------------------|------------------|-----------------------------------------------------------|
| `/` | `Home` | Public | Landing page |
| `/services` | `AllServices` | Public | Displays all available services (with loader) |
| `/services/:id` | `ServiceDetails` | ๐Ÿ”’ Private | Detailed view of a single service, with reviews/ratings |
| `/add-service` | `AddService` | ๐Ÿ”’ Private | Authenticated users can add a new service |
| `/manage-service` | `ManageService` | ๐Ÿ”’ Private | Manage added services (update/delete) |
| `/book-service/:id` | `BookService` | ๐Ÿ”’ Private | Book a service through pre-filled form |
| `/my-bookings` | `Booked` | ๐Ÿ”’ Private | List of services booked by the user |
| `/service-to-do` | `ServiceToDo` | ๐Ÿ”’ Private | Service provider's to-do list |
| `/register` | `Register` | Public | Registration page |
| `/login` | `Login` | Public | Login with email/password or Google |
| `*` (invalid routes) | `ErrorPage` | Public | Custom 404 page |

- ๐Ÿ›ก๏ธ `PrivateRoute` is used to protect all routes that require authentication.
- ๐Ÿ“ฆ Loaders are used in `/services` and `/services/:id` to fetch data from the backend.
- ๐Ÿ”„ `HydrateFallback: Spinner` is used to show a loader while route data is being fetched.

---

## ๐Ÿ› ๏ธ Technologies Used

### ๐Ÿ”ง Frontend

- **React.js**
- **Tailwind CSS**
- **DaisyUI**
- **React Router DOM**
- **Axios**
- **Firebase Authentication**
- **React Firebase Hooks**
- **React Tooltip**
- **React Helmet Async**
- **React Rating**
- **Framer Motion**
- **React Awesome Reveal**
- **React Lottie**
- **Date-fns**
- **SweetAlert2**

### ๐ŸŒ Backend

- **Node.js**
- **Express.js**
- **MongoDB**
- **JWT (jsonwebtoken)**
- **dotenv**
- **CORS**

## โš™๏ธ Installation & How to Run Locally

### ๐Ÿ”ง Prerequisites
- Node.js (v16 or above) installed
- npm (comes with Node.js) or yarn installed
- Git installed
- MongoDB installed locally or have access to a MongoDB cloud instance
- Firebase project setup (for authentication)

---

### ๐Ÿ“ฅ Clone the Repositories

```bash
# Clone Client Repository
git clone https://github.com/your-username/techtinker-client.git
cd techtinker-client

# Install Client Dependencies
npm install

# Create .env file in TechTinker-client with the following:
# (replace with your actual Firebase credentials)
VITE_apiKey=your_api_key
VITE_authDomain=your_auth_domain
VITE_projectId=your_project_id
VITE_storageBucket=your_storage_bucket
VITE_messagingSenderId=your_sender_id
VITE_appId=your_app_id

# Start Client
npm run dev