A Project Dedicated To Reducing Post-Harvest Tomato Losses in Nigeria Using Technology
# 🌱 FreshAm Backend API
FreshAm is an AI-powered tomato supply chain platform that connects farmers, buyers, warehouse operators, logistics providers, and administrators to reduce post-harvest tomato losses in Nigeria.
The platform combines a digital marketplace with Digital Twin technology to monitor tomato freshness, predict spoilage risks, and improve supply chain efficiency.
---
# Tech Stack
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT Authentication
- Joi Validation
- Cloudinary
- Multer
- Nodemailer
- bcryptjs
---
# Current Architecture
```
Authentication
│
├── Users
│
├── Farmer Profile
│
├── Buyer Profile
│
├── Tomato Batch
│
└── Marketplace Listing
```
Upcoming Modules
```
Orders
│
Storage Booking
│
Logistics Booking
│
Payments
│
Notifications
│
Digital Twin
│
Admin Dashboard
```
---
# Project Structure
```
src/
config/
constants/
controllers/
middlewares/
models/
repositories/
routes/
services/
utils/
validators/
```
---
# Features Completed âś…
## Authentication
- User Registration
- Login
- JWT Authentication
- Email Verification (OTP)
- Resend Verification OTP
- Forgot Password
- Reset Password
- Role-based Authorization
- Secure Password Hashing
---
## User Module
- Get Current User
- Update User Profile
---
## Farmer Profile
- Create Farmer Profile
- View Farmer Profile
- Update Farmer Profile
---
## Buyer Profile
- Create Buyer Profile
- View Buyer Profile
- Update Buyer Profile
---
## Tomato Batch Module
Farmers can:
- Register Tomato Batch
- Upload Batch Image
- View Their Batches
- Update Batch Information
Tomato Batch includes:
- Batch Number
- Tomato Variety
- Grade
- Quantity
- Unit
- Harvest Date
- Expiry Date
- Farm Location
- Image
- Status
Images are uploaded to Cloudinary.
---
## Marketplace Module
Farmers can:
- Publish Tomato Batch
- Set Selling Price
- Add Description
Buyers can:
- Browse Published Listings
---
# Database Relationships
```
User
│
├── FarmerProfile
│ │
│ …