Giter Club home page Giter Club logo

holidays's Introduction

Holiday booking

If you're looking to book a holiday online, there are several options available to you. Here are the steps you can follow to book your holiday online: Decide on your destination and dates of travel. Holiday Booking platform that includes a time-off tracking system for employees. It allows you to request vacation time, view your remaining balance, and see who else on your team has scheduled time off.

375 x 1180

375x1180

768 x 1180

768x1180

1024 x 1180

1024x1180

1440 x 1180

1440x1180

Live Site

Holidays

Content

Business goals

The objective of a holiday booking company in this context would be to provide an exceptional service that meets the needs of employees and companies, leading to a positive experience for the corporate group. This can help build long-term relationships. In addition, it can help the company to organize itself better with the help of this site.

User experience

As an unauthorized user:

  • Ability to access all the features and functions available to an authorized user, such as booking holidays, changing or canceling bookings, and viewing personal information.
  • A user-friendly interface that makes it easy to navigate the site and find the desired information or features.
  • Clear and concise instructions on how to use the site's features and functions, including any necessary steps for booking or modifying a holiday.
  • A reliable and secure system for booking holidays, changing bookings, and canceling bookings.
  • Prompt and effective customer support, including email or phone support, for any questions or issues that may arise during the booking process or during the holiday itself.

As an authorized user:

  • Navigate the site easily and efficiently to view all the content you need.
  • Create an account with a simple and easy process.
  • Book a holiday for a specific time and date, choosing from available options and making payment through the site's secure payment gateway.
  • Receive a confirmation email once the booking is complete, which includes all the relevant details about the holiday.
  • Change the day of your holiday to a different date or time, if the website offers this feature. This may be subject to availability and may require additional payment if the new dates are more expensive than the original booking.
  • Cancel your holiday, if the website offers this feature. The cancellation policy would typically be outlined in the terms and conditions.

As an administrator, I can:

  • Viewing all available holidays and managing the booking system to ensure that the website's inventory is up-to-date and accurate.
  • Reviewing and authorizing holiday requests from users, based on criteria such as availability, employee schedule, and other factors.
  • Creating new user accounts if necessary, in order to provide access to the site's features and functions for new employees or customers.
  • Managing user accounts and permissions, including setting access levels, resetting passwords, and monitoring activity on the site.
  • Troubleshooting technical issues and providing support to users, including responding to inquiries and resolving any problems that arise.

User stories

  • Provide a registration option for users to create an account and access the booking features.
  • Offer a clear option to opt out of sharing personal information for those who value their privacy.
  • Be designed with easy navigation and user-friendly interface to make it easy for users to find information and take actions.
  • Send a confirmation email after booking to ensure that users have a record of their reservation information.
  • Allow users to cancel their reservation to provide flexibility in their travel plans.
  • Display users' booking information clearly for easy reference.
  • Have a secure login system to ensure the privacy and security of user information and booking details.
  • Provide a prominent "book" button on the homepage to make it easy for users to initiate the booking process.
  • Implement appropriate security measures to ensure that only authorized users can make updates to their reservations.
  • By meeting these user requirements, a holiday booking site can offer a positive user experience that is easy to use, secure, and meets the needs of its customers.

Admin stories

  • User Account Approval: As an administrator, you may receive a notification that a new user has registered on the site. You would then review the user's account details, such as name, email, and other information, to verify that they are a legitimate user. You would also check that their account has been created with the appropriate level of access and permissions, based on their role and responsibilities. Once you have confirmed that the user's account is valid and complete, you would approve their account and notify them that they can now log in to the site.

  • Holiday Request Approval: As an administrator, you would receive notifications when a user has requested a holiday booking. You would review the request details, such as the dates and location of the holiday, and check that the requested dates are available and that the user has sufficient vacation time or other permissions to take the holiday. You would also check that the user's account is in good standing, with no outstanding balances or other issues that would prevent them from booking a holiday. If the request is valid and meets all the necessary criteria, you would approve the holiday request and notify the user that their booking has been confirmed.

  • Holiday Inventory Management: As an administrator, you would have access to the site's inventory management system, which allows you to view all available holidays and make updates as necessary. You would check that all the holidays listed on the site are up-to-date and accurate, with correct pricing, availability, and other details. You would also monitor the inventory levels to ensure that there are enough holidays available to meet user demand, and make adjustments as necessary to avoid overbooking or underbooking. If there are any issues or discrepancies with the inventory, you would investigate and resolve them promptly, to ensure that users have a positive experience when using the site.

