Skip to content

pbtrad/santa-s-kitchen-helper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Santa's Kitchen Helper

To view the live website, click here.

Website responsive mockup

Santa's Kitchen Helper is a tool that allows families to organise their events better. It is made mostly for Christmas, yet can be developed for all year round.
The application has features that allow families to create their own group, add events and also add reminders of what dishes they will bring to said event.

Contents


UX

User Stories

As a first time visitor, I want to:

  1. Have a mission statement to know what the website is about.
  2. Have a way to easily navigate.
  3. Be able to register for an account.
  4. Get feedback on the requirements of the registration process.
  5. Have the option to join a family group.
  6. Have the option of creating a family group.
  7. Be able to create events in the family group.
  8. Be able to see events from other members.

As a recurring user, I want to:

  1. Not have to sign in every time I visit the page.
  2. Be able to add dishes that I will bring.
  3. See previous events.
  4. Have the option to edit my profile.
  5. See the contact details for the creators.

Design

WireFrames

  • All wireframes can be viewed in their file format here
  • All wireframe images can be viewed here

Database Design

Using MongoDb NoSQL database the following collections were created.

Users collection:

Title Data Type
id: ObjectId
name string
email string
pass_ binary_hashed_string

Event collection:

Title Data Type
id: ObjectId
name string
date string
event string
email string
family string
description string
active boolean
food array

Family collection:

Title Data Type
id: ObjectId
name string
date string
events array
members array

Typograhpy

Heading font: Emily's Candy
Letter font: Fuzzy Bubbles

Back to Contents


Features

Existing Features

Navbar:

Navbar image

  • Provides easy to use navigation across all pages.
  • Stands out visually.
  • Is responsive and uses hamburger button for small screens.
  • Located in most common place that users are used to.

User stories covered: 2

Santa letter modal / Mission statement:

Santa letter modal

  • Provides mission/about statement.
  • Is appropriately themed.
  • Is responsive.

User stories covered: 1

Register form:

Register form image

  • Gathers necessary information from user.
  • Provides visual cues if data type is correct or not.
  • Information asked is specific.

User stories covered: 3, 4

Login form:

Login form image

  • Gathers necessary information from user.
  • Provides visual cues if data type is correct or not.
  • Information asked is specific.

User stories covered: 2, 3

Contact page:

Contact page image

  • Provides links to creators social pages.
  • Is appropriately themed with a made-up story about each creator.

User stories covered: 13

Profile page:

Profile page image

  • Is the user's control center.
  • Provides buttons/choices for rest of features.
  • Displays user and events information.

User stories covered: 8, 11

Profile edit page:

Profile edit page image

  • Provides profile edit options, so user can change their information.
  • Is pre-populated with user's information.

User stories covered: 12

Create event:

Create event button image Create event modal image

  • Easy to find button.
  • Opens modal to create a new event.
  • Modal has clear requirements.

User stories covered: 7

Join family:

Join family button image

  • Easy to use list to join a family.
  • Button located on profile page, easy to find.

User stories covered: 5

Create family:

Create family button image Create family modal image

  • Provides option to create a new family.
  • Opens modal with requested information.
  • Adds the user directly into family.

User stories covered: 6

Session cookies:

Signed in image Closed tab image Signed in image

  • Keeps the user signed in when moving away from page.

User stories covered: 9

Upcoming events:

Upcoming events image

  • Shows all events that have not happened yet.
  • Shows dishes that will be brought

User stories covered: 8

Past events:

Past events image

  • Shows all events that have happened.
  • Shows dishes that were brought

User stories covered: 11

Bring dish:

Bring dish button image Bring dish modal image

  • Provides the option to add to dishes that will be brought to event.
  • Gives option to choose which event.

User stories covered: 10

Features Left to be Implemented

  1. See event date and details.
  2. Join family by code and hide families.
  3. Add comments to events.

Back to Contents


Technologies Used

  • HTML - Skeleton frame of the application.
  • CSS - Beautifies the skeleton (HTML).
  • JavaScript - Allows for user interaction and limited dynamic function on the application.
  • Python - Allows dynamic function and back end programs to run. These programs (frameworks, libraries, and databases) are:
    • Flask - Allows use of templating, security, user searching, and other critical functions.
    • Pymongo - Allows Flask (Python) to communicate with MongoDB.
    • PythonDNS - Allows for DNS data transfer.
    • Werkzeug - Encrypts data as it is sent between the user and server.
    • Datetime - Allows Python to take a date/time stamp.
    • Random - Allows for a random number generator.
  • MongoDB - NoSQL database that the application communicates with and stores information on.

Tools

Back to Contents


Testing

  1. Have a mission statement to know what the website is about.
