Giter Site home page Giter Site logo

isle's Introduction

ISLE - Inventory System for Lab Equipment

Demo

Created By

Brandon Ruffridge
Brent Gardner

Brief Abstract

This web application allows inventories of assets to be managed. Assets along with their specifications are added to the system and then used by users via a check-in/check-out function. The inventory can be browsed by category or using search. Users are given various roles within the system to allow them to perform certain functions such as view-only, check-in/check-out, modify, and full-control. Inventory managers can add and track detailed information on all inventory assets including manufacturer, storage location, custom attributes, and relationships with other assets. Assets can be found by browsing by category, search, location, or current user. Assets are checked out to specified locations by users.

Description of the Problem That Motivated ISLE's Development

One of our labs at the NASA Glenn Research Center wanted a way to track their inventory of over 350 pieces of equipment, who is using it, and where it is located. They also wanted to give lab users a way to see what equipment is available and see detailed specs on the equipment and check it out for use with their projects. This web based tool was developed to meet that objective.

Technical Description

Developed using web standards and best practices such as Model-View-Controller architecture, Separation of Concerns, and Don't Repeat Yourself.
Fast, intuitive UI featuring a custom application layout built using parts from Twitter Bootstrap, extensive AJAX and jQuery, and combined and minified Javascript and LESS CSS.
Secure and 508 compliant.
Features an innovative built-in bug reporting system to Pivotal Tracker.
Deployed on the mature, open-source Linux, Apache, MySQL, and PHP (LAMP) technology stack.

Get Started

Configuration

Search source code for config-todo: for things you may need to configure.
NOTE: ISLE was modified to be easy to install and configure in a local development environment. Additional configuration steps would be needed to run ISLE in a secure production environment such as changing database credentials and moving them into a separate file and adding that file to .gitignore so the credentials don't go into source control.

How to Contribute

