Filmon-gh / aquapulse-haven

0 stars 2 forks source link

aquapulse-haven

AquaPulse Haven is a riverside destination that offers a range of activities and beautiful views for visitors. Situated by the riverbanks, this site provides opportunities for picnics, entertainment, and enjoying the scenic beauty of the river. Visitors can choose from activities such as kayaking, fishing, or having a barbecue. Our user-friendly reservation system makes it easy for you to plan your visit and enjoy a day by the river. Explore all that AquaPulse Haven has to offer and make lasting memories along the river.

UX

Overview

AquaPulse Haven is a fictional riverside destination brought to life through this web-based reservation system. The primary aim is to provide visitors with an enticing glimpse of the serene location, unique recreational offerings, and the ability to effortlessly plan their visits.

Database Schema

Reservation model

id Field
user OneToOneField
first_name CharField
last_name CharField
email EmailField
date DateField
time CharField
party_size PositiveIntegerField
phone CharField
created_at DateTimeField

Site User

Our target audience includes:

Locals seeking exciting, new riverside experiences. Enthusiasts of themed events and outdoor activities. Individuals who prefer the convenience of digital reservations over traditional booking methods. Goals for the Website

Agile Development

This project was initiated alongside a GitHub Projects Page to facilitate the tracking and management of the expected workload. The primary goal was to outline the anticipated workload, identify epics, and subsequently break them down into user stories or manageable tasks. This systematic approach allowed for efficient progress and tracking.

Throughout the development process, I continually worked on and updated the user stories, acceptance criteria, and tasks. This dynamic approach allowed for real-time adaptation to project needs and a more agile response to evolving requirements.

Upon completing a task, I marked it as done, and if all aspects of a user story were completed, I moved it from the "In Progress" column to the "Completed" column.

This dynamic and adaptive approach ensures that I have a clear understanding of my project's status and allows for efficient management of user stories in response to evolving project needs.

User stories

Features

Navigation Link

The AquaPulse Haven website boasts a navigation menu to ensure a seamless and user-centric experience. Below are the key navigation elements designed to facilitate efficient access to various sections of the site:

About Us

The project features an "About Us" section dedicated to providing insights into the services and offerings. This section is designed to offer transparency and establish a connection with users by sharing relevant information about the services provided.

Image for the River Side Picnic

A notable feature of the project is the inclusion of captivating images showcasing the serene riverside picnic spots. These images are intended to create an immersive experience for users, offering a visual glimpse of the scenic beauty available at AquaPulse Haven.

Footer

The project incorporates a well-structured footer that provides essential information. In the footer, users can find links to social media profiles, contact details, and other relevant resources. The footer is designed to enhance the overall user experience and improve site accessibility.

Reservation Form (Booking and User Details)

The Reservation Form is designed for booking and capturing user details.

Tools & Technologies Used

HTML: Utilized for creating the main site content, ensuring a structured and semantic layout.

CSS: Employed for crafting the main site design and layout, enhancing the visual presentation.

JavaScript: Empowered user interaction on the site, enhancing user engagement and functionality.

Python: Serves as the backend programming language, enabling server-side functionality.

Django: Utilized as the Python framework to construct and manage the site's backend logic.

PostgreSQL and ElephantSQL: Employed for relational database management, ensuring data integrity and efficiency.

Heroku: Chosen as the hosting platform for the deployed backend site, ensuring reliability and scalability.

Git: Employed for efficient version control, including operations like "git add," "git commit," and "git push."

GitHub: Utilized for secure online code storage, facilitating collaboration and code management.

Gitpod: Served as the cloud-based Integrated Development Environment (IDE) for streamlined development processes.

CSS Flexbox and CSS Grid: Employed to create an advanced responsive layout, ensuring optimal adaptability across various devices.

Gunicorn: Employed as a server provider to serve the site efficiently and reliably.

Psycopg2: Utilized as the PostgreSQL database adapter, facilitating seamless communication between the application and the database.

Testing

Account Registration Tests

Test Result
User can create account Pass
User can successfully log in Pass
User can log out successfully Pass

User Navigation Tests

Test Result
User successfully navigates to Reservations Pass
User accesses the account profile page Pass
SuperUser successfully accesses admin panel Pass

Security Verification Tests for User Accounts

Test Result
Non-logged-in user can make a reservation Pass
Non-logged-in user can access the profile page Pass
Non-superuser can access the admin panel Pass

Reservation Tests

Reservation Functionality Test Description Outcome
Reservation Creation User successfully makes a reservation with all fields completed Pass
Form Submission Handling User can not submit a reservation with an empty form pass
User can not submit a form without an email address pass
Visibility and Management User can view their reservations from their profile Pass
Reservation updating User can update a reservation Pass
Reservation Deletion User can delete a pending reservation Pass

Google Lighthouse Testing

mobile

Desktop

css code

python code checking (no error)

Deployment on Heroku

I successfully deployed my Django project on Heroku, and this concise guide outlines the steps I took to seamlessly host my application and database on Heroku's cloud platform.

  1. Heroku Account Setup I signed up for a Heroku account and I logged in to my Heroku account.

  2. Create a New App Visited the main Heroku Dashboard. Clicked 'New' and then 'Create New App.' Provided a unique project name and clicked 'Create App.'

  3. Database Configuration On the deploy tab in Heroku, added 'Heroku Postgres' as my database.

  4. Configure Environment Variables In the 'Settings' tab, under 'Config Vars,' copied the 'DATABASE_URL' to the clipboard. In my Django app repository, created a new file named env.py. Set the 'DATABASE_URL' and secret key in env.py.

  5. Heroku Config Vars Added the secret key to Heroku Config Vars: KEY: SECRET_KEY VALUE: The secret key from env.py.

  6. Update Django Settings In settings.py: Imported necessary modules. Inserted: if os.path.isfile("env.py"): import env. Replaced the default secret key. Updated the databases section.

  7. Migrate Models In the terminal, ran: python manage.py migrate