# Week 18 Roadmap
---
### Technologies
- Today: pipenv, unittest, pytest
- Tuesday: Flask, Jinja, psycopg2, WTForms & Flask-WTF
- Wednesday: SQlAlchemy & Flask-SQLAlchemy
- Thursday: Alembic & Flask-Migrate
- Friday: Review
---
### Flask (Tuesday)
- Flask is a server (like Express, but for Python)
- https://flask.palletsprojects.com/
---
### Jinja (Tuesday)
- Templating language (like Pug)
- https://jinja.palletsprojects.com/en/2.11.x/
---
### psycopg2 (Tuesday)
- Allows our Flask app to communicate with a Postgres database
- Can be used to interact with database directly, but more convenient to use with an ORM.
- The ORM still needs psycopg2 to connect to the database
- https://www.psycopg.org/docs/index.html#
---
### WTForms & Flask-WTF (Tuesday)
- WTForms is a form validation library—it's not necessary to render forms or validate data, it just makes things easier
- https://wtforms.readthedocs.io
- Flask-WTF integrates WTForms with a Flask application
- https://flask-wtf.readthedocs.io
---
### SQLAlchemy & Flask-SQLAlchemy (Wednesday)
- SQLAlchemy is an object-relational mapping tool (ORM) to make it easier to interact with our database. (like Sequelize)
- https://docs.sqlalchemy.org/en/14/index.html
- Flask-SQLAlchemy allows Flask applications to work with SQLAlchemy in a more streamlined way.
- https://flask-sqlalchemy.palletsprojects.com
---
### Alembic & Flask-Migrate (Thursday)
- Alembic is a database migration tool that works with SQLAlchemy
- https://alembic.sqlalchemy.org
- Flask-Migrate integrates alembic with a Flask application
- https://flask-migrate.readthedocs.io
---
### Today
- Job search prep: behavioral interview questions
- Presentation Skills reading (20min)
- Interview Practice activity (~45min)
- Python environment management and Python unit testing
- Lecture videos + follow-up and QA
- NOTE: do not install pipenv using the steps on App Academy Open. You should have installed pipenv last week [(instructions here)](https://github.com/appacademy/unified-setup/blob/main/python-setup.md#pipenv). (You can check by running `pipenv --version`. If it comes back with a version, you're all set).
- Python Unit Testing project