GithubHelp home page GithubHelp logo

pathfinder's Introduction

Pathfinder

What is it?

This is a small pet project ive had on my mind for a little while. Simply put its a TSP solver with a gui around it. Ill be building this out in my spare time to get a more comfortable with building out entire projects. pet project where users can use go, enter coordinates of sereral places they would like to visit, and a best path is returned.

technologies

  • Golang, Javascript, React, more to come

TODO:

  • alpha complete
    • frontend
      • add title
      • add map
        • add visualization for coordinates
        • add visualization during optimization (connect all points and randomly iterate through paths)
      • add popup alerts for error messages
    • backend
      • standardize path finding so we can easily add in new attemptes without having to rewrite frontend/backend interactions
      • optimize path finding
        • cached path finding to cut down on computation time
        • add a nieve random search endpoint
    • integrations
      • add database to periodically store user trips for analysis later
        • explore storing summary data
        • store longer data set which can be used to test proposed solution against true solution and measured for speed

Wishlist

adding improvements/tweaks to be made here before they are pulled into a next version

  • optimize path finding
    • add simulated annealing find best path
    • add controls to be able to commit a specific amount of computation time to calculating an optimal route
    • use go ffi to leverage speed and efficiency of a rust library
  • integrations
    • add user accounts & authentication
  • add centralized logging
    • log rotate set up upon vagrant up
    • logging levels used
  • improve system resiliancy
    • Dockerize/Pod-ify application
      • use system to manage clusters
    • application on vm to restart services as required
    • do not allow system to get overloaded when optimizing requests
      • backplaneing returns appropriate error code instead of taking on too much work
      • queue requests if they cannot currently be run
    • investigate hosting application over multiple machines
  • optimize website
    • profile react componants
    • compile react code to static js files and serve directly via nginx or apache
    • profile reverse proxy
  • functionality improvements
    • users can select a starting point from which all paths begin
    • users can select an ending point at which all paths end (potentially the starting point)
    • users users can see their search history
    • users can look up famous lanmarks by name and their long & lat will be added automatically
    • some sort of admin portal where we can see uptodate monitoring of the system
    • explore use of web gl http://examples.webglearth.com/#markers
    • users can log into an account of their own
    • users can go to a profile page and edit information about themselves
    • road data taken into account
  • host version of the site online somewhere
  • create tests
  • connect tests to github to testing will happen on pushes
  • deployment
    • expore exporting as an rpm or set of rpms
  • System resiliancy
    • improve go instalation
    • programs run as a service
  • logging improvements
    • centralized logging service
    • log files written
    • log rotate initialized
  • improve header
    • login button floats to the far right right
    • add log in page

Past efforts:

  • POC complete
    • users have a portal where they can enter a list of coordinates.
    • users can submit these coordinates to the server and have an optimized route returned to them
      • backend support
      • front end support
      • communication between the two via reverse proxy for single enpoint
    • basic front end styling
    • basic make file added
      • command to rebuild go server
      • command to run node server
    • abstraction between host machine (runs in a virtual machine)
    • project can be cloned and built on a clean machine (untested but as long as a machine supports vagrant there shouldnt be any issue)

pathfinder's People

Contributors

jmclellan avatar

Stargazers

Robert Reinold avatar

Watchers

James Cloos avatar  avatar

Forkers

adamterrell

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.