Nelami is an innovative platform designed to connect buyers and sellers through a bidding system where buyers can bid on products that the sellers post and the top bidder wins the auction when it ends. This repository contains the source code and documentation for the Nelami project.
- User Authentication: Secure login and registration for users.
- Bidding System: Seamless bidding system for participating in auctions.
- User Profiles: Manage user profiles with detailed information.
- Product Listings: Browse and search for available products.
- Email Notifications: Get updates through emails.
- Notifications: Real-time updates are made through in-app notifications.
- Payment Integration: Secure payment processing for transactions.
- Admin Dashboard: Interactive admin interface for managing products and users.
- Responsive Design: Optimized for both desktop and mobile platforms.
- Messaging: Real-time messaging between users.
- Frontend: React.js, Redux, Bootstrap
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens)
- Email Templating: EJS
- Payment Gateway: Stripe with webhook
- Real-Time Communication: Socket.IO
- Deployment: VPS
nelami/
└── frontend/
├───public/
├───src/
| ├───Components/
| │ ├───conversations/
| │ ├───Footer/
| │ ├───Header/
| │ ├───Loader/
| │ ├───MailchimpFormContainer/
| │ ├───message/
| │ └───ProductCard/
| ├───helpers/
| ├───hooks/
| ├───pages/
| │ ├───AdminDashboard/
| │ │ ├───AllProducts/
| │ │ ├───AllUsers/
| │ │ ├───ApprovalProducts/
| │ │ ├───EditFeatures/
| │ │ ├───Profile/
| │ │ ├───Settings/
| │ │ └───StatsDashboard/
| │ ├───CategoryPage/
| │ ├───Checkout/
| │ ├───Contact/
| │ ├───Dashboard/
| │ │ ├───MyBids/
| │ │ ├───MyProducts/
| │ │ ├───MyWishlist/
| │ │ ├───Profile/
| │ │ ├───SafetyTips/
| │ │ ├───Settings/
| │ │ └───StatsDashboard/
| │ ├───Error/
| │ ├───ForgotPassword/
| │ ├───Home/
| │ ├───Login/
| │ ├───Logout/
| │ ├───Messenger/
| │ ├───PackagesPricing/
| │ ├───Payment/
| │ ├───ProductForms/
| │ │ ├───Misc/
| │ │ ├───Properties/
| │ │ └───Vehicles/
| │ ├───ProductsPage/
| │ ├───ResetPassword/
| │ ├───SellerProfile/
| │ ├───SignUp/
| │ └───SingleProduct/
| ├───reducers/
| └───utils/
├───.env
├───index.html
├───vite.config.js
└───package.json
nelami/
└── backend/
├───config/
| └── [configuration files like config.env]
├───controllers/
├───middleware/
├───models/
├───routes/
├───utils/
├───__tests__/
| └───controllers/
├───app.js
├───server.js
└───package.json
- Node.js (v14.x or higher)
-
Clone the repository:
git clone https://github.com/Hamzi-SE/nelami.git cd nelami
-
Install dependencies:
cd backend npm install cd .. cd frontend npm install cd ..
-
Set up environment variables:
Create a
.env
file in the frontend folder and add the following variables:REACT_APP_MAILCHIMP_U=your_mailchimp_user_key REACT_APP_MAILCHIMP_ID=your_mailchimp_list_id REACT_APP_STRIPE_PK=your_stripe_publishable_key REACT_APP_URL=http://localhost:3000 REACT_APP_SOCKET_URL=http://localhost:8080 REACT_APP_API_URL=http://localhost:8000
Create a
config.env
file in the backend/config folder and add the following variables:PORT=8000 DB_URI=mongodb+srv://<username>:<password>@cluster0.mongodb.net/nelami?retryWrites=true&w=majority FRONTEND_URL=http://localhost:3000 JWT_SECRET=your_jwt_secret JWT_EXPIRE=7d COOKIE_EXPIRE=7 SMTP_SERVICE=gmail SMTP_MAIL=youremail@gmail.com SMTP_PASSWORD=your_smtp_password SMTP_HOST=smtp.gmail.com SMTP_PORT=465 CLOUDINARY_NAME=your_cloudinary_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret STRIPE_API_KEY=your_stripe_api_key STRIPE_SECRET_KEY=your_stripe_secret_key STRIPE_WEBHOOK_SECRET_DEV=your_stripe_webhook_secret_key_for_dev STRIPE_WEBHOOK_SECRET_PROD=your_stripe_webhook_secret_key_for_prod
Make sure to replace the placeholder values with your actual configuration details before running the application.
-
Run the application:
cd frontend npm start
Open another terminal and go to backend folder
cd backend npm run dev
This will start both the server and the client in development mode.
We welcome contributions to Nelami! To contribute, please fork the repository, create a new branch, and submit a pull request.
- Fork the repository
- Create a new branch (
git checkout -b feature/YourFeature
) - Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/YourFeature
) - Open a pull request
This project is licensed under the MIT License - see the LICENSE file for details.