Feature Action Expected Result Actual Result
Santa letter modal Navigate to main page, see pop-up modal Read mission statement Works as expected
Santa letter modal Click on "About" button, see pop-up modal Read mission statement Works as expected
Screenshots

Mission statement image About button image

  1. Have a way to easily navigate.
Feature Action Expected Result Actual Result
Navigation bar Click on navigation buttons Get moved between pages Works as expected
Screenshots

Navigation bar image

  1. Be able to register for an account.
Feature Action Expected Result Actual Result
Registration form Navigate to "Register" page and fill out form Create a usable account Works as expected
Screenshots

Registration form image Registration success image

  1. Get feedback on the requirements of the registration process.
Feature Action Expected Result Actual Result
Registration form Input details in form Get visual feedback for good or invalid data Works as expected
Screenshots

Registration form image Registration form with invalid data image

  1. Have the option to join a family group.
Feature Action Expected Result Actual Result
Join family button Choose a family and click "Join family" Get added in family Works as expected
Screenshots

Family join button image Family joined profile image

  1. Have the option of creating a family group.
Feature Action Expected Result Actual Result
Create family button/modal Press "Create family", add name and click "Create" New family is created Works as expected
Screenshots

Family create button image Family create modal image Family created image

  1. Be able to create events in the family group.
Feature Action Expected Result Actual Result
Create events button/modal Click "Create event", fill out the form, click "create" New event is created Works as expected
Screenshots

Event create button image Event create modal image

  1. Be able to see events from other members.
Feature Action Expected Result Actual Result
Upcoming events Navigate to Profile page and look at upcoming events See upcoming events Works as expected
Past events Navigate to Profile page and look at past events See past events Works as expected
Screenshots

Upcoming events image Past events image

  1. Not have to sign in every time I visit the page.
Feature Action Expected Result Actual Result
Session cookie Navigate away from page and to page again Stay signed in Works as expected
Screenshots

Signed in image Closed tab image Signed in image

  1. Be able to add dishes that I will bring.
Feature Action Expected Result Actual Result
Bring dish Navigate to profile page, click "Bring dish", choose event, complete form dishes are submitted Works as expected
Screenshots

Bring dish button image Bring dish modal image Bring dish completed image

  1. See previous events.
Feature Action Expected Result Actual Result
Past events Navigate to Profile page and look at past events See past events Works as expected
Screenshots

Past events image

  1. Have the option to edit my profile.
Feature Action Expected Result Actual Result
Profile edit option Go to profile page, click "Edit profile", change details, click "Update" Profile details are updated Works as expected
Screenshots

Profile edit button image Profile edit page image Profile edited image

  1. See the contact details for the creators.
Feature Action Expected Result Actual Result
Contact page Click on creator social media link New tab opens to clicked link Works as expected
Screenshots

Contact page image Contact social button image

Back to Contents


Deployment

Santa's Kitchen Helper is deployed at https://santas-kitchen-helper.herokuapp.com/ on Heroku.

**Cloning Santa's Kitchen Helper from GitHub:

Install the following:

  • Git
  • PIP
  • Python3

Create an account at MongoDB to construct database.

  • 1: Clone Santa's Kitchen Helper repository using Git by typing the following command into the terminal.
git clone https://github.com/pbtrad/santa-s-kitchen-helper.git
  • 2: Go to this folder in your terminal.
  • 3: Enter the following command into your terminal to create virtual environment
virtualenv venv 
  • 4: Intialize the environment by entering the following command.
source venv\bin\activate
  • 5: Install the requirements and dependancies from the requirements.txt file.
pip3 install -r requirements.txt
  • 6: In an IDE create an env.py file where SECRET_KEY and MONGO_URI can be stored, then follow the schema in the schema file.
  • 7: Run the application by entering.
flask run

or

python3 app.py

Deploying the website to Heroku:

  • 1: Create a requirements.txt file by entering the following command.
pip3 freeze > requirements.txt
  • 2: Create a Procfile.
echo web: python app.py > Procfile
  • 3: Push files to your repository.
  • 4: On Heroku dashboard create a new app.
  • 5: Select deployment method and select GitHub.
  • 6: On the dashboard set config variables:
Key Value
IP 0.0.0.0
PORT 5000
MONGO_URI mongodb+srv://:@<cluster_name>-qtxun.mongodb.net/<database_name>?retryWrites=true&w=majority
SECRET_KEY "your_secret_key"
  • 7: Select the deploy button on the Heroku dashboard.
  • 8: Your site is deployed by Heroku.

Back to Contents


Credits and Acknowledgments

Images

Santa's Kitchen Nightmare 🎄

Back to Contents


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published