Giter VIP home page Giter VIP logo

hddmond's Introduction

I am learning! ๐Ÿ“–๐Ÿ‘€

I like Rust, TypeScript, Python, C#, and more!

I'm eager to find the easiest way to design quick, reliable, and scalable business logic applications right now, but I am definitely interested in new areas of work too!

Send me a message, or browse my repositories and critique my code! ๐Ÿ‘‹

hddmond's People

Contributors

aadamz5 avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

hddmond's Issues

Integrate GraphQL into backend

The old stack used a separate NodeJS application for the GraphQL API. This was because I was learning how to do GraphQL and followed a tutorial that stepped through making a common GraphQL database shim.

Now with more advanced knowledge, the GraphQL API endpoint should be integrated into the app itself. This way separate stacks don't have to be deployed alongside this backend, regardless of the simplicity of the backend. Additionally, we can then unify the web-app's data transmission relying only on GraphQL in the far future.

  • Research GraphQL python libraries (strawberry looks great!)
  • Backend refactor
  • Class layout
  • GraphQL server in python backend
  • Use GraphQL for real-time updates
  • Abolish legacy websocket endpoint

Implement unit-testing

Proper unit testing should be done, automated with GitHub actions to ensure the reliability and repeatability of the application.

  • Research application test-suites
  • Develop HDD testing interface
  • Create suite of tests

Rewrite remote HDD functionality

The remote HDD function is currently unstable, largely do to the low-level nature and my lazy implementation of TCP/IP sockets. After the switch to asyncio (see #2), this should be rewritten using the websockets module.

Implement asyncio

This backend currently uses a handful of threads to do the multiple concurrent operations it does. More efficiency can be had out of switching to an async style application.

With asyncio's ability to still execute legacy code or blocking calls as asynchronous, there is great reason to put forth effort and rewrite major parts of the code.

Additionally, with a better async-centric application, the implementation of "Remote HDDs" can be better incorperated.

  • Convert all API calls in ListModel to async
  • Convert Application functions to async
  • Implement async signal handlers
  • Safe-gaurd all possible child-thread callback routes into main-thread

Impliment DB agnostic data service

The current data-service is heavily tailored to Apache's CouchDB with no real generic implementation. The database service should be database-agnostic with the ability to allow users to chose which database to use, simplifying docker setups.

Implementing this should give insight into what databases are widely used, and additionally, what databases are small and portable, in the case of a minimal setup.

  • Define generic database interface
  • Implement CouchDB interface implementation
  • Implement TestDB / MemoryDB interface implementation
  • Research other databases to initially support
  • Implement configuration options for different databases, with a proper schema-file

Imaging service and utilities

The application initially had provisions for applying images to HDDs. This functionality was furloughed because of complexities with the current implementation. Currently, the ImageTask uses clonezilla commands to run the functionality. Unfortunately, clonezilla is not fully reliable as a scriptable utility.

  • Research image cloning methods
  • Revamp image-collection and parsing methods
  • Implement basic Image application task

Add proper logging

The current primitive implementation of logging using print is easily unsuitable in todays advanced architecture of containerization. Support for proper file, stdout, and network logging must be done.

  • Research common logging mechanics
  • stdout logging
  • File logging
  • Network logging - Not necessary for primary implementation.

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.