Giter Club home page Giter Club logo

topratek's Introduction

TopraTek: Farmer's Mapping Tool

Demo video: https://youtu.be/rBc-QGZwgxE

Technical Details (for employers)

*** Contact berk[[dot]]ozkan[[at]]ug[[dot]]bilkent[[dot]]edu[[dot]]tr for demo with working api keys ***

Welcome to TopraTek! This project aims to provide a comprehensive mapping solution tailored specifically for farmers. With this application, farmers can easily outline their land, label it, categorize locations, and record additional data such as current crop and crop planting history. Whether you're a small-scale farmer or managing large agricultural operations, this tool is designed to streamline your mapping and data recording processes.

Features

Land Outlining

  • Easily outline and define the boundaries of your land using intuitive drawing tools.
Screenshot 2024-01-27 at 10 06 56
  • Precisely mark specific areas, fields, or plots for detailed management.
Screenshot 2024-01-27 at 10 09 19
  • Edit changes later
Screenshot 2024-01-27 at 10 20 16

Labeling and Categorization

  • Add labels to different areas of your land to identify specific features such as crops, buildings, water sources, etc.
  • Categorize locations based on various attributes like soil type, terrain features, irrigation methods, etc.
Screenshot 2024-01-27 at 10 15 49 Screenshot 2024-01-27 at 10 39 33

Crop Management

  • Record and track information about the current crop planted in each area of your land.
  • Maintain a history of crop rotations and planting schedules for better crop management practices.

Data Visualization

  • Visualize your land and all associated data on an interactive map for easy reference and analysis.
  • Gain insights into your farming operations by overlaying different layers of information.

Getting Started

@@ This won't work since I removed API and DB Keys @@

To get started with TopraTek, follow these steps:

  1. Pull repo
  2. Navigate to TopraTek folder
  cd TopraTek (or TopraTekv3)
  cd src
  1. Install dependencies
npm install
  1. Run
npm run start
  1. Go to localhost:3000/login on your browser and use.

Technical Details

Implemented:

  • Authentication via tokens
  • Routing
  • Frontend-backend communication (MVC)
  • backend-database communication (MVC)
  • Frontend-Mapbox API communication
  • Serverside rendering with PUG and Node JS
  • Dynamic component rendering with fetch await promises
  • Drawing shapes on the map
  • OOP for user structure in MongoDB
  • Unit tests
  1. Utilization of UML for Project Design and Planning: I used Unified Modeling Language (UML) to plan and design this project. This involved creating diagrams to visualize the project's structure, how they relate to each other, and what they do. Using UML helped me organize the project in a clear and structured way, showing my ability to plan software projects thoughtfully.

  2. Embracing Vanilla JavaScript: I deliberately chose to use vanilla JavaScript and Node JS for this project. Instead of relying on frameworks or libraries, I wanted to understand how JavaScript and frontend-backend interactions work from the ground up. This hands-on approach allowed me to dive into core concepts, learning their details and best practices thoroughly. By doing so, I'm better equipped to handle various challenges in web development and beyond.

** Personal anecdote ** When developing this project I ran into a performance problem. I wanted to update features, such as the sidebar and map live when a user added a location, however, since PUG is a serverside template engine each change required a complete reload of the page. Then, I discovered HTMX, which helped me make some parts dynamic without reloading the page–greatly increasing performance. However, some feature updates required a more tailored approach (or I didn't know htmx well enough), so this led me to do routing and updating manually with vanilla JS fetch and awaits on the frontend. And so, I was able to benefit from the superior performance of server-side rendering while keeping the site dynamic.

In summary, this project reflects my commitment to learning and mastering software development techniques. It demonstrates my ability to plan projects systematically.

Tools

  • Node JS v21.2.0
  • PUG (formerly jade)
  • HTML/CSS/JS
  • Mapbox
  • Express
  • MongoDB

UML

Use Case Diagram

usecaseTT

Sequence Diagram (all combined into one for easy reading)

sqncTT

I didn't add (due to time constraints):

  • Error indicators
  • Editing geometric shapes on the map
  • Weather data with OpenWeatherAPI
  • Full-screen mode
  • View settings
  • Navigation on map
  • Some details
  • Could spend more time on input-checking

topratek's People

Contributors

berkozkancsgod avatar

Stargazers

 avatar

Watchers

 avatar

topratek's Issues

Fix JS decoupling issue

The event listeners are added when page is first reloaded, however, after changing a component with an AJAX request the JS stops working.

Fix delete location

Deleting only works on initial reload, one any other action is taken it does not work.

Location Edit

In group expanded mode be able to edit all inputs about the location. The expand btn from sidebar will also lead to this. Somehow edit map data as well.

Add full screen mode

Make the sidebar disappear, maybe even make it so when adding a new location to make space for input fields.

Create first UI iteration

Add:

  • Navbar with "map," (main page) "groups, " and "settings"
  • Sidebar with grouped locations and update changes live (without page re-laod)
  • All groups view showing all groups as cards with their location counts
  • Expanded group: locations and their details

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.