Agrinet is a decentralized agricultural trading and service platform built to enhance transparency, trust, and efficiency in agricultural markets. It connects producers, consumers, and service providers while ensuring secure transactions, reputation-based ratings, and localized economic sustainability.
- Direct Market Access: Producers list goods, services, and contracts.
- Agrotourism Integration: Farmers can offer farm tours, events, and educational workshops.
- Service Marketplace: Users can provide or request agricultural services (e.g., logistics, maintenance).
- LBTAS (Leveson-Based Trade Assessment Scale): Ensures a trust-based rating system.
- Dialog Recorder: Logs key transaction details for security and auditing.
- Machine Scrub Module: Filters and verifies transaction data.
- McEliese Key Generation: Ensures secure user identification.
- Key Transmission Limits: Auto-retirement after 3, 6, 9, 12, or 365 transmissions.
- Multi-Factor Verification: Email/phone validation with retry & lockout security.
- Production Progress Reporting: Allows contract buyers to track order status.
- Real-Time Notifications: Updates on market trends, contract changes, and service requests.
- Query market and weather data through SMS using simple text commands.
- Supports local languages and queues messages offline with delivery confirmation.
- Deposit & Donations to NTARI Account: Supports decentralized funding.
- Automated Payouts: Ensures secure fund disbursements upon transaction completion.
- User Profiles & Logs: Maintains key issuance logs parallel to user profiles.
- Geo-Filtering & Search Optimization: Enables market visibility based on location.
- Plant spacing recommendations for common crops.
- Compatibility matrix to plan companion planting.
- Growth projections and seasonal schedules with visual grid layouts.
- Frontend: React with Next.js (responsive site structure)
- Backend: Node.js (API handling)
- Database: Amazon DynamoDB (for storing users, contracts, and transactions)
- Security: OAuth 2.0 / McEliese Key Cryptography
- Real-Time Processing: Webhooks & PING System
- Clone the repository
git clone https://github.com/YOUR_USERNAME/Fruitful.git
cd Agrinet
- Setup the backend
cd backend
npm install
node server.js
- Deploy the frontend
cd frontend
npm install
npm run dev
For local development, set the NEXT_PUBLIC_BACKEND_URL environment variable to your backend's URL before running the frontend, for example:
NEXT_PUBLIC_BACKEND_URL=http://localhost:5000 npm run dev
Only environment variables prefixed with NEXT_PUBLIC_ are exposed to the browser, so this prefix is required.
Alternatively, configure a proxy so that requests to /api are forwarded to the backend.
The backend now uses Amazon DynamoDB. Set the following variables in your environment or .env file:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONDYNAMODB_ENDPOINT(optional, for DynamoDB Local e.g.http://localhost:8000)TWILIO_SIDTWILIO_AUTH_TOKENTWILIO_FROM_NUMBERTWILIO_STATUS_CALLBACK_URL(optional for delivery confirmation)
The backend includes a utility for planning square foot gardens.
const { planSeason } = require('./backend/utils/squareFootGardening');
const layout = [
['tomato', 'basil'],
['lettuce', null],
];
const plan = planSeason(layout, '2024-03-01', 'spring');
console.log(plan.grid);
console.log(plan.schedule);The planner validates companion planting, projects growth timelines, and renders an ASCII grid of the garden.
Additional chat interface endpoints (e.g., /conversations, /messages/:id, /stream/:id) and their expected JSON
structures are documented inline in the frontend components
Sidebar.jsx and
ChatWindow.jsx.
{
"name": "John Doe",
"email": "johndoe@example.com",
"location": "Kentucky, USA",
"role": "producer"
}
{
"producerId": "user123",
"type": "Tomato",
"variety": "Roma",
"category": "food",
"amountNeeded": "500 lbs",
"dateNeeded": "2025-03-15",
"pingRate": "weekly"
}
{
"transactionId": "tx987",
"rating": 4
}
We welcome contributions from the community! π
- Fork the repo
- Create a feature branch
- Submit a pull request
Run the following script to detect any hardcoded localhost references before committing code:
./scripts/list-hardcoded-urls.shThe script lists offending lines and exits with a nonzero status if any are found.
Existing references known to be safe are tracked in scripts/hardcoded-url-allowlist.txt.
AGPL, GNU-3οΏ½
- NTARI https://www.ntari.org/
- Email - tech@ntari.org
- Slack - Join our community for discussions!