Giter Site home page Giter Site logo

ximidar / flotilla Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 1.0 6.32 MB

3D Printing server interconnected over a NATS server

License: GNU General Public License v3.0

Go 0.24% Go 0.24% Shell 0.02% Dockerfile 0.04% Go 31.79% Shell 0.63% Dockerfile 0.08% Makefile 0.28% Vue 20.81% JavaScript 45.86%
3d-printing cobra docker flotilla go nats protobuf viper vue

flotilla's People

Contributors

dependabot[bot] avatar fossabot avatar ximidar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

fossabot

flotilla's Issues

Create Build and Test system

Create a docker build system that also runs tests.

  • Run all tests before building anything
  • Add all built binaries into a bin folder.
  • Create a github webhook to post binaries and run builds after every commit.
  • Put all tests in their corresponding repository and package. Leave only the code that cannot be apart of a different repository(commonTestTools, Flotilla System Test, ect)
    • Fix any code or import statements that need fixing
  • Create tests for any untested code

Expand Fake printer to accept more commands

right now our fake printer will only provide output for ok. expand it so it can accept temperature change commands and movement commands. look into other commands to expand use and work on it.

[GUI] Write leveling wizard

Write a way to set the z-offset so the machine can print correctly. No need to make it fancy. Just a basic tool will do for now

Golint Issue

Recently I have started using a Golinter. This linter doesn't think that the style I use to write code is good for Go. We should try to follow the linter's style guide. This issue is here to tell @Ximidar to reformat all the code to fix all of the linter's issues.

Fill buffer with user input

Prioritize user input over the currently playing file. When a user inputs a line play it as fast as possible. Also figure out how to transition user input when playing vs not playing.

investigate using rust for the serial monitor

Go doesn't really have a great serial package, It works, but I'd rather have the tools that C++ had. But I'm using this project to learn new things. Rust is a language I'd love to start using. I don't know how well it can connect to NATS, but it probably has better Serial Tools than go.

Create Dry Mode

Add a dry mode option to flotilla so I can play any gcode I want and it will not turn on the heaters.

Build Node for Touch interface

Build a node that will handle a desktop touch interface. Explore Flutter. But in Reality we will probably be using the community version of QT and C++

Create Node for Executing all Nodes

Create a Common Node that will fire off all Flotilla nodes in a single executable. This node will also collect the stdout of all Nodes and consider it logging. This node will be responsible for proper startup / shutdown of server.

Investigate webasm for holding a slicer

I have never been one for building websites, but it seems to me like we could compile the cura engine to webasm. We could then create a slicer that can use the browser and user processor and ram to slice an stl. It could be a static site sitting in an S3 bucket.

[GUI] Write status screen

Write Status Screen

write the status screen for the GUI. This status screen should include the following:

  • Temperature Graphs
  • Motor Control
  • Temperature Control
  • Print Status
  • Pause / Resume / Cancel

That will do for a start.

For extra you can find a cool way to display Flotilla on the main screen while nothing is happening

Add serial monitor to cli

Add a simple serial monitor to the cli tool. This would just dump the Sent and Received data directly to the console.

Server does not pause

I recently added a pause button and it seems like after changing the status the system will not pause. It just keeps playing the file. Alter the FFS and the status setter so they set the status correctly and they do not get locked.

Create authenticated access to NATS

Figure out a way to enable SSL for NATS and Server. Then also figure out some sort of API key / User login to use the NATS / Server routes.

Update NatsConnect to only take in certain options. Supply the rest

NatsConnect is supposed to make connecting to the NATS server easier and provide a painless way to take care of the NATS connection that can be coded into every node. So far I have only written a dumb reconnection routine for nats. I should recode it to follow nats.Options instead.

It should follow this flow.

  1. Create a NatsConnect Object
  2. Allow the coder to change the options to their hearts content
  3. Provide a Connect function that will return the nats.Conn object and an error
  4. Take care of any conn errors by using nats.Options callbacks.

Create UI Plan

Problem

Currently our UI is suffering from not being planned out. I am simply adding in functionality and the result is a bad mess. I need to create a plan for the UI, even just a document with terrible screens showing the outline of each page. This UI plan doesn't need to be extremely detailed, we just need to start defining the basic look of the website.

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.