HotinGo - The Hotel Management System
Explore the docs ยป
Design file on Figma
ยท
Report Bug
ยท
Request Feature
Table of Contents
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.
Here is a sneak peak of the application and it's visuals ๐:
Login |
Dashboard |
Add Reservation Page |
Update Reservation |
View Reservations |
Confirm Logout |
About Page |
Want to create your own iteration? View the designs on Figma, and then export to Python code with Tkinter Designer โ๏ธ.
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.
The following technologies were involved in the making of this project.
- Python 3 ๐ - For running the main application code
- Tkinter & TTk - For the user Interface
- MySQL Server ๐ฌ - For handling database and queries
- MySQL Connector Python - For querying MySQL through python
- Tkinter Designer โ๏ธ - For exporting the Figma user interface to python code
- Numpy ๐งฎ - As a dependency for Matplotlib
- Matplotlib ๐ - For creating and showing graphs and visualizations
- Python Dotenv ๐คซ - For loading environment variables from the
.env
file
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.
This is an example of how to list things you need to use the software and how to install them.
- Python 3 - Download instructions here
- Pip 3 (usually gets installed automatically with Python)
- MySQL Server - If you haven't already, download the package from here, then create a user account and note the username and password
If all the above are satisfied, you may proceed to the next section.
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.)
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
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
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
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)
Start by renaming the .example.env
file just .env
, and then replacing the Your-Username
and Your-Password
values with the MySQL credentials.
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.
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.
Here are some things you may try with the app
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.)
-
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).
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
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 - [email protected]
Project Link: https://github.com/Just-Moh-it/HotinGo
- Parth Jadhav and team for their Amazing Tkinter Designer. This project would not have been what it is and looks without it. Highly recommend checking it out.
- Nikuu 3d Illustration Pack by Paperpillar - Illustrations used on the dashboard and the login page
- Montserrat Font Creators