All Projects → LiteFarmOrg → LiteFarm

LiteFarmOrg / LiteFarm

Licence: GPL-3.0 license
The world’s first community-led, not-for-profit, digital platform joining farmers and scientists together for participatory assessment of social, environmental and economic outputs of farming systems.

Programming Languages

javascript
184084 projects - #8 most used programming language
SCSS
7915 projects
typescript
32286 projects
CSS
56736 projects
Pug
443 projects
HTML
75241 projects

Projects that are alternatives of or similar to LiteFarm

Farm-Data-Relay-System
A system that uses ESP-NOW, LoRa, and other protocols to transport sensor data in remote areas without relying on WiFi.
Stars: ✭ 97 (+110.87%)
Mutual labels:  agriculture, farming
farmOS-map
farmOS Map is an OpenLayers wrapper library designed for agricultural mapping needs. It can be used in any project that has similar requirements.
Stars: ✭ 18 (-60.87%)
Mutual labels:  agriculture, farming
proSeed
ProSeed modification for Farming Simulator 2022
Stars: ✭ 63 (+36.96%)
Mutual labels:  farming
coctohug
Coctohug - Manage dozens of chia forks mining from a web browser! Nice localization with support of dozens of languages. Runs on Linux, Windows, MacOS, and more...
Stars: ✭ 36 (-21.74%)
Mutual labels:  farming
openminder
Open Source Rootzone Monitoring
Stars: ✭ 24 (-47.83%)
Mutual labels:  agriculture
node-red-contrib-FIWARE official
FIWARE-Node-Red integration supporting NGSI-LD
Stars: ✭ 14 (-69.57%)
Mutual labels:  agriculture
agro
AgrO describes agronomic practices, techniques, and variables used in agronomic experiments.
Stars: ✭ 39 (-15.22%)
Mutual labels:  agriculture
delphi
💥 Earn Rewards for Saving and Liquidity Provision (work in progress)
Stars: ✭ 19 (-58.7%)
Mutual labels:  farming
foodon
The core repository for the FOODON food ontology project. This holds the key classes of the ontology; larger files and the results of text-mining projects will be stored in other repos.
Stars: ✭ 137 (+197.83%)
Mutual labels:  agriculture
regen-ledger
Blockchain for planetary regeneration
Stars: ✭ 154 (+234.78%)
Mutual labels:  agriculture
agroclimatology
Ruby client for interacting with the NASA (POWER) Agroclimatology Web Resource
Stars: ✭ 16 (-65.22%)
Mutual labels:  agriculture
pytorch-psetae
PyTorch implementation of the model presented in "Satellite Image Time Series Classification with Pixel-Set Encoders and Temporal Self-Attention"
Stars: ✭ 117 (+154.35%)
Mutual labels:  agriculture
oasis-grow
Data collection, equipment control, and imaging engine for environmental IoT applications. Runs on RPi/ARM and interfaces with Arduino/ATmega minions over serial.
Stars: ✭ 53 (+15.22%)
Mutual labels:  agriculture
bety
Web-interface to the Biofuel Ecophysiological Traits and Yields Database (used by PEcAn and TERRA REF)
Stars: ✭ 14 (-69.57%)
Mutual labels:  agriculture
awesome-agtech
A curated list of technology companies, resources, and tools in the agricultural field.
Stars: ✭ 43 (-6.52%)
Mutual labels:  agriculture
nativescript-fabric
Handling App URLs in nativescript apps
Stars: ✭ 29 (-36.96%)
Mutual labels:  farming
Decision Analysis Course
🎓 Uni-Bonn Decision Analysis graduate course, lectures and materials
Stars: ✭ 17 (-63.04%)
Mutual labels:  agriculture
plantFEM
This is a plant/farming simulator based on Finite Element Method, which targets crops in fields. This software provides multi-physical simulations of agriculture for canopies, plants, and organs for farmers, breeders, and agronomists. Please try and give us feedback. This github-page is a mirror of the following gitlab-page.
Stars: ✭ 31 (-32.61%)
Mutual labels:  agriculture
defi
Tools for use in DeFi. Impermanent Loss calculations, staking and farming strategies, coingecko and pancakeswap API queries, liquidity pools and more
Stars: ✭ 464 (+908.7%)
Mutual labels:  farming
YOLOV2-Tensorflow-2.0
Just another YOLO V2 implementation. Train your own dataset in a jupyter notebook!
Stars: ✭ 46 (+0%)
Mutual labels:  agriculture

LiteFarm

LiteFarm is the world’s first community-led, not-for-profit, digital platform joining farmers and scientists together for participatory assessment of social, environmental and economic outputs of farming systems. LiteFarm is the first application of its kind specifically tailored to the needs of diversified farmers with built-in pathways to provide expert decision support and help them earn additional income through payment for ecological services (PES) schemes and in-app certifications (such as organic). These approaches serve the multiple purposes of incentivizing adoption of sustainable land use practices through the provision of evidence-based decision support, and significantly increasing the amount of data being collected by diversified farming operations around the globe. It was developed with farmers at the center of the design process and built from the ground up with accessibility and approachability in mind. We are proud of our mission:

