Giter Club home page Giter Club logo

home_guardian's Introduction

Home Guardian Social Image GitHub release Github Actions workflow status GitHub issues GitHub forks GitHub stars GitHub license GitHub code size in bytes GitHub repo size Twitter

home_guardian

Home Guardian, a smart intruder inspection system, ran on Python 3, Raspberry Pi.

Features

Here are the highlights of home_guardian:

  1. Inherited from modern and the latest newest Python technologies:

    Python - Python OpenCV - OpenCV

  2. Sending Email via Tom Email Service, email template engine powered by Jinjia2

  3. Data persistence with peewee, SQLite3 as local database

  4. Environment variable and configuration with pyhocon. Read ${ENVIRONMENT_VARIABLE} when startup

  5. Testing with pytest

  6. Formatting with black

  7. Import sorting with isort

  8. Static typing with mypy

  9. Linting with flake8

  10. Git hooks that run all the above with pre-commit

  11. Deployment ready with Docker

  12. Continuous Integration with GitHub Actions

  13. Universal logging configuration based on Loguru. Log sample is like,

    2021-11-09 10:57:55.362 | WARNING  | MainThread      | home_guardian.configuration.loguru_configuration:configure:61 - Loguru logging configured
    2021-11-09 10:57:55.367 | WARNING  | MainThread      | home_guardian.configuration.thread_pool_configuration:configure:18 - Thread pool executor with 8 workers, executor: <concurrent.futures.thread.ThreadPoolExecutor object at 0x10ad487c0>
    2021-11-09 10:57:55.603 | INFO     | MainThread      | home_guardian.repository.model.base.model:<module>:7 - SQLite database path: /Users/johnny/Projects/PyCharmProjects/home_guardian/home_guardian/_data/home_guardian.db
    2021-11-09 10:57:55.603 | WARNING  | MainThread      | home_guardian.repository.model.base.model:<module>:9 - Initialized db file: <peewee.SqliteDatabase object at 0x10ad48fa0>
    

Usage

  1. Clone or download this project.

    $ git clone https://github.com/johnnymillergh/python_boilerplater.git
  2. Build with newest PyCharm.

  3. Click the green triangle to Run.

Setup

  1. Install dependencies

    $ pipenv install --dev
  2. Setup pre-commit and pre-push hooks

    $ pipenv run pre-commit install -t pre-commit
    $ pipenv run pre-commit install -t pre-push

Useful Commands

Run unit test

$ pipenv run pytest --cov --cov-fail-under=50

Conventional Changelog CLI

  1. Install global dependencies (optional if installed):

    $ npm install -g conventional-changelog-cli
  2. This will not overwrite any previous changelogs. The above generates a changelog based on commits since the last semver tag that matches the pattern of "Feature", "Fix", "Performance Improvement" or "Breaking Changes".

    $ conventional-changelog -p angular -i CHANGELOG.md -s
  3. If this is your first time using this tool and you want to generate all previous changelogs, you could do:

    $ conventional-changelog -p angular -i CHANGELOG.md -s -r 0

CI (Continuous Integration)

  • GitHub Actions is for building project and running tests.
  • Travis CI is for publishing Docker Hub images of SNAPSHOT and RELEASE.

Maintainers

@johnnymillergh

Contributing

Feel free to dive in! Open an issue.

Contributors

This project exists thanks to all the people who contribute.

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Credits

This package was created with Cookiecutter and the sourcery-ai/python-best-practices-cookiecutter project template.

Inspired by How to set up a perfect Python project.

Icon from flaticon - Shield, home.

License

Apache License © Johnny Miller

2021 - Present

home_guardian's People

Contributors

github-actions[bot] avatar johnnymillergh avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

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.