Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

gollum18/senslify-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Senslify

Welcome to Senslify. Senslify is a web visualization tool for dislaying archived and live sensor data in real-time. Senslify makes extensive use of asynchronous programming as well as modern advancements in web streaming to provide a modern approach to sensor visualization.

A Note on Security

The database for Senslify is intentionally unsecured as Senslify is a front-end for a research project. If and when I decide to release Senslify in the wild, I will implement security on the database side of the application. However, as what is currently a private use project, I (as well as others in the project) do not want to introduce additional complexity in running the software. If you fork the software and want to use it yourself, then I implore you to implement some sort of database security before deploying the software, otherwise, you'll be in for some difficulties in the near future.

Dependencies

Senslifies server is written in pure Python3 and has the following dependencies.

aiohttp-jinja2 is an extension to the aiohttp asynchronous web framework that provides jinja2 templating to aiohttp (jinja2 can best be seen in frameworks like Flask).

aiodns and cchardet are technically optional dependencies. They are not required to run the server, but provide additional support that increase the servers efficiency. As such, they are recommended.

I employ gevent primarily as a means to make the pymongo MongoDB connector async compatible. PyMongo is generally already async compatible but an overlay has to be constructed on top of the driver to make it work. I had considered using a library like Motor or aiomongo, but for reasons documented elsewhere in this project, I have decided to stick with PyMongo.

In addition to the above Python3 requirements, Senslify automatically pulls in the following Javascript and CSS libraries client side:

Bootstrap provides the theming functionality for the web application (although its not currently themed as of yet).

Chart.js is a free graphing/charting client side Javascript library for displaying datapoints in real-time. I considered several alternatives before coming across Chart.js but most were paid/non open-source, while Chart.js was an antithesis to both. Plus it nicely handles automatic resizing, and animation. It also integrates well with bootstrap. Sensor data is displayed in real-time using WebSockets - RFC 6455, Mozilla API.

Finally Senslify relies on the following external programs:

While Senslify is setup to use MongoDB, it does not have to. I have recently generisized the database interface so users of this software should just be able to implement their own database interface on top of a connector of their choice, as long as the connector is async compatible.

Roadmap

The following lists the features I plan to implement in the future:

  • Users and authentication
  • User groups and sensors
  • API authentication tokens
  • User registration and account management

Documentation

Much of the documentation for this project is auto-generated via Sphinx. However, there are certain documents (found in the 'Root/Docs' folder) that contain additional information regarding the Senslify project such as a formal description of the structure of the database.

About

aiohttp frontend for the Senslify web application.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published