Findify App is a web application designed to help users find their lost items or upload items they find to help others.
- User Authentication: Users can create accounts and log in to the website.
- View Lost Items: Authenticated users can view all published posts about lost items.
- Contact the Finder: If a user finds their lost item listed on the website, they can click on "Contact the Finder" to open an email template to contact the person who found the item.
- Report Unauthenticated Finders: Users can report unauthenticated finders, which will be reviewed by the admin.
- Create New Posts: Users who found lost items can create new posts to inform others about the found item.
- Track Found Items: When a lost item is found and returned to its owner, the post about the lost item is automatically marked as "Item Found" and removed.
- Admin Panel: The admin can log in to manage unauthenticated users, confirm their authenticity, and remove them from the system along with their posts.
- Node.js: Backend server environment.
- Express.js: Web application framework for Node.js.
- MongoDB: NoSQL database for storing user data and posts.
- Mongoose: MongoDB object modeling tool for Node.js.
- Bootstrap: Frontend framework for building responsive and mobile-first websites.
- EJS (Embedded JavaScript): Templating engine for - generating HTML markup with JavaScript.
- JWT (JSON Web Tokens): Authentication mechanism for securing API endpoints.
- bcrypt: Library for hashing passwords before storing them in the database.
- dotenv: Library for loading environment variables from a .env file.
- express-validator: Middleware for validating incoming request data.
- cors: Middleware for enabling Cross-Origin Resource Sharing (CORS) in Express.js. jsonwebtoken: Library for generating and verifying JSON Web Tokens.
- jwt-decode: Library for decoding JSON Web Tokens on the client-side.
- multer: Middleware for handling multipart/form-data, primarily used for file uploads.
- GET /: Get all published posts about lost items.
- Get /login: Render Login Page.
- Get /signup:Render Register Page.
- GET /admin: Get unauthenticated users (for admin only).
- POST /signup: Register a new user.
- POST /login: Login existing users.
- POST /logout: User logout and Remove Token.
- POST /items: Create a new post about a found item.
- Put /users/:id: Report an unauthenticated finder.
- Put /items/:itemId: Mark this item as delivered to his owner.
- DELETE /admin/:userId: Remove a user and their posts from the system (for admin only).
- Get /items/:id: Get item by id.
- Clone the repository:
git clone https://github.com/asmaa-elfatayry/Findify-App.git
- Navigate to the project directory:
cd findlostthings-app
- Install dependencies:
npm install
- Set up environment variables:
Create a .env
file in the root directory and define the following variables:
PORT=8000
MONGO_URI=your_mongodb_uri
JWT_SECRET=your_jwt_secret
- Start the server:
npm start
Feel free to contribute to this project by submitting pull requests.
© Asmaa-Elfatayry - [2024]