Flask File Structure
An overview of the file structure of flask
- Flask Project Structure: Explained
- main.py
- __init__.py
- /api folder
- /models folder
- /api/users.py
- /api/calendar.py
- /api/issues.py
- /models/user.py
- /models/event.py
- /models/issue.py
- scripts/db_init.py
- templates/dashboard.html
- static/styles.css
- requirements.txt
Flask Project Structure: Explained
main.py
Purpose: Entry point of your app. Runs the server using Flask.
from __init__ import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
__init__.py
Purpose: App configuration and Blueprint registration.
Sets up Flask and brings together all your routes.
from flask import Flask
from api.users import user_api
from api.calendar import calendar_api
def create_app():
app = Flask(__name__)
app.register_blueprint(user_api)
app.register_blueprint(calendar_api)
return app
/api folder
This folder contains the API route handler files such as users.py, calendar.py, and issues.py.
/models folder
This folder contains database model files like user.py, event.py, and issue.py.
/api/users.py
Handles user-related routes like /register and /login.
Defines HTTP endpoints and returns JSON responses for user actions.
/api/calendar.py
Handles calendar-related routes like /calendar/create.
Defines HTTP endpoints and returns JSON responses for calendar events.
/api/issues.py
Handles issue reporting routes like /issues/report.
Defines HTTP endpoints and returns JSON responses for issues.
/models/user.py
Defines the User database model using SQLAlchemy.
# models/user.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), unique=True)
/models/event.py
Defines the Event database model (example).
# models/event.py
class Event(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
date = db.Column(db.DateTime)
/models/issue.py
Defines the Issue database model (example).
# models/issue.py
class Issue(db.Model):
id = db.Column(db.Integer, primary_key=True)
description = db.Column(db.String(255))
scripts/db_init.py
Utility script to initialize the database.
# scripts/db_init.py
from __init__ import create_app
from models import db
app = create_app()
with app.app_context():
db.create_all()
templates/dashboard.html
HTML template using Jinja2 for backend UI or dashboard.
<h1>User Dashboard</h1>
<ul>
{% for user in users %}
<li></li>
{% endfor %}
</ul>
static/styles.css
CSS file for styling frontend views served by Flask.
requirements.txt
Dependency file listing Python packages required for the app.
Install all dependencies with:
pip install -r requirements.txt