To meet farmers where they are and equip them with the tools they need to make informed and responsible decisions about the health of their farm, their livelihood, their community, and the planet.

LiteFarm version 1.0.0 was released to the public in July 2020. The LiteFarm app is continually being developed, with farmers, researchers, designers and developers working together to create new localized modules and features into the future. LiteFarm is deployed in Canada, the USA, and Latin America.

If you’re a farmer and would like to join LiteFarm you can sign up today at app.litefarm.org. If you are a researcher or would like to find out more about this project you can contact the UBC Centre for Sustainable Food Systems. If you're a developer, welcome to the team! All the details on how you can contribute to this project are right here.

Setup

LiteFarm is comprised of three applications which all reside in this monorepo.

  • packages/webapp is the client-facing application
  • packages/api is the back-end API server with entry point src/server.js
  • packages/api/src/jobs is the "jobs scheduler" for certification exports, with entry point index.js

Preliminaries

  1. Install node.js if you do not already have it.
  2. If you do not have pnpm installed, run npm install -g pnpm in a terminal.
  3. Use the git clone command to clone this repository to your computer.
  4. In a terminal, navigate to the root folder of the repo and run npm install.
  5. Navigate to the packages/api folder, and run npm install.
  6. Navigate to the packages/webapp folder, and run pnpm install.

Configuring the applications

The applications are configured with environment variables stored in .env files. Configuration information includes secrets like API keys, so the .env files should never be added to source control. This repository does contain .env.default files for api and webapp. These files contain all necessary environment variables, but for sensitive ones the values are redacted. Contact [email protected] for assistance.

Database setup

  1. Install PostgreSQL by downloading installers or packages from https://www.postgresql.org/download/. Alternatively, Mac and Linux users can use homebrew as shown below.

    # Install homebrew.
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    # Install PostgreSQL.
    brew install postgresql
    # Start DBMS service.
    brew services start postgresql
  2. Set up the PostgreSQL role (account) and databases. You will use the psql client program. Account setup details will vary by OS. If an installer asks you to choose a password for the postgres (superuser) account, use postgres for consistency with the contents of .env.default.

    • Linux. In a terminal, start the client with sudo -u postgres psql, then execute each of the following commands. (The last command terminates the client session.)

      ALTER ROLE postgres WITH PASSWORD 'postgres';
      CREATE DATABASE "pg-litefarm";
      CREATE DATABASE test_farm;
      exit;       
    • Windows. At the Start menu, type psql and the search results will show "SQL Shell (psql)". In the client, execute each of the following commands. (The last command terminates the client session.)

      CREATE DATABASE "pg-litefarm";
      CREATE DATABASE test_farm;
      exit;       
  3. In a terminal, navigate to the packages/api folder. Execute npm run migrate:dev:db to run the migrations that set up the PostgreSQL database used by the app.

Running the apps

api

In a terminal, navigate to the packages/api folder. Run npm run nodemon to launch the backend application. It will automatically reflect any changes you make to the backend.

webapp

In a terminal, navigate to the packages/webapp folder and run pnpm dev. This builds the frontend code, and starts a web server that will automatically reflect any changes you make to the frontend.

Load the frontend app in your browser at http://localhost:3000.

Testing

api

To run ESLint checks execute npm run lint

The chai.js and jest libraries automate tests that run real database operations using JWT. The tests use a dedicated database named test_farm, distinct from the pg-litefarm database that the app normally uses .

  1. In a terminal, navigate to the packages/api folder.
  2. Execute npm run migrate:testing:db to set up the test database.
  3. Execute npm test to launch the tests. Or, to generate test coverage information, run npm test -- --coverage . and then see the coverage/index.html file.

While the tests do attempt to clean up after themselves, it's a good idea to periodically use psql to DROP and CREATE the test_farm database, followed by the migrations from step 2 above.

webapp

To run ESLint checks execute pnpm lint

Since this is a mobile web application, webapp should be viewed in a mobile view in the browser.

ngrok

Use cases for ngrok

Please see https://ngrok.com/ for more general information about ngrok.

Use cases in which we currently utilize ngrok at LiteFarm include:

  • Testing local changes on phones or different devices
  • Testing local changes when working with other APIs and integrations

Set up

Commands

These commands can be run from the root of the repo.

  • npm run ngrok to forward both backend and frontend ports with ngrok
  • npm run ngrok:setup to add the ngrok urls to the file .env files (always run after forwarding a port to ngrok)
  • npm run ngrok:api to forward the backend port with ngrok
  • npm run ngrok:webapp to forward the frontend port with ngrok

Note: Please make sure to run the commands in the following order:

  • npm run ngrok or npm run ngrok:api or npm run ngrok:webapp
  • npm run ngrok:setup (in a new terminal)
  • pnpm dev (in a new terminal from the packages/webapp folder)
  • npm run nodemon (in a new terminal from the packages/api folder)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].