Welcome to your first step in building the AI Cooking Helper! In this lesson, you will learn how to set up the foundation of your web application using Flask, a popular Python web framework. Flask is lightweight, easy to use, and perfect for beginners who want to build web apps quickly.
By the end of this lesson, you will have a working Flask project that is connected to a database. This setup is essential for storing recipes, user data, and more as you continue to develop your cooking app. Everything you learn here will be used in future lessons as you add more features and functionality.
Before we dive in, let’s quickly remind ourselves how Python projects are usually organized. A typical Python project has a main file (like main.py) that starts the application, and folders (like app/) that hold different parts of the code, such as routes and models.
For example, your project might look like this:
main.pyis where your application starts.- The
app/folder keeps your code organized by separating routes (URLs) and models (database structure).
This structure helps keep your code clean and easy to manage as your project grows.
Before you start installing packages for your project, it’s a best practice to use a virtual environment. A virtual environment is an isolated space on your computer where you can install Python packages just for your project, without affecting other projects or system-wide packages. This helps prevent dependency conflicts and makes it easier to manage your project’s requirements.
To create and activate a virtual environment, use the following commands in your project directory:
On macOS/Linux:
On Windows:
python3 -m venv venv(orpython -m venv venvon Windows) creates a new virtual environment in a folder namedvenv.source venv/bin/activate(orvenv\Scripts\activateon Windows) activates the virtual environment.
Once activated, any packages you install (like Flask or SQLAlchemy) will only be available inside this environment. When you’re done working, you can deactivate the environment by running deactivate.
Note: In some online coding environments (like CodeSignal), you may not need to set up a virtual environment because the environment is already managed for you. However, for your own projects on your computer, always use a virtual environment to keep things organized and avoid conflicts.
Let’s start by creating a basic Flask application. In your main.py file, you will need to import Flask and create an app instance.
Here’s what’s happening:
from flask import Flaskimports theFlaskclass.app = Flask(__name__)creates a newFlaskapplication. The__name__variable is used by Flask to determine the root path of the application for locating templates, static files, etc.
Next, you need to configure your app to use a database. For this project, we’ll use SQLite, which is a simple file-based database that works well for small projects.
Add the following configuration to your create_app function:
SQLALCHEMY_DATABASE_URItellsFlaskwhere your database is located. Here, it will create a file calledrecipes.db.
Now, let’s connect SQLAlchemy to your Flask app. SQLAlchemy is a library that helps you work with databases using Python code instead of SQL commands.
First, you need to import your database object that will hold the connection between your database and the Flask application. In this project, it’s defined in app/models.py as db. You also need to initialize it with your Flask app.
db.init_app(app)connects your database to theFlaskapp.
To make sure your database tables are created, you need to call db.create_all() inside the app context. This tells SQLAlchemy to create any tables you have defined in your models.
with app.app_context():sets up the application context, which is needed for database operations.db.create_all()creates all tables defined in your models if they don’t already exist. For production applications with evolving schemas, migration tools like are typically used, but is suitable for our initial setup and development.
As your app grows, you’ll want to keep your code organized. Flask blueprints help you split your routes into different files. This makes your code easier to read and maintain.
As you will define and learn how to do this in future lessons, for now let's suppose you have a routes blueprint defined in app/routes.py. You can register it with your app like this:
from app.routes import routesimports your blueprint.app.register_blueprint(routes)tellsFlaskto use the routes defined in your blueprint.
This keeps your main application file clean and lets you organize your routes by topic or feature.
To use flask, you first need to set the FLASK_APP environment variable:
This will tell Flask where to look for the creation of the app, in our case inside the cooking_helper/main.py file, running the create_app function.
Now that your app and environment is set up, you can run it and interact with it. To start your Flask app, add the following code at the bottom of your main.py file:
- This checks if the file is being run directly and then starts the app.
host="0.0.0.0"makes the app accessible from any network interface.port=3000sets the port number.debug=Trueenables debug mode, which helps you see errors and automatically reloads the app when you make changes.
Sample output when you run the app:
You can also use flask run to execute the app.
To interact with your app and database, you can also use the Flask shell by running:
In this lesson, you learned how to:
- Set up a basic
Flaskapplication inmain.py - Configure your app to use a
SQLitedatabase - Connect
SQLAlchemyand create your database tables - Register blueprints to keep your code organized
- Run your app and use the
Flaskshell for database commands
As your projects grow, it’s important to keep sensitive information—like your database URI and other configuration values—secure. In real-world applications, you should use environment variables or a separate configuration file (not committed to version control) to store these settings, rather than hard-coding them in your source code. This helps protect your data and makes your app easier to configure for different environments.
You now have a solid foundation for your AI Cooking Helper. In the next practice exercises, you’ll get hands-on experience with these steps, making sure you can set up and run your own Flask project with a working database. This setup will support all the features you’ll build in the rest of the course!
