Giter Site home page Giter Site logo

scorelab / dronesym Goto Github PK

View Code? Open in Web Editor NEW
78.0 12.0 114.0 1.52 MB

Dronesym is a platform enabling users to handle and track their drone fleets in real time. Users can have functionality to add new drones configure their flight paths and monitor their progress through a web dashboard.

License: Apache License 2.0

Python 9.66% JavaScript 31.84% TypeScript 41.98% CSS 3.79% HTML 12.26% Shell 0.18% Dockerfile 0.29%

dronesym's Introduction

dronesym_logo

DroneSym

Build Status Codacy Badge Gitter

Setting Up the Project

Prerequisites

  1. Install Node.js 6.x (or higher)
  2. Python version 2.7 (or higher)
  3. MongoDB version 3.6 (or higher)

Part 1 - Setting up the Node environment

  1. After cloning the repo navigate to dronesym-node folder
  2. Run npm install to pull the dependencies
  3. To avoid the error : exception in initAndListen: NonExistentPath: Data directory C:\data\db\ not found., terminating"(Windows) or "Error: dbpath (/data/db) doesn't exist"(Linux), create the dbpath as follows before running mongodb with replica set.
    For Windows Users :
    Create a folder C:\data\db
    For Linux Users :
    Run the following commands :
    To create the directory /data/db directory where data directory is in the root directory run:
    $  sudo mkdir -p /data/db
    As the owner and the group of '/data' directory are root, we need to change ownership of the directory to the current user to access it.
    We can change the ownership of the directory as follows:
    $  sudo chown -R username:group/data
    $  sudo chmod 0755 /data/db
    If one wants to change the MongoDB default data path i.e. "C:\data\db" (Windows) or "/data/db" (Linux) to some other directory then use:
    mongod --dbpath new_dbpath
    where new_dbpath is the path of the new data store directory. Ex : new_dbpath = /usr/local/var/mongodb-data
  4. Run mongod --replSet rs to start running Mongo with a Replica Set.
  5. Open another terminal without disturbing the terminal running mongod, then import the database with mongorestore --db dronesym dronedb/dronesym
  6. Run npm start to start the Node server Note: Make sure you have an admin account in the database under user collection. (Refer the schema in Models folder)

Part 2 - Setting up Python environment

  1. After cloning the repo, navigate to the folder dronesym-python
  2. Run sudo pip install -r requirements.txt to pull the dependencies
  3. Navigate to dronsym-python/flask-api/src folder
  4. Run python main.py to start the Flask server Note: Node server should be running when starting up the Flask server

Part 3 - Setting up the Angular front-end

Make sure that you have Node6.x or higher version installed

Install AngularCLI

$ npm install -g @angular/cli

Set environmental variable in ./dronesym-frontend/src/environments/environment.ts

Note: You will have to rename the example.environment.ts to environment.ts or create new file, for example by copying the example file:

$ cp src/environments/example.environment.ts src/environments/environment.ts`

Edit the environment.ts as follows

mapsApiKey: 'YOUR_GOOGLE_MAPS_API_KEY',
nodeApiURL: 'http://localhost:3000/dronesym/api/node',
feedURL: 'http://localhost:3000/feed'

Note: Dronesym Node server (./dronesym-node/) and DroneSym Flask server (./dronesym-python/flask-api/src) should be running before starting the frontend server_

Note: You should enable Google Maps JavaScript API before using API key

Starting the Angular development server

$ npm install
$ ng serve

Runing tests

1.Navigate to dronesym-node folder and run npm install http

2.Then run yarn test

Default login credentials

Admin

username: admin
password: admin

User

username: icarus
password: icarus

Part 4 - Running with Docker (Optional)

Checkout to docker branch

$ git checkout docker

Navigate to the root folder

Run

$ docker-compose up

Run Unit Tests Node

For node unit tests - both the flask server and node server have to be running.

Navigate to dronesym-node Run npm test

dronesym's People

Contributors

0xdaksh avatar angeryrohan avatar anuragparida avatar atharvcd avatar benjamin-mueggenburg avatar charithccmc avatar dependabot-preview[bot] avatar dilinade avatar gaurav-diginix avatar geethmaka avatar hasa93 avatar iammosespaulr avatar ivantha avatar jmularski avatar josephsemrai avatar malithsen avatar meetcric avatar mohak08 avatar rhperera avatar sahandilshan avatar shlokj avatar thelukaszns avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dronesym's Issues

Thermal Imaging Sensor.

We can add the thermal sensing feature which actually displays the heat in the environment. It would display if the drone is adaptable to the environment. Also, if the drone is entering any very heated or cooled environment we could set an alarm which would alarm the user as I have seen people relaxing despite their drone is flying. This function may work at a specific range.
For Eg.
If the drone is going near a barbecue (for instance), it may show the emitted heat which would get displayed and alarm the user. This will help the user to maintain the quality, functionality, and help the drone remain safe.
The user will as well get uninterrupted use of the drone.

New features for DroneSym

  1. DroneSym should also be available on mobile phones and tablets. As in today's fast rapid world there is a need for on the go control for almost everything. Bringing DroneSym to mobile phones will widen it's reach and users can control their drone fleets on the go.

  2. Also users should have the functionality to utilize their drone's features on DroneSym. Features like live camera footage, or receive live data from sensors on-board on drone should be available on web-dashboard too. There should also be an option for users to add various features of the drone (so that the DroneSym team can work on bringing accessibility to new features too) while adding a new drone.

  3. Also the map on DroneSym should contain warnings or should not allow users to add flight path for no fly zones like Military Campuses or other areas where drone flying is prohibited.

Login with OAuth

try to add a feature that allows login with OAuth
Login With Google
Login With Facebook
Login With Github
and save all the drone data for a particular account such that it can be accessed by just logging into the
respective accounts.

Dual Battery System

EXPLANATION
The drone should work on dual battery rechargeable system.
The manufacturer should charge one of it's battery to the fullest.
Now, when the user uses the drone, the second battery (empty one) should get charged due to the rotational energy of the propellor hovering above (like a turbine charging system). Hence as soon as the first battery would get discharged, the drone would not fall, but fly by using the second battery.
Further the first battery would get charged as explained above. And this cycle goes on and on.

Advantages:-
1. This would lead to uninterrupted completion of the task
2. this would help save a lot of energy.

Connecting DroneSym frontend directly with Firebase

The current architecture of the app has a Node.js backend which connects to the Firebase service and the DroneSym frontend communicates with this Node.js backend server. Should the the frontend communicate directly with Firebase? If so what would be the pros and cons?

Provide pluggable option for firebase alternatives

Since DroneSym is an open source application supporting users to track their drone fleet, we have to even provide options to plug in other open source alternatives for firebase.

Why?

To support users to be able to scale and use the other best, open source and cost effective resources. No doubt, Firebase is one of the best option for realtime databases, auth etc. but it's not so scalable when coming to cost effectiveness. We should definitely come up with a solution and design a model to provide plugin options to atleast two other alternative to Firebase

Improvements and issues

Prerequisites

Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

  • I am running the latest version
  • I checked the documentation and found no answer
  • I checked to make sure that this issue has not already been filed
  • I'm reporting the issue to the correct repository (for multi-repository projects)

Expected Behavior

It should follow the gitflow workflow that is:
=>Require status checks to pass before merging is active
=> Require branches to be up to date before mergin
=> Appropriate Status checks are required
=> Enforce all configured restrictions for administrators is active
=>Restrict only maintainers group can push to the master branch

Current Behavior

=>many syntax errors in code
=>the files in the folder are all unscrambled, it should be more systematic

Failure Information (for bugs)

there's a bug on user groups
When a user is assigned to a group any modifications done to the group are currently not reflected on the user's groups

Steps to Reproduce

Please provide detailed steps for reproducing the issue.

=>you could improve the GUI/UI/UX

No Proper File Management

CONTRIBUTING.md, ISSUE_TEMPLATE.md, and PULL_REQUEST_TEMPLATE.md are separately located in the Home. It is recommended to add those three into a separate folder named .github for easy use of Github.

So It's better to follow what Github recommend.

Resume flight glitch

Right now sometimes the drones will return to the previous waypoint before proceeding onto the next one

App. Install Issues

Team,
I'm having issues trying to complete an install, is there a docker ir script available to complete install? Here's the error I get:

oot@enC-ODM2:/opt/DroneSym/dronesym-python/flask-api/src# python main.py
main.py:68: SyntaxWarning: name 'q' is assigned to before global declaration
global q
('Connection aborted.', gaierror(-2, 'Name or service not known'))
Retrying...
('Connection aborted.', gaierror(-2, 'Name or service not known'))
Retrying...
('Connection aborted.', gaierror(-2, 'Name or service not known'))
Retrying...
('Connection aborted.', gaierror(-2, 'Name or service not known'))
Retrying...
^CTraceback (most recent call last):
File "main.py", line 71, in
dronepool.initialize()

^CTraceback (most recent call last):
File "main.py", line 71, in
dronepool.initialize()
File "/opt/DroneSym/dronesym-python/flask-api/src/dronepool.py", line 46, in initialize
drones = node.get_drones()['drones']
File "/opt/DroneSym/dronesym-python/flask-api/src/node.py", line 35, in get_drones
return get_drones()
File "/opt/DroneSym/dronesym-python/flask-api/src/node.py", line 35, in get_drones
return get_drones()
File "/opt/DroneSym/dronesym-python/flask-api/src/node.py", line 35, in get_drones
return get_drones()
File "/opt/DroneSym/dronesym-python/flask-api/src/node.py", line 34, in get_drones
time.sleep(1)
KeyboardInterrupt
root@enC-ODM2:/opt/DroneSym/dronesym-python/flask-api/src#

Synchronization of drones

For managing a fleet of drones. Drones can be synchronized with other drones. So the operator don't have to operate each and every single drone instead operate all drones at the same time. They use coding and algorithms so the drones don't crash into each other. All drones should be monitored by cameras which relay information back to a computer.

Live telemetry feature

It would be even better if we could transmit live readings of the drone's sensors, and get values in the application. This way we can get a better idea of what kind of environment the UAV is in.

Dynamic Flight feature

Dynamic flight is a feature that allows drones to fly normally in unpredictable condition or adapt with the condition. Dynamic flight uses data from drone's sensors to analyze the environment around them. If there are obstacles, bad weather, birds, or anything drone will do a maneuver to avoid them. This feature also helps drone fleet to keep the formation if one drone failed.

Google Code-In 2017: Getting Started Issue

THIS IS A NOT A REAL ISSUE BUT A PLACEHOLDER.

All the practising PRs for Google Code-In 2017 should refer this issue. PRs referring this issue will be closed without merging. Do not refer this issue if you are NOT submitting a practice PR and need your work merged.

[GCI2018] Tests Are Failing on Ubuntu 17.04 with Python 3.6

Prerequisites

  • I am running the latest version
  • I checked the documentation and found no answer
  • I checked to make sure that this issue has not already been filed
  • I'm reporting the issue to the correct repository (for multi-repository projects)

Expected Behavior

Tests to be passed successfully

Current Behavior

7 Tests are Passing and 1 is failing

Failure Information (for bugs)

Steps to Reproduce

  1. Convert the source to Python 3 Compatible using 2to3 tool
  2. pip install -r requirements.txt
  3. pytest

Context

OS : Ubuntu 17.04 (32bit)
Python : 3.6.6 (Anaconda)

Failure Logs

CLICK TO EXPAND
$ pytest
============================= test session starts ==============================
platform linux -- Python 3.6.6, pytest-3.5.0, py-1.5.2, pluggy-0.6.0
rootdir: /home/palash/Downloads/DroneSym-develop/dronesym-python, inifile:
plugins: hypothesis-3.38.5
collected 8 items                                                              

flask-api/tests/test_default.py .                                        [ 12%]
flask-api/tests/test_dronepool.py F......                                [100%]

=================================== FAILURES ===================================
_____________________ TestDronePool.test_create_new_drone ______________________

self = <test_dronepool.TestDronePool testMethod=test_create_new_drone>

    def test_create_new_drone(self):
>           res = dronepool.create_new_drone( { "db_key" : "test" })

flask-api/tests/test_dronepool.py:28: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
flask-api/src/dronepool.py:83: in create_new_drone
    drone.launch()
flask-api/src/dronepool.py:36: in launch
    super(Sim, self).launch(["--instance", str(self.instance), "--home", home_str], await_ready=True, verbose=not env_test)
../../../anaconda3/lib/python3.6/site-packages/dronekit_sitl/__init__.py:271: in launch
    p = Popen([self.path] + args, cwd=wd, shell=sys.platform == 'win32', stdout=PIPE, stderr=PIPE)
../../../anaconda3/lib/python3.6/subprocess.py:709: in __init__
    restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <subprocess.Popen object at 0xb34e07ec>
args = ['/home/palash/.dronekit/sitl/copter-3.3/apm', '--instance', '1', '--home', '6.9271,79.8612,0,353', '--model=quad']
executable = b'/home/palash/.dronekit/sitl/copter-3.3/apm', preexec_fn = None
close_fds = True, pass_fds = (), cwd = '/tmp/tmp0bmccqg5', env = None
startupinfo = None, creationflags = 0, shell = False, p2cread = -1
p2cwrite = -1, c2pread = 9, c2pwrite = 11, errread = 12, errwrite = 13
restore_signals = True, start_new_session = False

    def _execute_child(self, args, executable, preexec_fn, close_fds,
                       pass_fds, cwd, env,
                       startupinfo, creationflags, shell,
                       p2cread, p2cwrite,
                       c2pread, c2pwrite,
                       errread, errwrite,
                       restore_signals, start_new_session):
        """Execute program (POSIX version)"""
    
        if isinstance(args, (str, bytes)):
            args = [args]
        else:
            args = list(args)
    
        if shell:
            args = ["/bin/sh", "-c"] + args
            if executable:
                args[0] = executable
    
        if executable is None:
            executable = args[0]
        orig_executable = executable
    
        # For transferring possible exec failure from child to parent.
        # Data format: "exception name:hex errno:description"
        # Pickle is not used; it is complex and involves memory allocation.
        errpipe_read, errpipe_write = os.pipe()
        # errpipe_write must not be in the standard io 0, 1, or 2 fd range.
        low_fds_to_close = []
        while errpipe_write < 3:
            low_fds_to_close.append(errpipe_write)
            errpipe_write = os.dup(errpipe_write)
        for low_fd in low_fds_to_close:
            os.close(low_fd)
        try:
            try:
                # We must avoid complex work that could involve
                # malloc or free in the child process to avoid
                # potential deadlocks, thus we do all this here.
                # and pass it to fork_exec()
    
                if env is not None:
                    env_list = []
                    for k, v in env.items():
                        k = os.fsencode(k)
                        if b'=' in k:
                            raise ValueError("illegal environment variable name")
                        env_list.append(k + b'=' + os.fsencode(v))
                else:
                    env_list = None  # Use execv instead of execve.
                executable = os.fsencode(executable)
                if os.path.dirname(executable):
                    executable_list = (executable,)
                else:
                    # This matches the behavior of os._execvpe().
                    executable_list = tuple(
                        os.path.join(os.fsencode(dir), executable)
                        for dir in os.get_exec_path(env))
                fds_to_keep = set(pass_fds)
                fds_to_keep.add(errpipe_write)
                self.pid = _posixsubprocess.fork_exec(
                        args, executable_list,
                        close_fds, tuple(sorted(map(int, fds_to_keep))),
                        cwd, env_list,
                        p2cread, p2cwrite, c2pread, c2pwrite,
                        errread, errwrite,
                        errpipe_read, errpipe_write,
                        restore_signals, start_new_session, preexec_fn)
                self._child_created = True
            finally:
                # be sure the FD is closed no matter what
                os.close(errpipe_write)
    
            # self._devnull is not always defined.
            devnull_fd = getattr(self, '_devnull', None)
            if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
                os.close(p2cread)
            if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
                os.close(c2pwrite)
            if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
                os.close(errwrite)
            if devnull_fd is not None:
                os.close(devnull_fd)
            # Prevent a double close of these fds from __init__ on error.
            self._closed_child_pipe_fds = True
    
            # Wait for exec to fail or succeed; possibly raising an
            # exception (limited in size)
            errpipe_data = bytearray()
            while True:
                part = os.read(errpipe_read, 50000)
                errpipe_data += part
                if not part or len(errpipe_data) > 50000:
                    break
        finally:
            # be sure the FD is closed no matter what
            os.close(errpipe_read)
    
        if errpipe_data:
            try:
                pid, sts = os.waitpid(self.pid, 0)
                if pid == self.pid:
                    self._handle_exitstatus(sts)
                else:
                    self.returncode = sys.maxsize
            except ChildProcessError:
                pass
    
            try:
                exception_name, hex_errno, err_msg = (
                        errpipe_data.split(b':', 2))
                # The encoding here should match the encoding
                # written in by the subprocess implementations
                # like _posixsubprocess
                err_msg = err_msg.decode()
            except ValueError:
                exception_name = b'SubprocessError'
                hex_errno = b'0'
                err_msg = 'Bad exception data from child: {!r}'.format(
                              bytes(errpipe_data))
            child_exception_type = getattr(
                    builtins, exception_name.decode('ascii'),
                    SubprocessError)
            if issubclass(child_exception_type, OSError) and hex_errno:
                errno_num = int(hex_errno, 16)
                child_exec_never_called = (err_msg == "noexec")
                if child_exec_never_called:
                    err_msg = ""
                    # The error must be from chdir(cwd).
                    err_filename = cwd
                else:
                    err_filename = orig_executable
                if errno_num != 0:
                    err_msg = os.strerror(errno_num)
                    if errno_num == errno.ENOENT:
                        err_msg += ': ' + repr(err_filename)
>               raise child_exception_type(errno_num, err_msg, err_filename)
E               OSError: [Errno 8] Exec format error: '/home/palash/.dronekit/sitl/copter-3.3/apm'

../../../anaconda3/lib/python3.6/subprocess.py:1344: OSError
====================== 1 failed, 7 passed in 5.71 seconds ======================

Other Problems :

  • Upgrade Libs on requirements.txt to latest version to avoid possible vulnerabilities
  • Make it Python 3 Compatible , life of Python 2.7 is about to end

Trying to solve Package.json Issues created from package.json validator

THE RESULT FROM THE JSON VALIDATOR
The following issues were identified

{
  "valid": true,                                                             <--- shows that the json is valid
  "warnings": [                                                             <----shows warnings
    "Missing recommended field: description",
    "Missing recommended field: keywords",
    "Missing recommended field: bugs",
    "Missing recommended field: author",
    "Missing recommended field: contributors",
    "Missing recommended field: repository"
  ],
  "recommendations": [                                             <----shows recommendations
    "Missing optional field: homepage",
    "Missing optional field: engines"
  ]
}

MEANINGFUL DESCRIPTION :
to solve the warning one must add the description field, the keyword field, the bugs field, the author field, the contributor's field, the repository field and the homepage field.

Issuing landing commands

Landing commands works sporadically for now. When issued it might take some time or not at all to execute

New Feature - Drone Sym

New Feature -

  1. Claw - Claw specially made for drone weight and propeller. Claw can be used to pick up things and transport it. Claw should be designed as such it takes less space and can stretch to maximum length. The concept of origami can be used to design such claws.
  2. GPS - GPS sensor can be used to locate the drone.
  3. Compass Sensor can also be attached.
  4. The frame is made of carbon fiber, which is widely used in aerospace industry for its characteristics such as:
  • Physical strength, robustness, and lightweight;
  • Good vibration damping;
  • High dimensional stability
  • Water Proof ( Coating )

Repo should follow GitFlow workflow

This repos should follow Gitflow workflow and follow are the items you have to check.

  • There is a master branch and a develop branch.
  • master branch is locked for direct commits and,
    • Require pull request reviews before merging is active
    • Require status checks to pass before merging is active
      • Require branches to be up to date before merging
      • Appropriate Status checks are required
    • Enforce all configured restrictions for administrators is active
    • Restrict only maintainers group can push to the master branch

Package.json validation Issue : GCI

{
"valid": false,
"errors": [
"author field should have name"
],
"warnings": [
"Missing recommended field: keywords",
"Missing recommended field: contributors"
],
"recommendations": [
"Missing optional field: engines"
]
}

-----ERRORS-----
----> Add author Name : SCoRe Community
-----WARNINGS----
----> Add Keywords : DroneSym
----> Add Contributors : Contributors List
-----RECOMMENDATIONS-----
----> Add Engines : Node

Add .editorconfig

EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs. The EditorConfig project consists of a file format for defining coding styles and a collection of text editor plugins that enable editors to read the file format and adhere to defined styles. EditorConfig files are easily readable and they work nicely with version control systems.

New Features for DroneSym

screenshot from 2018-01-02 12-31-37

The Login Page Has Only The Words Login It could be Made into LOGIN TO DRONESYM or something like that

Add an example environment.ts file

The environment.ts file has specific env details to each user. So it's better to have an example.environment.ts file in the GitHub repo and let users to update env details and copy and rename it to environment.ts and ignore the environment.ts file in the .gitignore.

Restricted Flying Area

The map on DroneSym should contain warnings or should not allow users to add flight path for no fly zones like Military Campuses or other areas where drone flying is prohibited. This feature will make it easy for government/secret organisations to function with the needed secrecy and also should limit drones from being used for wrong purposes.

Drone Name

In the current version, we are not able to assign a name to the drone. The user should be given the ability to name his/her drone. This is a feature that everyone wishes for.

Also, it would be good if the files were arranged more properly as some of them are scrambled.

Name, describe and profile drones [Feature]

A feature where we can name, describe, and specify the drone with images and text would be really useful to hardcore developers to test, customize and profile the drones. It can differentiate drones more efficiently.

Add a Travis CI

Write a Travis file script to install and run the project

Add example db.js file

The db.js file has specific env details to each user. So it's better to have an example.db.js file in the GitHub repo and let users to update env details and copy and rename it to db.js and ignore the db.js file in the .gitignore.

Add .editorconfig

it will help to develop and maintain a coding style that is consistent between different editors and IDEs.it will be easily readable and version control systems will work nicely.

Drone Name

Prerequisites

Please answer the following questions for yourself before submitting an issue. YOU MAY DELETE THE PREREQUISITES SECTION.

  • I am running the latest version
  • I checked the documentation and found no answer
  • I checked to make sure that this issue has not already been filed
  • I'm reporting the issue to the correct repository (for multi-repository projects)

Expected Behavior

Please describe the behavior you are expecting

Current Behavior

What is the current behavior?

Failure Information (for bugs)

Please help provide information about the failure if this is a bug. If it is not a bug, please remove the rest of this template.

Steps to Reproduce

Please provide detailed steps for reproducing the issue.

  1. step 1
  2. step 2
  3. you get it...

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

Failure Logs

Please include any relevant log snippets or files here.

Package.json validation issues : GCI

{
"valid": false,
"errors": [
"author field should have name"
],
"warnings": [
"Missing recommended field: keywords",
"Missing recommended field: contributors"
],
"recommendations": [
"Missing optional field: engines"
]
}

-----ERRORS-----
----> Add author Name : SCoRe Community
-----WARNINGS----
----> Add Keywords : DroneSym
----> Add Contributors : Contributors List
-----RECOMMENDATIONS-----
----> Add Engines : Node

Bug on user groups

When a user is assigned to a group any modifications done to the group are currently not reflected on the user's groups

Improvements and Issues

=>The repo should follow gitflow workflow
=>The files are all scrambled in the folder, they should be more systematic
=>Should prompt for a drone name when creating one
=>Require pull request reviews before merging is active
=>Require status checks to pass before merging is active
=>Require status checks to pass before merging is active
=> Enforce all configured restrictions for administrators is active

Multi User feature

Multi user feature is a feature that provide capability for controlling drone fleets with many person at once. Controlling drone fleets can be really challenging because controller needs to watch all drones at once. With this feature, each person can watch few drones only, not a whole fleet. So controllers have less pressure and more control.

adding live reading

It would be even better if we could transmit live readings of the drone's sensors, and get values in the application. This way we can get a better idea of what kind of environment the UAV is in.

Dockers should have proper Label Schema labels

This repos has a Dockerfile but it does not contain any Label Schema labels. Following are the lables we have to have on our Dockers.

  • name
  • description Shoud be on user's perspective.
  • url Should be SCoRe website
  • vcs-url Should point to GitHub repo
  • vcs-ref
  • vendor Shoudl be "SCoRe Lab"
  • version
  • schema-version

Live Voice Chat.

There should be some kind of feature that enable the users to do Live Voice Chat using IVR or something.
It can be done by connecting users with themselves with some kind of special code or best option is using IP address.
This could be the big improvement for current application.

In the right top corner, there should be an option that connects the user to do live voice chat.

dronesym

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.