Agile Methodology

Using Github projects to track user stories and organize tasks based on their level of importance is a key aspect of Agile methodology. By breaking down development into smaller, more manageable tasks, and prioritizing them based on user needs and feedback, developers can ensure that the app meets user expectations and delivers value in a timely and efficient manner. The use of Agile methodology can also help developers to adapt to changes in user requirements or market conditions, and to continuously improve the app over time based on user feedback and usage data.

  • MUST HAVE
  • SHOULD HAVE

By using AGILE methodology in this project I was able to deliver a site which had all required functionality and was able to give even more extra detail when going through the project.

I used GitHub projects board to create the user stories and keep track of my tasks. Here is the link to my board - Project board)

Here is also a screenshot overview

Project

CRUD functionality

Holiday Booking data with full CRUD Functionality:

Create - Users can create a new account and make a booking for their specific requirements. This involves creating a new record in the database that contains information about the user and their booking details, such as the date and time of the booking, the number of people in the group, and any special requests or requirements.

Read - Users can view their booking details in the "Manage Booking" section of the app. This involves querying the database for the relevant record(s) based on the user's login credentials or booking ID, and displaying the information in a user-friendly format.

Update - Users can update their booking by changing any of the details within the booking form. This involves updating the relevant record(s) in the database with the new information, and notifying the user that their changes have been saved.

Delete - Users can delete their booking from the database. This involves removing the relevant record(s) from the database and notifying the user that their booking has been cancelled.

Wireframes

It's great that you're considering responsive design for smaller devices like tablets and mobile phones. Adapting the layout to stack the columns, providing a single-column navigation menu, and using a dropdown for smaller screens are all good practices for mobile responsiveness.

image-2

image-1

image

9f033a7b-b0c9-4aeb-bed8-921036e5b8b1

image-4

image-3

Features

Header

Header based on login and sign Up and dark mode. Login to enter your email and password. Sign Up to register.

image

Hero image

A hero image, also known as a banner image or header image, refers to a large, prominent image displayed at the top of a webpage. It typically spans the full width of the page and is designed to grab the user's attention and convey the main message or theme of the website.

Home.mov

image

Login

A login tool, also known as a login form or login module, is a user interface component on a website or application that allows users to authenticate themselves and access restricted or personalized content. It typically consists of fields for entering a username or email and a password, along with a "Login" button.

image

Add time off

Adding a time off booking feature to a holiday website can provide users with a convenient way to request and manage their vacation time. Here are some key considerations for implementing a time off booking feature on a holiday website:

add.time.mov

image

Add Department

It will add department right after the reason with the start date and end date.

image

Reason

Determine the reason for requesting the holiday.

image

Start and end date

Determines the start and end date of the holiday, you cannot put the dates retroactively, before today.

image

The start date is invalid

When the user enters the retroactive date he receives a message saying that it is not possible to create.

image

ADMIN

Django admin can manage 5 parameters User: ocimar / Pass: admin

django

admin.mov

Accounts

Where the super user can delete registered emails

image

User

Where it displays user name and email information.

user

Nightmode

Implementing a night mode feature on a website involves modifying the website's CSS (Cascading Style Sheets) to change the color scheme and adjust other visual elements. Here are the general steps to create a night mode feature.

night.mode.mov

Departmens

Here is where the super user can create the departments that are used in the company.

image

Time offs

Where it shows the movement of requests created by users.

image

Change time off

On this page there is all the information about the user's request:

  • User - User name;
  • Department - Which department the applicant works in;
  • Holiday Start - Start date;
  • Holiday end - End date;
  • Hours - Amount of hours the user will spend on their holiday;
  • Reason - What is the reason for requesting the holiday.

image

Status

To approve the basque holiday write something in the status the holiday will be approved.

image

Disapproval

To disapprove the holiday request, the super user just delete the request, so it will disappear from the history, For the future thinking about developing some other tool

image

image

Future Features

  • Add a button for the user to edit the holiday date.
  • Allow the user to see why their request was denied.
  • Improve the user experience on the website.
  • Add a form if the user forgets the email receives a link with a temporary password.

Testing

Lighthouse

