Giter Site home page Giter Site logo

akshayrdeodhar / killikuthe Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 187 KB

A laboratory key tracking web app for colleges. DBMS Project.

Python 56.10% Makefile 0.02% Shell 0.09% HTML 38.56% TSQL 5.22%
mysql mysql-connector-python database web-app

killikuthe's Introduction

Killi Kuthe?

A web application for tracking keys of college labs

Problem Statement

  • Colleges like COEP have a number of clubs each who work in particular labs- for example, the COEP satellite team works in the FABLAB of production department, and Groundstation in Metallurgy Terrace.
  • As a result, they need access to keys to these labs, along with the key to Metallurgy Department Backdoor
  • Some of these keys are also accessible to M Tech research groups or Cultaral Team may have access to the Meta Backdoor key.
  • A real problem faced is this- when I want to unlock a lab, I can't find the key in it's designated place- some other person might have taken it, or may have kept it at some other place. Now I don't know whom to call, so I spam whatsapp groups, call random people who are likely to have the key.

Introduction

  • A web app with a database at the back end can be used to solve this problem
  • The database can be used to track who has which key, and the web app can be used to modify the database when people pick up keys, hand them over to someone else, etc
  • A system is already in place where club members need to make entries with the security section when he takes the key from it's designated place.
  • The database will track-
  1. Which students are members of which clubs
  2. Which clubs have permissions to access which keys
  3. Who has which key / at which place is the key kept- along with contact numbers and email IDs of people, for easy communication
  • Besides these core features, other expansions can be made- like integration with the MIS database of the college, or mantaining logs of key pick up / put in place / handover transactions

  • Another point to be noted is that keys, doors, people, clubs, club managers, key requests provide an excellent exercise in database design, as they involve a large amount of relations, foreign key constraints, and even a real example of a weak entitiy set!

Technologies

  • This app uses MySQL, it's MySQL/Python connector (described at [https://dev.mysql.com/doc/connector-python/en/](MySQL Python Connector official documentation)) as the Model or the Database at the back end.
  • Flask- a micro-web framework for Python is used as the Controller. Flask is not suitable for large scale applications, but is perfect for an application that will only run for 1000 people (number of college students) https://flask.palletsprojects.com/en/1.1.x/
  • Bootstrap, an easy to use CSS + Javascript template library used for front end, so as to minimize the effort spent on developing it. Bootstrap
  • Additionaly, MySQL Workbench was used as aid for designing the Database in SQL.

Functional Requirements:

Functionalities in which database is modified

  1. Registering a user (so that he can become a member of a club)
  2. Adding a place (a place may have multiple keys)
  3. Registering a club, with a manager / secretary
  4. Changing the manager of a club
  5. Adding members to a club (to be done by the club secretary)
  6. Adding a key for a place (this is a real key, which is a weak entity existent dependent on the place)
  7. Grant permission to a club to use a key
  8. Take away permission of a club to use a key
  9. Pick up a key- change it's location from a place to a person
  10. Place a key- change it's location from a person to a storage place

Moving a key from one person to another should be a handshake. Else a person giving could falsely claim to have given it, and the person taking it may falsely claim to have taken it. The mechanism here is that a person requests the holder to transfer the key to them. The holder confirms the transfer when the physical transfer happens.

  1. Request a key from a person
  2. Transfer a key to a person requesting it
  3. Remove a person from a club

A place can be a key store- such a place would allow keys of places other than it's own to be placed there. (eg. security section, FABLAB)

  1. Change the storage status of a place.

Besides this, there are a number of views required (not in the CREATE VIEW sense, but in the sense that users need to be able to see data)

Functionalities which require queries on the database

  1. See all people
  2. See all clubs
  3. See all places
  4. See the keys of a particular place

A place can have many keys.

For people

  1. See all keys which one is allowed to use (according to club membership) which are placed at some storage place
  2. See list of all keys one has requested from someone
  3. Cancel a request (TODO)
  4. Get a list of keys one is allowed to use held by someone else, but one has not made a request for it
  5. Get a list of keys one holds
  6. Get a list of requests of keys to you
  7. Get a list of valid places to keep the key
  8. See a list of clubs one is a manager of
  9. Get a list of clubs one is a member of
  10. Get a list of people who are not a part of a club (so as to add them) TODO
  11. Get a list of keys for a place, and lists of those clubs which can and cannot access them (for adding / removing permissions)
  12. Check whether a person is allowed to use a key

Entity-Relationship Diagram

"Few entities LOTS of relations.

ER Model for the Killya Database

Relational Schema Diagram

Lots of relations are one-one, so only foreign key suffices

Schema Diagram for the Killya Database

killikuthe's People

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.