WhereIsIt
WhereIsIt is a lost and found platform designed to help people reconnect with their lost belongings or claim items they have found. The platform allows users to post details about lost or found items, search for items, and manage their posts. It promotes community collaboration to solve real-world problems.
-
User Authentication:
- Email and password-based login/signup.
- Social login options (e.g., Google).
- JWT-based private routes for secure access.
-
Lost and Found Management:
- Add posts for lost or found items with details such as title, category, location, and description.
- Update and delete posts.
-
Search and Filter:
- Search items by title or location.
- Filter items by type (Lost or Found) and category (e.g., Pets, Documents, Gadgets).
-
Item Recovery:
- Mark items as recovered with details like recovery date and location.
- Separate page to manage all recovered items.
-
Dynamic Titles:
- Each page has dynamic titles and meta descriptions for better UX and SEO.
-
Responsive Design:
- Fully responsive design optimized for desktop, tablet, and mobile devices.
- React - For building the UI.
- React Router DOM - For routing and navigation.
- Tailwind CSS - For styling.
- DaisyUI - For pre-designed UI components.
- Flowbite-React - For additional UI components.
- React-Helmet-Async - For managing dynamic page titles and meta tags.
- Axios - For making API calls.
- React Icons - For using icons.
- React Hot Toast - For toast notifications.
- Lottie React - For animations.
- SweetAlert2 - For modal-based alerts.
- Date-FNS - For formatting dates.
- React Date Picker - For collecting and formatting dates.
- React Simple Typewriter - For animated typewriter effects.
- Framer Motion - For a simple animated object.
Here is a list of the dependencies used in this project along with their versions:
- axios:
^1.7.9
- date-fns:
^4.1.0
- firebase:
^11.1.0
- flowbite:
^2.5.2
- flowbite-react:
^0.10.2
- localforage:
^1.10.0
- lottie-react:
^2.4.0
- match-sorter:
^8.0.0
- motion:
^11.15.0
- prop-types:
^15.8.1
- react:
^18.3.1
- react-datepicker:
^7.5.0
- react-dom:
^18.3.1
- react-helmet-async:
^2.0.5
- react-hot-toast:
^2.4.1
- react-icons:
^5.4.0
- react-router-dom:
^7.1.0
- react-simple-typewriter:
^5.0.1
- sort-by:
^1.2.0
- sweetalert2:
^11.15.3
-
Clone the repository:
git clone <repository_url>
-
Navigate to the project directory:
cd whereisit
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open the app in your browser:
http://localhost:5173
Create a .env
file in the root directory and add the following variables:
VITE_API_URL=http://localhost:5000
ACCESS_TOKEN_SECRET=your_jwt_secret
Replace your_jwt_secret
with your JWT secret key.
The project communicates with a Node.js/Express backend and MongoDB database. Key API endpoints:
-
Authentication:
/jwt
- Generate JWT token./logout
- Clear the token.
-
Posts:
/addPost
- Add a new lost/found post./allPosts
- Get all posts (supports search and filter)./postDetails/:id
- Get details of a single post./updatePost/:id
- Update a specific post./post/:id
- Delete a post.
-
Recovered Items:
/addRecovered
- Mark an item as recovered./allRecovered/:email
- Get all recovered items for a specific user.