The application has been tested with Chrome Dev Tools Lighthouse Testing which tests the application for:

  • Performance
  • Accessibility
  • Best Practices
  • SEO

Home Page

image

Booking Page

image

Adm Page

image

HTML Validator

When running my HTML code through the HTML Validation service, I encountered a few minor errors that have now all be corrected.

This is the home page -

HTML test

This is the main page where the user makes the request, there is an error being used in my HTML that is impossible to correct.

image

CSS Validator

When running my CSS code through the CSS Validation service.

I used django-crispy-forms to improve all my layouts, I did my best to remove the error but every time I changed something it didn't work.

CSS test

JSON Validation

Valid JSON

image

Python Vaildator

When running my code through the CI Python Linter Validation

Python test

Manual

Verify that the website loads properly without any errors. Check that the navigation menu is displayed correctly. Ensure that the homepage content is visible and properly formatted. Verify that any images or media on the homepage are displayed correctly. Search Functionality

https://docs.google.com/spreadsheets/d/14IOgHDqhm2oafJCocH2HDPnnSyy-PY2jPVagz_ujWP0/edit?usp=sharing

image

Security Features

  • If a logged-in user attempts to deduce the delete URL for others' bookings, they receive a warning message. This serves as a reminder that they can only delete their own bookings and discourages unauthorized actions.
  • Message failure occurs when a user tries to update a booking for a time that is already booked. This prevents double booking and ensures that each time slot is reserved for only one user.
  • Users who do not own a particular booking receive a message failure when attempting to update it. This ensures that only the rightful owner can modify their bookings.
  • The custom 500 error page is activated for various reasons, including when a user tries to delete a booking they do not own or when they attempt to access a non-existent booking.
  • If a user is not logged in and tries to deduce the delete URL to delete someone else's bookings, they are redirected to a custom 500 error page. This indicates that the action is not allowed and prevents unauthorized deletion of bookings.

Images

I used the following website to get my free stock images from -

Technology used

  • Django - Django is a popular Python-based web framework used for building web applications. It follows the Model-View-Template (MVT) architectural pattern and provides a robust set of tools and features for rapid development.
  • Bootstrap - Bootstrap is a widely used CSS framework that provides a responsive grid system and pre-designed CSS components. It helps in creating a visually appealing and consistent user interface across different devices and screen sizes.
  • HTML5 - HTML5 is the latest version of the Hypertext Markup Language, which is used to structure the content of web pages.
  • CSS3 - CSS3 is the latest version of Cascading Style Sheets, used for styling the visual presentation of web pages.
  • JavaScript - JavaScript is a programming language that allows for interactive and dynamic elements on web pages. It is used to enhance the user experience and add functionality to the website.
  • Python - Python is a versatile programming language used for backend development in the Locksmith Booking system. It is the primary language used by Django.
  • Gitpod - Gitpod is an online integrated development environment (IDE) that allows developers to write, edit, and collaborate on code in a browser-based environment.
  • GitHub - GitHub is a web-based hosting service for version control using Git. It is commonly used for hosting and managing code repositories.
  • Heroku - Heroku is a cloud platform that allows developers to deploy, manage, and scale web applications. It is used to host the deployed version of the Locksmith Booking system.
  • CI Python Linter - CI Python Linter is a tool used to validate Python code and ensure code quality and adherence to coding standards.
  • HTML Validation - HTML Validation is a process of checking HTML code against standard HTML rules and specifications to ensure that it is well-formed and valid.
  • CSS Validation - CSS Validation is the process of checking CSS code for errors, syntax issues, and adherence to CSS standards.
  • JSHint Validation - JSHint is a tool used to validate JavaScript code and detect potential errors and code quality issues.

Frameworks, Libraries & Programs Used

  • github
  • gitpod
  • Photoshop
  • google forms

Deployment

Local deployment

  • Start from installing the chrome extension then clicking the green gitpod button in YOUR forked repository
  • Include the pip3 install -r requirements.txt
  • Creating env.py ["DATABASE_URL"] = 'YOUR_VALUE' ["SECRET_KEY"] = 'YOUR_VALUE' ["SMTP_PASSWORD"] = 'YOUR_VALUE'

Heroku

Captura de Tela 2023-06-03 às 12 28 26

  • In the 'Config Vars' section, you can add environment variables that your deployed app will use. These variables typically include sensitive information such as database credentials or API keys. To add the necessary variables for your app deployment, follow these steps:

  • Open your Heroku dashboard and select your app.

