diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..a29e85a
Binary files /dev/null and b/.DS_Store differ
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..7df3e4f
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,27 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Python: Current File",
+ "type": "python",
+ "request": "launch",
+ "program": "${file}",
+ "console": "integratedTerminal"
+ },
+ {
+ "name": "Python: Flask",
+ "type": "python",
+ "request": "launch",
+ "module": "flask",
+ "env": {
+ "FLASK_APP": "app.py",
+ "FLASK_ENV": "development"
+ },
+ "args": ["run", "--no-debugger"],
+ "jinja": true
+ }
+ ]
+}
diff --git a/README.md b/README.md
index 647f4b3..ed0cef3 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,6 @@
-# Flask-Blog-Tutorial
-A blog application in python using Flask.
+# Guill Localhost
+
+A varity of things that go into this website...
+
+1. A reordering system for cpap supplies.
+2. A menu planning app (recipes, nutrition and planning)
diff --git a/__pycache__/app.cpython-38.pyc b/__pycache__/app.cpython-38.pyc
new file mode 100644
index 0000000..4cc569a
Binary files /dev/null and b/__pycache__/app.cpython-38.pyc differ
diff --git a/tutorial1/app.py b/app.py
similarity index 100%
rename from tutorial1/app.py
rename to app.py
diff --git a/life.md b/life.md
new file mode 100644
index 0000000..aad0e0b
--- /dev/null
+++ b/life.md
@@ -0,0 +1,58 @@
+# Life Program
+
+## Migration
+### Installation
+
+`pip install Flask-Migrate`
+
+### Instantiation
+Inside the __init__.py file insert the following command after both the app and db have been initalized.
+
+`Migrate(app, db)`
+
+### Usage
+### Initial
+
+`flask db init`
+
+This will come up with a message saying you need to configure a file. Unless there is a specific reason to do so, simply skip that suggestion.
+### Every time you change model.py
+use the following commands in order in the terminal:
+
+`flask db migrate`
+
+`flask db upgrade`
+
+
+## Sections
+---
+### Health
+#### *Facilities*
+#### *Doctors*
+#### *Medications*
+#### *Medication List*
+#### *Hospitalizations*
+#### *Allergies*
+#### *Surgeries*
+#### *A1C*
+#### *C-PAP*
+----
+### Productivity
+#### *Tasks*
+#### *Goals*
+#### *Projects*
+----
+### Menu Planner
+#### *Planner*
+#### *Reciepts*
+#### *Shopping List*
+
+
+# THINGS TO DO
+
[ ] Make a page that has archive plan information. a place you can look back at different weeks and see what you had
+
[ ] Code Snippits
+
[ ] Text the person when the medication is due to be refilled.
+
[ ] Create a wallet size report in pdf that can be printed out
+
[ ] Place the keys in the database
+
[ ] Make each menu item selectable according to user (menu on for me off for shawn for example)
+
[X] Grave markers
\ No newline at end of file
diff --git a/migrations/README b/migrations/README
new file mode 100644
index 0000000..0e04844
--- /dev/null
+++ b/migrations/README
@@ -0,0 +1 @@
+Single-database configuration for Flask.
diff --git a/migrations/__pycache__/env.cpython-38.pyc b/migrations/__pycache__/env.cpython-38.pyc
new file mode 100644
index 0000000..677194f
Binary files /dev/null and b/migrations/__pycache__/env.cpython-38.pyc differ
diff --git a/migrations/alembic.ini b/migrations/alembic.ini
new file mode 100644
index 0000000..ec9d45c
--- /dev/null
+++ b/migrations/alembic.ini
@@ -0,0 +1,50 @@
+# A generic, single database configuration.
+
+[alembic]
+# template used to generate migration files
+# file_template = %%(rev)s_%%(slug)s
+
+# set to 'true' to run the environment during
+# the 'revision' command, regardless of autogenerate
+# revision_environment = false
+
+
+# Logging configuration
+[loggers]
+keys = root,sqlalchemy,alembic,flask_migrate
+
+[handlers]
+keys = console
+
+[formatters]
+keys = generic
+
+[logger_root]
+level = WARN
+handlers = console
+qualname =
+
+[logger_sqlalchemy]
+level = WARN
+handlers =
+qualname = sqlalchemy.engine
+
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
+[logger_flask_migrate]
+level = INFO
+handlers =
+qualname = flask_migrate
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[formatter_generic]
+format = %(levelname)-5.5s [%(name)s] %(message)s
+datefmt = %H:%M:%S
diff --git a/migrations/env.py b/migrations/env.py
new file mode 100644
index 0000000..68feded
--- /dev/null
+++ b/migrations/env.py
@@ -0,0 +1,91 @@
+from __future__ import with_statement
+
+import logging
+from logging.config import fileConfig
+
+from flask import current_app
+
+from alembic import context
+
+# this is the Alembic Config object, which provides
+# access to the values within the .ini file in use.
+config = context.config
+
+# Interpret the config file for Python logging.
+# This line sets up loggers basically.
+fileConfig(config.config_file_name)
+logger = logging.getLogger('alembic.env')
+
+# add your model's MetaData object here
+# for 'autogenerate' support
+# from myapp import mymodel
+# target_metadata = mymodel.Base.metadata
+config.set_main_option(
+ 'sqlalchemy.url',
+ str(current_app.extensions['migrate'].db.get_engine().url).replace(
+ '%', '%%'))
+target_metadata = current_app.extensions['migrate'].db.metadata
+
+# other values from the config, defined by the needs of env.py,
+# can be acquired:
+# my_important_option = config.get_main_option("my_important_option")
+# ... etc.
+
+
+def run_migrations_offline():
+ """Run migrations in 'offline' mode.
+
+ This configures the context with just a URL
+ and not an Engine, though an Engine is acceptable
+ here as well. By skipping the Engine creation
+ we don't even need a DBAPI to be available.
+
+ Calls to context.execute() here emit the given string to the
+ script output.
+
+ """
+ url = config.get_main_option("sqlalchemy.url")
+ context.configure(
+ url=url, target_metadata=target_metadata, literal_binds=True
+ )
+
+ with context.begin_transaction():
+ context.run_migrations()
+
+
+def run_migrations_online():
+ """Run migrations in 'online' mode.
+
+ In this scenario we need to create an Engine
+ and associate a connection with the context.
+
+ """
+
+ # this callback is used to prevent an auto-migration from being generated
+ # when there are no changes to the schema
+ # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
+ def process_revision_directives(context, revision, directives):
+ if getattr(config.cmd_opts, 'autogenerate', False):
+ script = directives[0]
+ if script.upgrade_ops.is_empty():
+ directives[:] = []
+ logger.info('No changes in schema detected.')
+
+ connectable = current_app.extensions['migrate'].db.get_engine()
+
+ with connectable.connect() as connection:
+ context.configure(
+ connection=connection,
+ target_metadata=target_metadata,
+ process_revision_directives=process_revision_directives,
+ **current_app.extensions['migrate'].configure_args
+ )
+
+ with context.begin_transaction():
+ context.run_migrations()
+
+
+if context.is_offline_mode():
+ run_migrations_offline()
+else:
+ run_migrations_online()
diff --git a/migrations/script.py.mako b/migrations/script.py.mako
new file mode 100644
index 0000000..2c01563
--- /dev/null
+++ b/migrations/script.py.mako
@@ -0,0 +1,24 @@
+"""${message}
+
+Revision ID: ${up_revision}
+Revises: ${down_revision | comma,n}
+Create Date: ${create_date}
+
+"""
+from alembic import op
+import sqlalchemy as sa
+${imports if imports else ""}
+
+# revision identifiers, used by Alembic.
+revision = ${repr(up_revision)}
+down_revision = ${repr(down_revision)}
+branch_labels = ${repr(branch_labels)}
+depends_on = ${repr(depends_on)}
+
+
+def upgrade():
+ ${upgrades if upgrades else "pass"}
+
+
+def downgrade():
+ ${downgrades if downgrades else "pass"}
diff --git a/migrations/versions/05b53be3df1a_.py b/migrations/versions/05b53be3df1a_.py
new file mode 100644
index 0000000..e7bf3f8
--- /dev/null
+++ b/migrations/versions/05b53be3df1a_.py
@@ -0,0 +1,34 @@
+"""empty message
+
+Revision ID: 05b53be3df1a
+Revises: e3e2601b7244
+Create Date: 2021-10-22 22:57:31.507543
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '05b53be3df1a'
+down_revision = 'e3e2601b7244'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('graves', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('cemeteriesfk', sa.Integer(), nullable=False))
+ batch_op.create_foreign_key(None, 'cemeteries', ['cemeteriesfk'], ['id'], ondelete='CASCADE')
+
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('graves', schema=None) as batch_op:
+ batch_op.drop_constraint(None, type_='foreignkey')
+ batch_op.drop_column('cemeteriesfk')
+
+ # ### end Alembic commands ###
diff --git a/migrations/versions/91a98db2aa76_.py b/migrations/versions/91a98db2aa76_.py
new file mode 100644
index 0000000..998685c
--- /dev/null
+++ b/migrations/versions/91a98db2aa76_.py
@@ -0,0 +1,37 @@
+"""empty message
+
+Revision ID: 91a98db2aa76
+Revises: 05b53be3df1a
+Create Date: 2021-10-26 00:16:55.334374
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '91a98db2aa76'
+down_revision = '05b53be3df1a'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('insinfo',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Text(), nullable=True),
+ sa.Column('phone', sa.Text(), nullable=True),
+ sa.Column('policynum', sa.Text(), nullable=True),
+ sa.Column('userid', sa.Integer(), nullable=True),
+ sa.Column('update_time', sa.DateTime(), nullable=True),
+ sa.Column('date_created', sa.DateTime(timezone=True), nullable=True),
+ sa.PrimaryKeyConstraint('id')
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('insinfo')
+ # ### end Alembic commands ###
diff --git a/migrations/versions/__pycache__/05b53be3df1a_.cpython-38.pyc b/migrations/versions/__pycache__/05b53be3df1a_.cpython-38.pyc
new file mode 100644
index 0000000..bc434a0
Binary files /dev/null and b/migrations/versions/__pycache__/05b53be3df1a_.cpython-38.pyc differ
diff --git a/migrations/versions/__pycache__/91a98db2aa76_.cpython-38.pyc b/migrations/versions/__pycache__/91a98db2aa76_.cpython-38.pyc
new file mode 100644
index 0000000..38f2e5b
Binary files /dev/null and b/migrations/versions/__pycache__/91a98db2aa76_.cpython-38.pyc differ
diff --git a/migrations/versions/__pycache__/e3e2601b7244_.cpython-38.pyc b/migrations/versions/__pycache__/e3e2601b7244_.cpython-38.pyc
new file mode 100644
index 0000000..f32351e
Binary files /dev/null and b/migrations/versions/__pycache__/e3e2601b7244_.cpython-38.pyc differ
diff --git a/migrations/versions/e3e2601b7244_.py b/migrations/versions/e3e2601b7244_.py
new file mode 100644
index 0000000..b7860f6
--- /dev/null
+++ b/migrations/versions/e3e2601b7244_.py
@@ -0,0 +1,67 @@
+"""empty message
+
+Revision ID: e3e2601b7244
+Revises:
+Create Date: 2021-10-22 22:30:32.459745
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'e3e2601b7244'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('cemeteries',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Text(), nullable=True),
+ sa.Column('address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True),
+ sa.Column('zip', sa.Text(), nullable=True),
+ sa.Column('phone', sa.Text(), nullable=True),
+ sa.Column('url', sa.Text(), nullable=True),
+ sa.Column('userid', sa.Integer(), nullable=True),
+ sa.Column('update_time', sa.DateTime(), nullable=True),
+ sa.Column('date_created', sa.DateTime(timezone=True), nullable=True),
+ sa.PrimaryKeyConstraint('id')
+ )
+ op.create_table('graves',
+ sa.Column('id', sa.Integer(), nullable=False),
+ sa.Column('name', sa.Text(), nullable=True),
+ sa.Column('relationship', sa.Text(), nullable=True),
+ sa.Column('birthdate', sa.Text(), nullable=True),
+ sa.Column('birthplace', sa.Text(), nullable=True),
+ sa.Column('deathdate', sa.Text(), nullable=True),
+ sa.Column('deathplace', sa.Text(), nullable=True),
+ sa.Column('plot', sa.Text(), nullable=True),
+ sa.Column('fag_id', sa.Text(), nullable=True),
+ sa.Column('fag_url', sa.Text(), nullable=True),
+ sa.Column('notes', sa.Text(), nullable=True),
+ sa.Column('obituary', sa.Text(), nullable=True),
+ sa.Column('pictureURL', sa.Text(), nullable=True),
+ sa.Column('userid', sa.Integer(), nullable=True),
+ sa.Column('update_time', sa.DateTime(), nullable=True),
+ sa.Column('date_created', sa.DateTime(timezone=True), nullable=True),
+ sa.PrimaryKeyConstraint('id')
+ )
+ with op.batch_alter_table('user', schema=None) as batch_op:
+ batch_op.create_unique_constraint(None, ['avatar'])
+
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('user', schema=None) as batch_op:
+ batch_op.drop_constraint(None, type_='unique')
+
+ op.drop_table('graves')
+ op.drop_table('cemeteries')
+ # ### end Alembic commands ###
diff --git a/requirements.txt b/requirements.txt
index 38300a1..35268bd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,13 @@
-flask
+css_inline
+Flask
+Flask-Login
Flask-SQLAlchemy
-flask-login
+Flask-Migrate
+Flask-Mail
+html2text
+ics
+lxml
+pdfkit
+recipe_scrapers
+requests
+wifi-qrcode-generator
\ No newline at end of file
diff --git a/tutorial1/website/__init__.py b/tutorial1/website/__init__.py
deleted file mode 100644
index b881c4f..0000000
--- a/tutorial1/website/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from flask import Flask
-from flask_sqlalchemy import SQLAlchemy
-from os import path
-from flask_login import LoginManager
-
-
-def create_app():
- app = Flask(__name__)
- app.config['SECRET_KEY'] = "helloworld"
-
- from .views import views
- from .auth import auth
-
- app.register_blueprint(views, url_prefix="/")
- app.register_blueprint(auth, url_prefix="/")
-
- return app
diff --git a/tutorial1/website/__pycache__/__init__.cpython-38.pyc b/tutorial1/website/__pycache__/__init__.cpython-38.pyc
deleted file mode 100644
index 5f5e272..0000000
Binary files a/tutorial1/website/__pycache__/__init__.cpython-38.pyc and /dev/null differ
diff --git a/tutorial1/website/__pycache__/auth.cpython-38.pyc b/tutorial1/website/__pycache__/auth.cpython-38.pyc
deleted file mode 100644
index ab66ba7..0000000
Binary files a/tutorial1/website/__pycache__/auth.cpython-38.pyc and /dev/null differ
diff --git a/tutorial1/website/__pycache__/models.cpython-38.pyc b/tutorial1/website/__pycache__/models.cpython-38.pyc
deleted file mode 100644
index f79a900..0000000
Binary files a/tutorial1/website/__pycache__/models.cpython-38.pyc and /dev/null differ
diff --git a/tutorial1/website/__pycache__/views.cpython-38.pyc b/tutorial1/website/__pycache__/views.cpython-38.pyc
deleted file mode 100644
index b3de214..0000000
Binary files a/tutorial1/website/__pycache__/views.cpython-38.pyc and /dev/null differ
diff --git a/tutorial1/website/auth.py b/tutorial1/website/auth.py
deleted file mode 100644
index d96a352..0000000
--- a/tutorial1/website/auth.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from flask import Blueprint, render_template, redirect, url_for
-
-
-auth = Blueprint("auth", __name__)
-
-
-@auth.route("/login")
-def login():
- return render_template("login.html")
-
-
-@auth.route("/sign-up")
-def sign_up():
- return render_template("signup.html")
-
-
-@auth.route("/logout")
-def logout():
- return redirect(url_for("views.home"))
diff --git a/tutorial1/website/templates/base.html b/tutorial1/website/templates/base.html
deleted file mode 100644
index e6681da..0000000
--- a/tutorial1/website/templates/base.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
- {% block title %}{% endblock %}
-
-
-
-
{% if facility.type == "Clinic" %}{% for doctor in doctors %}{% if facility.id == doctor.facilityfk %}{{doctor.name}} {% endif %}{% endfor %}{% endif %}