Code Monkey home page Code Monkey logo

serverless-security-system's Issues

[CLOUD] Spike - Kinesis video streams

Look into video streams with kinesis

Consider the pricing of this feature

Maybe it could work well if it is only streaming the data this way when a user is actually viewing the footage page on UI.

[Cloud] Handle DynamoDB (lack-of) responses

See the TODO's in cloud/lambda/auth.py and cloud/lambda/users.py where we're sometimes making a request to our table and ignoring what happens.

In simpler terms: figure out if we need to confirm actions like table.put_item or table.delete_item in boto3.

[Cloud] Favorite videos

Add the abilty to favorite videos. This should show as a star next to the timestamps in the footage UI.
Favorites are shared across all users.

A better term may be "highlight."

[Cloud] Users `name` field restrictions

Add rules to the create_user API that only allows the user name to include alphanumeric characters, hyphens, and underscores.

See if it's possible to enforce this at the Dynamo level (i.e., block putItem with incorrect characters)

[Cloud] Initial setup mode/process

Find a solution for when the stack is first created and there is no "admin" users. Currently one must go into Dynamo and create a user record before they can log in.

[Client] docker restart on crash

Additionally, see about the simplest way to run the docker run when the device reboots. This would be beneficial for a scenario where the power goes out.

[Cloud] Member invitations

Create a way for admin's to invite other users.

A simple solution may be to create a new user in the dynamo table with a limited access token. Then, generate a /invite?token=1a2b3c url that they can use to authenticate and truly create their user.

[Cloud] Default `admin` user

A default admin user should be created when the system is first deployed. The pin can be something simple like password or admin (similar to how a lot of internet routers are set up).

The system user can go in and update the user's name and pin.


This can likely be implemented using a AWS::CloudFormation::CustomResource that performs a putItem on the user dynamodb table.

[Cloud] (optional) Outline movement

Add an option (probably in the Cloudformation stack parameter) that the check-video-for-motion lambda function reads.
For videos that include motion, the lambda function will rewrite the video in S3 bucket to include outlined movement.

Backend (API)

Serverless backend for serving videos, users, managing the system configuration, etc.

[Cloud] Static Frontend AWS Resources

I think it makes sense to create a substack within the template.yml that includes all of the resources necessary for this.

At first glance, I assume this'll look like:

  • S3 bucket
  • Cloudfront distro
  • ACM Certificate (i'm not sure if this is necessary for a cloudfront distro with the default url - I'm not dealing with custom domains for this)

If all that is needed is another S3 bucket and a cloudfront distro, then it makes sense to keep it in the template.yml stack.

[Cloud] Lambda + concurrency issues

Look into problems that may arise with limited Lambda concurrency.
For example, what would happen if a device came back online and uploaded 100 videos at the same time. Assuming a lambda concurrency limit of 10, how do we "queue" the others so they are eventually processed as needed?

[Cloud] lambda function that purges old files

Implement a lambda function that runs daily. The function should look at a configuration option (days_to_keep_old_motionless_footage) and remove all footage/normal (videos with no motion) objects that are older than the setting. The default value should be something big like a month or maybe even a year.

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.