Navigate to the 'Settings' tab.

  • Scroll down to the 'Config Vars' section.

  • Click on the 'Reveal Config Vars' button to reveal the current variables or create new ones.

  • Add the necessary environment variables for your app. Each variable should have a key-value pair, where the key represents the variable name and the value is the actual value you want to assign to it.

  • For example, if you need to set a variable named DATABASE_URL with the corresponding database URL value, click on the 'Add' button and enter DATABASE_URL as the key and the actual database URL as the value.

  • Continue adding all the required environment variables for your app.

  • Once you have added all the necessary variables, click on the 'Save' button to save the changes.

  • Open the Gitpod terminal in your project.

  • Log in to your Heroku account by entering the following command and providing your Heroku credentials.

  • Once authenticated, set the remote repository for Heroku by entering the following command, replacing {app_name} with the name given to your app on Heroku.

  • Make sure all the necessary changes in your code are added and committed. If you have any pending changes, use the following commands to add and commit your changes.

  • Push your changes to both GitHub and Heroku by entering the following commands.

  • The first command git push origin main pushes your changes to the GitHub repository, and the second command git push heroku main deploys the app to Heroku.

  • Once the deployment process starts, you can monitor the deployment logs by going back to the App page on Heroku and clicking on "More" in the top right corner. This will provide you with information about the deployment progress and any potential errors.

  • Once the deployment is finished successfully, you should be able to see your deployed site by clicking on "Open app" in the top right corner of the Heroku app page.

Create a Fork

  • Open your web browser and go to GitHub.com.
  • Navigate to the repository you want to fork.
  • On the top-right corner of the repository page, you'll find the "Fork" button. Click on it.
  • A dialog box will appear asking you to select the owner for the forked repository. Choose your own account or the organization you want to fork the repository to.
  • By default, forks are named the same as their upstream repositories. If you want, you can change the name of the fork to distinguish it further.
  • Finally, click on the "Create fork" button to initiate the forking process.

Credits

  • Code Institute Template
  • gitpod
  • json
  • bootstrap
  • google forms
  • VS code

Acknowledgements

I would like to express my heartfelt gratitude to my brother Vitor Mateus for his unwavering support and encouragement from him throughout the entire construction of this website. His invaluable feedback and assistance from him have been instrumental in shaping the project.

I would also like to extend my sincere appreciation to my mentor Malia for his guidance and expertise. Their mentorship has been invaluable in enhancing my skills and providing valuable insights during the development process.

holidays's People

Contributors

ocimar84 avatar

Watchers

 avatar

holidays's Issues

ADMIN STORY: Login to book

As a site admin I can add an option that if the user tries to place a booking without being logged in, users will be asked to login/sign up.

USER STORY: Book Button

As a user I can click the book button on the home page so that I can be taken to the booking page

USER STORY: Navigation

As a user, I want to be able to easily navigate through the website/application so that I can find the information I need quickly and efficiently.

To achieve this, I would like the following features:

  • Clear and consistent navigation: I want to see a clear and consistent navigation menu that is easy to locate and understand. It should include all the main sections of the website/application and be organized logically.

  • Search bar: If I am looking for something specific, I would like to have a search bar that is easily accessible from any page. This search bar should be able to quickly and accurately find the information I am looking for.

  • Breadcrumbs: Breadcrumbs are a helpful way to show users where they are within the website/application's hierarchy. I would like to see breadcrumbs at the top of each page to help me understand where I am in relation to the rest of the website/application.

  • Sitemap: A sitemap is a helpful tool for users who want to see the structure of the website/application. I would like to see a sitemap that lists all the pages and sections of the website/application in a clear and organized manner.

  • Mobile-friendly navigation: If I am using the website/application on a mobile device, I would like the navigation menu to be optimized for smaller screens. This could include collapsible menus, drop-down menus, or other mobile-friendly navigation options.

Overall, I want the website/application to have a user-friendly and intuitive navigation system that makes it easy for me to find what I need quickly and efficiently, whether I am using a desktop computer or a mobile device.

USER STORY: Header

As a user I can see a header so that I can read additional information about the company

ADMIN STORY: Hero Image

As a site admin I can display a hero image so that the user knows exactly what webpage this is

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.