Farmbot-Web-App

Setup, customize, and control FarmBot from any device

https://github.com/FarmBot/Farmbot-Web-App

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    2 of 42 committers (4.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary

Keywords

farmbot

Keywords from Contributors

farming gardening plants
Last synced: 10 months ago · JSON representation

Repository

Setup, customize, and control FarmBot from any device

Basic Info
  • Host: GitHub
  • Owner: FarmBot
  • License: mit
  • Language: TypeScript
  • Default Branch: staging
  • Homepage: https://my.farm.bot
  • Size: 65.6 MB
Statistics
  • Stars: 945
  • Watchers: 72
  • Forks: 348
  • Open Issues: 36
  • Releases: 193
Topics
farmbot
Created over 12 years ago · Last pushed 11 months ago
Metadata Files
Readme Contributing License Security Agents

README.md

FarmBot Web App

codebeat badge codecov Coverage Status Maintainability

This codebase contains FarmBot's web based user interface, a RESTful JSON API, and a Dockerized MQTT server. The API stores data such as user account information, farm designs, sequences, authorization tokens, and a variety of other resources. The MQTT server facilitates realtime messaging from the browser to the device.

I own a FarmBot, do I need this?

No. If you are an owner of a FarmBot kit, you do not need to download or self-host this software. FarmBot Inc provides a free-to-use instance of the web app at my.farm.bot which we recommend to all FarmBot owners. Get started with these instructions.

Self hosting

Hosting your own server requires an understanding of how Ruby on Rails applications (and databases) operate. Self-hosting the web app will not provide you with a more stable user experience and may result in accidental security issues or data loss. There are only a handful of use cases where running a third party server may be necessary:

  • Development of new features, bug fixes, and pull requests.
  • Independent security research and auditing.

:warning: If you are not a Ruby on Rails developer or you have never written a Ruby on Rails application, please use my.farm.bot instead of trying to self host. Running a server is a non-trivial task that may require hundreds of hours of setup and maintenance time. Data loss and security issues are possible in some circumstances. Self hosting requires an intermediate background (3 to 5 years experience) in Ruby, SQL and Linux system administration.

:no_entry: Technical support for self hosting is beyond the scope of the basic technical support that FarmBot Inc provides with each FarmBot kit. If you or your organization pursue self hosting, you will need to operate your server independently of FarmBot Inc technical support. We do not have the resources available to help novice developers learn to setup servers, environments, configurations, or perform basic Linux command line instructions.

Local setup

We recommend all self hosted installations be installed on a fresh Ubuntu server using the instructions provided in localsetupinstructions.sh. These instructions are regularly checked and updated to ensure they work. At this time we cannot provide assistance for running the web app in different environments.

If you raise an issue indicating that you haven't followed the setup instructions, looked through past issues, or done a cursory internet search for basic help, expect the issue to be closed and we'll point you to the setup instructions. Again, if you do not have at least intermediate Linux and Ruby experience, please use my.farm.bot. Running a self-hosted server is not easy!

Configuration settings (important)

Your server won't run without setting ENV variables first. Set the ENV variables directly from your shell / server management tool or by writing a .env file in the server's base directory. See example.env for a list of all the variables that must be set.

Encryption keys will be auto-generated if not present. They can be reset using rake keys:generate. If ENV['RSA_KEY'] is set, it will be used in place of the *.pem files. This is useful for environments like Heroku and Docker, where file system access is not allowed.

Updates

We update main roughly every 2 to 4 weeks. If you self host the application you will need to manually update the software to get the latest updates. Technical support for self hosting is beyond the scope of the basic technical support that we provide with each FarmBot kit.

Example API requests

See our documentation for a list of example API requests and responses. If you wish to write an add-on application that uses the FarmBot API, please let us know in an issue. We are happy to answer any specific questions you may have.

Contributing

There are many ways in which you can contribute to the FarmBot web app:

:pencil: Browse the open issues and make thoughtful suggestions or just let us know if something is particularly important to you.

:books: Check out our developer documentation for writing add-ons and plugins for FarmBot.

:mag: Search the repository for TODOs. Sometimes these are simple tasks suitable for new contributors.

:globewithmeridians: Help translate the web app into your language! There are FarmBot owners in over 90 countries who speak a wide range of primary languages.

:lock: Responsibly disclose a security vulnerability. We take security seriously and value the input of independent researchers.

:bulb: Open an issue to report a non-security related problem or propose a new feature or improvement idea.

Translating the web app

Thanks for your interest in internationalizing the FarmBot web app! To add translations:

  1. Fork this repo
  2. Navigate to /public/app-resources/languages and run the command node _helper.js yy where yy is your language's language code. Eg: ru for Russian.
  3. Edit the translations in the file created in the previous step: "phrase": "translated phrase".
  4. When you have updated or added new translations, commit/push your changes and submit a pull request.

Owner

  • Name: FarmBot
  • Login: FarmBot
  • Kind: organization

Humanity's open-source CNC farming machine

GitHub Events

Total
  • Create event: 104
  • Release event: 12
  • Issues event: 3
  • Watch event: 46
  • Delete event: 87
  • Issue comment event: 10
  • Push event: 272
  • Pull request review comment event: 1
  • Pull request review event: 1
  • Pull request event: 36
  • Fork event: 20
Last Year
  • Create event: 104
  • Release event: 12
  • Issues event: 3
  • Watch event: 46
  • Delete event: 87
  • Issue comment event: 10
  • Push event: 272
  • Pull request review comment event: 1
  • Pull request review event: 1
  • Pull request event: 36
  • Fork event: 20

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 8,722
  • Total Committers: 42
  • Avg Commits per committer: 207.667
  • Development Distribution Score (DDS): 0.296
Past Year
  • Commits: 361
  • Committers: 2
  • Avg Commits per committer: 180.5
  • Development Distribution Score (DDS): 0.352
Top Committers
Name Email Commits
Rick Carlino r****o@g****m 6,138
gabrielburnworth g****h 1,962
Rory Aronson r****y@r****m 245
MrChristofferson c****8@g****m 174
Ascend A****B 44
Connor Rigby c****r@f****o 31
David c****a@g****m 17
Harry Brundage h****e@g****m 17
Pitou p****s@g****m 10
Brenda Wallace b****a@w****z 9
DDDIM f****l@m****u 9
Connor Rigby k****y@g****m 8
TimEvWw t****s@g****m 6
Karey Higuera k****a@g****m 5
Fabio Dessi f****i@w****t 4
f-systemes 6****s 4
Rick Carlino r****o 3
PrincesseLulu l****u@o****m 3
Fabio Dessi f****i@w****t 3
Darío Hereñú m****a@g****m 2
Allan Kimmer Jensen a****n@g****m 2
Michael Ford f****e 2
Sebastiano Pistore S****o@p****h 2
luisrampolla l****a@u****u 2
Making GitHub Delicious i****n@w****o 2
Ghislaine Guerin g****e@a****m 2
Yuval Maman y****o@y****m 1
Rick Carlino r****k@R****l 1
MrChristofferson Y****S 1
Mike Russell m****l@g****m 1
and 12 more...

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 485
  • Total pull requests: 2,040
  • Average time to close issues: 6 months
  • Average time to close pull requests: about 18 hours
  • Total issue authors: 79
  • Total pull request authors: 49
  • Average comments per issue: 1.3
  • Average comments per pull request: 1.33
  • Merged pull requests: 1,932
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 51
  • Average time to close issues: N/A
  • Average time to close pull requests: 3 days
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.57
  • Merged pull requests: 43
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • roryaronson (264)
  • RickCarlino (63)
  • gabrielburnworth (17)
  • Klimbim1 (10)
  • innovatemaker (8)
  • jsimmonds2 (7)
  • AscendFB (6)
  • derletztename (5)
  • nicmel (5)
  • etcipnja (4)
  • PitouGames (4)
  • elbow-jason (3)
  • ThomasLegris (3)
  • creimers (3)
  • pablomat (2)
Pull Request Authors
  • RickCarlino (1,197)
  • gabrielburnworth (676)
  • roryaronson (49)
  • AscendFB (15)
  • DDDIM (9)
  • f-systemes (9)
  • airhorns (7)
  • myarete (7)
  • PitouGames (6)
  • kant (6)
  • kbravh (5)
  • FabioDessi (4)
  • ConnorRigby (3)
  • Br3nda (3)
  • SebastianoPistore (2)
Top Labels
Issue Labels
enhancement (129) feature (85) good first issue (58) Farm Designer (50) bug (45) high priority (22) API change (18) Sequences (18) in progress (13) ready (7) Settings (7) FBOS change (5) Messages (4) Controls (4) question (3) Logs (3) Farmware (2) CeleryScript change (2) wont fix (2) Archive? (1) Photos (1)
Pull Request Labels
enhancement (78) bug (64) feature (57) in progress (16) codex (6) Sequences (2) invalid (1) Farm Designer (1) Farmware (1) Controls (1) ready (1)

Dependencies

package.json npm
  • @types/enzyme 3.10.12 development
  • @types/jest 28.1.3 development
  • @types/moxios 0.4.15 development
  • @typescript-eslint/eslint-plugin 5.30.0 development
  • @typescript-eslint/parser 5.30.0 development
  • cheerio 1.0.0-rc.10 development
  • coveralls 3.1.1 development
  • enzyme 3.11.0 development
  • enzyme-adapter-react-16 1.15.6 development
  • eslint 8.18.0 development
  • eslint-plugin-eslint-comments 3.2.0 development
  • eslint-plugin-import 2.26.0 development
  • eslint-plugin-jest 26.5.3 development
  • eslint-plugin-no-null 1.0.2 development
  • eslint-plugin-promise 6.0.0 development
  • eslint-plugin-react 7.30.1 development
  • eslint-plugin-react-hooks 4.6.0 development
  • jest 28.1.2 development
  • jest-cli 28.1.2 development
  • jest-environment-jsdom 28.1.2 development
  • jest-junit 14.0.0 development
  • jest-skipped-reporter 0.0.5 development
  • jshint 2.13.4 development
  • madge 5.0.1 development
  • moxios 0.4.0 development
  • parse5 6.0.1 development
  • raf 3.4.1 development
  • react-addons-test-utils 15.6.2 development
  • react-test-renderer 16.13.1 development
  • sass 1.53.0 development
  • sass-lint 1.13.1 development
  • ts-jest 28.0.5 development
  • tslint 6.1.3 development
  • which 2.0.2 development
  • @blueprintjs/core 4.5.1
  • @blueprintjs/popover2 1.4.1
  • @blueprintjs/select 4.4.1
  • @monaco-editor/react 4.4.5
  • @parcel/transformer-sass 2.6.2
  • @parcel/transformer-typescript-tsc 2.6.2
  • @types/lodash 4.14.182
  • @types/markdown-it 12.2.3
  • @types/node 18.0.0
  • @types/promise-timeout 1.3.0
  • @types/react 18.0.14
  • @types/react-color 3.0.6
  • @types/react-dom 18.0.5
  • @types/ws 8.5.3
  • axios 0.27.2
  • bowser 2.11.0
  • boxed_value 1.0.0
  • browser-speech 1.1.1
  • events 3.3.0
  • farmbot 15.3.1
  • i18next 21.8.11
  • lodash 4.17.21
  • markdown-it 13.0.1
  • markdown-it-emoji 2.0.2
  • moment 2.29.3
  • monaco-editor 0.33.0
  • mqtt 4.3.7
  • npm 8.13.1
  • parcel 2.6.2
  • process 0.11.10
  • promise-timeout 1.3.0
  • punycode 2.1.1
  • querystring-es3 0.2.1
  • react 16.13.1
  • react-color 2.19.3
  • react-dom 16.13.1
  • react-redux 8.0.2
  • redux 4.2.0
  • redux-immutable-state-invariant 2.1.0
  • redux-thunk 2.4.1
  • takeme 0.12.0
  • typescript 4.7.4
  • url 0.11.0
  • xterm 4.18.0
Gemfile rubygems
  • climate_control >= 0 development
  • codecov >= 0 development
  • database_cleaner >= 0 development
  • factory_bot_rails >= 0 development
  • faker >= 0 development
  • hashdiff >= 0 development
  • pry >= 0 development
  • pry-rails >= 0 development
  • rspec >= 0 development
  • rspec-rails >= 0 development
  • rspec_junit_formatter >= 0 development
  • simplecov >= 0 development
  • smarf_doc >= 0 development
  • active_model_serializers >= 0
  • bunny >= 0
  • delayed_job >= 0
  • delayed_job_active_record >= 0
  • devise >= 0
  • discard >= 0
  • google-cloud-storage ~> 1.11
  • jwt >= 0
  • kaminari >= 0
  • lograge >= 0
  • mutations >= 0
  • passenger >= 0
  • pg >= 0
  • rabbitmq_http_api_client >= 0
  • rack-attack >= 0
  • rack-cors >= 0
  • rails ~> 6
  • rails_12factor >= 0
  • redis ~> 4.0
  • request_store >= 0
  • rollbar >= 0
  • scenic >= 0
  • secure_headers >= 0
  • thwait >= 0
  • tzinfo >= 0
  • valid_url >= 0
Gemfile.lock rubygems
  • 142 dependencies
docker-compose.yml docker
  • farmbot_web latest
  • postgres 13
  • redis 5