# Flask Login App – Markdown Guide > **Goal** – Build a minimal Flask app that: > 1. Uses **SQLite** for persistence. > 2. Has a *login* page, an *index* page (requires auth), and a *logout* route. > 3. Uses **Flask‑Login** and **Werkzeug** for password hashing. > 4. Is ready for a CLI‑AI to read and walk you through the implementation. --- ## 1. Project Overview - **What it does** – Basic authentication + protected landing page. - **Tech stack** – Flask, Flask‑Login, Werkzeug, SQLite, Jinja2. - **Why SQLite** – Zero‑config, file‑based DB that ships with Python. --- ## 2. Prerequisites - Python 3.9+ installed. - `pip` available. - Optional: `virtualenv` or `venv` for isolation. --- ## 3. Directory Layout (suggested) my_flask_app/ │ ├── app/ │ ├── init.py │ ├── models.py │ ├── routes.py │ ├── templates/ │ │ ├── base.html │ │ ├── index.html │ │ └── login.html │ └── static/ # optional, for CSS/JS │ ├── migrations/ # if you later add Flask‑Migrate │ ├── config.py # app config (secret key, DB URI, etc.) ├── run.py # entry point ├── requirements.txt └── README.md --- ## 4. Setting Up the Environment 1. `python -m venv venv` 2. `source venv/bin/activate` (Linux/macOS) or `venv\Scripts\activate` (Windows). 3. Create `requirements.txt` with: ```text Flask Flask-Login Werkzeug