/HotinGo

A ๐Ÿฌ MySQL + ๐Ÿ Python's Tkinter-based ๐Ÿ– Hotel Management System with a ๐Ÿ˜ beautiful user interface.

Primary LanguagePythonMIT LicenseMIT

Contributors Last Commit Forks Stargazers Issues MIT License


Project Banner

HotinGo - The Hotel Management System
Explore the docs ยป

Design file on Figma ยท Report Bug ยท Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Project Banner

HotinGo is an open source, design-focued and the coolest Python-based Hotel Management System on GitHub. Built with Python 3, Tkinter and MySQL, and initially created as a high school CS project, it comprises of all the necessary Hotel Management features like:

  • Login ๐Ÿ”‘ and Authentication through ๐Ÿฌ MySQL database ๐Ÿ˜
  • The ability to add, update, view and delete new records for:
    • ๐Ÿ” Rooms,
    • ๐Ÿ’ Guests, and
    • โฐ Reservations
  • Secret Storage ๐Ÿ‘ฎ and handling using ๐Ÿ’ป environment variables

This project was created as a proof that ancient frameworks like Tkinter could be used to create impressive applications with beautiful user interfaces.

(back to top)

Screenshots

Here is a sneak peak of the application and it's visuals ๐Ÿ˜:

Login Screen

Login

Dashboard

Dashboard

Add Reservation Page

Add Reservation Page

Update Reservation Screen

Update Reservation

View Reservations Screen

View Reservations

Confirm Logout

Confirm Logout

About Page

About Page

Want to create your own iteration? View the designs on Figma, and then export to Python code with Tkinter Designer โ˜„๏ธ.

(back to top)

Motivation

This project was created as a 12th grade Computer Science Project. Extra efforts were put in to make it stand out among others' projects, and since it was never meant to be used in real life, practicality was not the top most concern.

More info...

As per CBSE (the Central Education Board) in India, students with Informatics Practices as a subject need to show their knowledge of Python and MySQL by creating an application that gets evaluated at the end of the year by an examiner/teacher from other schools, and hence the final grades for high school are determined. So, the application was a culmination of team effort, endurance and dedication of our duo. You could see through the commit history, where we started, how it stagnated and then we got the project where it is today.

(back to top)

Built With (Tech Stack)

The following technologies were involved in the making of this project.

(back to top)

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

If all the above are satisfied, you may proceed to the next section.

Installation

Follow these insturctions to setup your own instance of the app:

(PS: The instructions may look lenghty, but they;re simple and just explained in detail, so please don't click away. I would highly recommend you having a look at the codebase and trying the app for yourself.)

1: Clone the repo

Find instructions for cloning/downloading this repo here, then unzip the repository

Or if you have git command line installed, clone using this command:

git clone https://github.com/Just-Moh-it/HotinGo.git

2: Cd to the folder

Open terminal/cmd/powershell and change directory/folder to the cloned folder. Here are the instructions

The command for the same would be

cd Location\ To/Hotingo

3: Install the PIP packages/dependencies

After you cd into the repo folder, ensure you see the following cmd/terminal prompt

Something.../HotinGo $

If not, repeat the previous step.

After this, run the following command in cmd/terminal:

pip install -r requirements.txt

4: Setup the database

To create the database from the MySQL schema, either:

1: Copy-paste the contents of sql/hms.sql directly into the MySQL command line, or

2: Use the command to do it automatically (from cmd)

mysql -u <mysql-username> -p<mysql-password> < hms.sql

This will create and setup the database.

(Note: Don't include the "<>" angular brackets in the command, and replace the <mysql-username> and <mysql-password> with the credentials created, as discussed in the Prerequisites Section)

5: Add database credentials to the app

Start by renaming the .example.env file just .env, and then replacing the Your-Username and Your-Password values with the MySQL credentials.

6: Installing Fonts

In order to make the app's gui look good, you will have to install the Montserrat font. From the assets folder, install all three fonts (with .ttf format) by double clicking them.

7: It's done ๐ŸŽ‰ | Run the app

Run main.py file with python 3 and you should see the login window, if you have followed each step correctly.

The default username and password are username and password respectively.

If your app does not run properly, or gives an error, research about it until you find the solution, or else create an issue here. Someone will troubleshoot the issue.

(back to top)

Extras

Here are some things you may try with the app

Adding new users

To add new login credentials, you will have to create new users by directly adding records to the database in the login table. Run the command to insert new login credentials:

INSERT INTO login (username, password) values ("your-username", "your-password");

(PS: This is the only part of the app that requires direct database interactions, since you can't add a signup page to an admin-based application without compromising on security, though our previous app versions had the feature, along with reset and forget password.)

(back to top)

Roadmap

  • Add singup and forget password capabilites (issue #3)
  • Adding bcrypt hashing to passwords (Issue #2)

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Mohit Yadav will be handling and maintaining the project and add releevant updates if necessary. Here are the contact details:

Mohit Yadav - @just_moh_it - mohit@mohit.yayy.me

Project Link: https://github.com/Just-Moh-it/HotinGo

(back to top)

Acknowledgments

(back to top)