Inspiration
Our research showed that there's an increasing desire among consumers to know where their food comes from, support local businesses, and access fresher, often more sustainable produce. Many small to medium-sized farms lack the resources and marketing expertise to effectively reach a broad consumer base beyond their immediate local area or farmers' markets. Consumers often struggle to find local farms offering specific products, their opening hours, location details, and other essential information. SO we thought that what if there is a platform where consumers can build a more direct relationship with the people who grow their food, fostering trust and understanding of agricultural practices.
What it does
FarmFinder is a web application designed to connect consumers directly with local farm shops and producers in their vicinity. It provides a user-friendly interface for:
Discovery: Easily browse and search for local farms based on location, product type (e.g., fruits, vegetables, dairy, meat, honey), farm type (e.g., organic, free-range), and keywords. Information: View detailed farm profiles including: Farm name and owner information. Address, contact details, and operating hours. Products offered with potential availability information. Farm descriptions highlighting their practices and ethos. Photos of the farm and its products. Average customer ratings and reviews(something to explore).
For Farmers, the major advantages would be as follows:
Increased Visibility: Reach a wider audience of local consumers actively seeking farm-fresh products. Direct Communication (Optional): Ability to respond to consumer inquiries directly through the platform.
How we built it
Frontend: We chose React as our primary frontend framework for its component-based architecture, virtual DOM for efficient updates, and rich ecosystem of libraries. This allowed us to build a modular and maintainable user interface for both consumers and farmers. Google Maps Platform with React Wrapper to integrate interactive maps for displaying farm locations and enabling location-based searches.
Backend: Node.js with Express.js: We opted for a JavaScript runtime environment (Node.js) and the popular Express.js framework for building our backend API. This allows for efficient handling of requests and responses, and a consistent language across the frontend and backend. RESTful API Design: We designed a RESTful API to handle communication between the React frontend and the MongoDB database, managing farm data, user information, and potentially search queries.
Database: MongoDB Atlas: We selected MongoDB Atlas, a fully managed cloud database service, for its flexibility in handling diverse data structures (like farm profiles with varying product lists), scalability, and ease of integration with Node.js. Its document-oriented nature is well-suited for storing farm details and their associated information.
Data Flow and Management: State Management (e.g., Context API, Redux Toolkit - depending on complexity): To manage application state effectively, especially for user authentication, filter settings, and the list of displayed farms. For an MVP, React's Context API might suffice for simpler state management. Axios or Fetch API: For making HTTP requests from the React frontend to our Node.js/Express.js backend API.
Geocoding: We would integrate with a geocoding service (e.g., Google Maps Platform Geocoding API, Mapbox Geocoding API) to convert farm addresses into latitude and longitude coordinates for map display and location-based searching.
Challenges we ran into
Data Acquisition: Populating the initial database with farm information would be a significant hurdle. We might rely on publicly available data sources (if any), manual input of a limited set of farms, or even a simplified onboarding process for farmers to add their information. UI/UX Design and Implementation: Creating an intuitive and visually appealing user interface within the time constraints. Balancing features with simplicity for the MVP. API Key Management and Costs: Managing and potentially limiting the usage of external APIs like Google Maps.
Accomplishments that we're proud of
Intuitive User Interface: A clean and easy-to-navigate design for both consumers and farmers. Basic Search and Filtering: Implementation of core search functionality based on location and product type. Integration with Mapping Services: Successful display of farm locations on a map with navigation capabilities.
What we learned
Full-Stack JavaScript Development: We solidified our understanding of building complete web applications using JavaScript across both the frontend (React) and backend (Node.js/Express.js).
Frontend Framework Proficiency (React): We deepened our skills in building modular and interactive user interfaces with React, including component lifecycle, state management (Context API or a more robust library), and routing (React Router).
Backend Development with Node.js and Express.js: We gained experience in setting up and managing a backend API using Node.js and Express.js, including defining routes, handling requests and responses, and implementing middleware.
NoSQL Database Management (MongoDB Atlas): We learned how to interact with a NoSQL database using MongoDB Atlas, including schema design for flexible data, querying, and understanding its advantages for applications with evolving data requirements.
RESTful API Design and Implementation: We practiced designing and building a RESTful API to facilitate seamless communication between the frontend and backend, adhering to best practices for data exchange.
What's next for FarmFinder
Enhanced Search and Filtering: Implement more granular filtering options (e.g., organic certification, specific varieties of produce) and improved search algorithms. Real-time Inventory Updates for Farmers: Allow farmers to update the availability of their products, providing consumers with more accurate information. Community Features: Allow users to rate and review farms, share their experiences, and potentially create local food communities. Online Ordering and Payment Integration: Enable consumers to place orders directly through the app and facilitate online payments.
Log in or sign up for Devpost to join the conversation.