Check out our backlog of the things we want to add/fix. Fork the project, make your changes, test ( we don't have time to test for you ), then submit a pull request. Submit any new bugs or feature requests to the issues page.

Multiple Inventories

ISLE supports multiple "instances" so multiple inventories can be managed separately. Each instance has a unique url, but accesses the same php files and database. Data is kept separate by using different tables.
The instances folder contains two example instances myinstance and myinstance2.

It would be nice to have a bash script to automate creation of additional instances, however it is currently a manual process.

To create additional instances duplicate the instances/myinstance folder and rename to whatever you want to call your instance. Delete the .log files in logs. Then replace myinstance with whatever instance name you chose in all files within the duplicated folder. Also rename isle.local.myinstance.conf to isle.local.INSERT_YOUR_INSTANCE_NAME.conf.
Duplicate webroot/myinstance. Delete any files in uploads except the .htaccess files.
Edit isle-init.sh and copy and paste the following lines for running sql and enabling conf files. Replace myinstance with whatever instance name you chose.

mysql -uroot -p'root' -h localhost isle_dev < "/var/www/instances/myinstance/init.sql"
mysql -uroot -p'root' -h localhost isle_dev < "/var/www/instances/myinstance/data.sql"

cp /var/www/instances/myinstance/isle.local.myinstance.conf /etc/apache2/sites-available/isle.local.myinstance.conf
a2ensite isle.local.myinstance

cat <<EOT >> /etc/logrotate.d/isle-myinstance
/var/www/instances/myinstance/logs/*.log {
        yearly
        maxsize 2M
        rotate 5
        notifempty
        missingok
        su vagrant vagrant
}
EOT

Then run the following so the changes take effect.

vagrant destroy
vagrant up

Building Static Files

When you want to make changes to CSS or JS the files you want to edit are located in:
JS: webroot/isle/cdn/scripts-dev
CSS: webroot/isle/cdn/styles/less

Don't edit files in scripts or css-dev as those are created during the build process.

Build CSS and JS (combines and minifies)

  • Make sure you have lessc installed.
  • cd PROJECT_FOLDER/webroot/isle/includes (this step is important or the build files will not be saved to the correct location)
  • ./build.sh

Keeping Database in Sync for Multiple Developer Teams

Change Workflow:

  • Make changes.
  • ./dbup.sh (option 1)
  • git add, git commit, git push.

Update Workflow:

  • git pull
  • ./dbup.sh (option 2)

Basic Vagrant Commands

Start or resume your server

vagrant up

Pause your server

vagrant suspend

Delete your server

vagrant destroy

SSH into your server

vagrant ssh

Database Access

MySQL

  • Hostname: localhost or 127.0.0.1
  • Username: root
  • Password: root
  • Database: isle_dev

Updating the Box

Although not necessary, if you want to check for updates, just type:

vagrant box outdated

It will tell you if you are running the latest version or not, of the box. If it says you aren't, simply run:

vagrant box update

Setting a Hostname

If you're like me, you prefer to develop at a domain name versus an IP address. If you want to get rid of the some-what ugly IP address, just add a record like the following example to your computer's host file.

192.168.33.10 isle.local

Or if you want "www" to work as well, do:

192.168.33.10 isle.local www.isle.local

Technically you could also use a Vagrant Plugin like Vagrant Hostmanager to automatically update your host file when you run Vagrant Up. However, the purpose of Scotch Box is to have as little dependencies as possible so that it's always working when you run "vagrant up".

Special Thanks To

isle's People

Contributors

bggardner avatar bruffridge avatar jasonduley 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isle's Issues

Cant get this to work right

So I have my log file for apache below, I've been trying to fix this problem for quite some time but have honestly given up. I can't figure out what it is with the connection. I can go to the webpage for my instance but all it says is "oops I'm sorry. Something went wrong. Feel free to submit a bug report."

Can anyone help ?

[Sat Feb 29 01:22:51.172310 2020] [php7:notice] [pid 845] [client 192.168.171.245:62460] Uncaught PHP exception (Code 1045): SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in /var/www/webroot/isle/includes/classes/DataProviders/ISLE.php on line 28\nPHP Stack trace:\n#0 /var/www/webroot/isle/includes/classes/DataProviders/ISLE.php(28): PDO->__construct('mysql:host:127....', 'root', 'root')\n#1 /var/www/webroot/isle/includes/classes/Service.php(18): ISLE\DataProviders\ISLE->__construct()\n#2 /var/www/webroot/isle/includes/auth.php(12): ISLE\Service->__construct()\n#3 /var/www/webroot/isle/includes/config.php(2): require_once('/var/www/webroo...')\n#4 /var/www/webroot/isle/assets.php(3): require_once('/var/www/webroo...')\n#5 {main} *Generated by error.php
root@DietPi:~#

Running without Vagrant or VirtualBox.

Hi guys,
This is great. I really love this work and also this is superb again.
I have a question. I am running LAMP stack. My OS is Arch Linux and I have others to. PHP , MySQL and Apache. Can I run this like a normal application ? Copy and paste files to apache http folder. (like www folder) and configure the database. Like that ? Because I'm not a good fan of Vagrant.

And also why we need VirtualBox ? To create a virtual Linux env ?
I am going to use this for my university lab.
so it's nice if I can run it via localhost.. Just as another PHP application.

And also have you used any framework for this ? Like Laravel or CodeIgnitor ?

Search

I figured out how to set this up and how to add a new field called Asset Tag however if I try to search for something in that field it does not find anything. Can I get a hint at what file to edit to include this new field please? I am at a loss. Thanks for your time.

x-csrftoken Header

I'm testing with Chrome and Nginx and the x-csrftoken header is received as 'X-Csrftoken'. HTTP headers are allowed to be case-insensitive, so the checking of them needs to be too.

Installing on remote server

I'm a novice to a lot of the stuff mentioned in Isle's Read Me installation instructions. I would ideally like to install this on my website so I can access it at http://mydomain.com from anywhere. I purchase hosting from Namecheap.

How would I go about installing it like that? Is it possible?

Any help would be greatly appreciated. This system looks absolutely perfect for what I need.

LDAP support

Hi,
thanks for this great community contribution.
Do have you plan to support LDAP for user management?

Thanks and best regards
Christopher

Error with php version 7

I installed without virtualbox on my server, but i get the following error: Uncaught PHP exception (Code 0): Function name must be a string in /var/www/webroot/isle/remoteInterface.php on line 346 the problem was solved by changing the line to: $rows = $svc->{$_REQUEST['method']}(...);

Running the system on a local machine using XAMPP or LAMP

@bruffridge Sorry for asking a lot and disturbing you. This is me. https://github.com/chanakaDe
And I am trying to configure this to my university lab. We also need the same. First I need to run this on my local machine. I have Arch Linux. And also XAMPP installed. I cloned the project into my '/opt/lampp/htdocs/isle-master' location. It's the server location of Arch Linux. And I think your document root is 'webroot'. So I typed 'http://localhost/isle-master/webroot/' in browser and it only gives me "Enter your inventory URL.". Is there any wrong with my local setup ? I didn't still dumped the database table.

And also please tell me where I can get database script to restore to my local mysql instance.

And also when I go to 'http://localhost/isle-master/webroot/isle' , I get this message.
"Object not found!"...... I think there's something wrong with re-write engine. I have to use .php to get that location. I have experience in Laravel and CodeIgnitor. But this is little different.

Can you please guide me on this ? to setup this on my local machine ?
Then I can take a Digital Ocean droplet and host this to use in my university.
And we can mention your support on our university web blog.

Please reply me when you can. Waiting for it.

RTL Support?

This looks great. Thanks!

Any plans to support RTL?

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.