Skip to main content

Flask Volt

Open-source Flask Starter coded on top Volt Bootstrap 5 design (Free Version).

Open-Source Flask Dashboard generated by the AppSeed platform with basic modules, database, authentication, and deployment scripts on top of Volt Dashboard (free version). Volt Dashboard is a free and open-source Bootstrap 5 dashboard template featuring over 100 components, 11 example pages, and 3 plugins with Vanilla JS. There are more than 100 free Bootstrap 5 components included some of them being buttons, alerts, modals, date pickers, and so on.

v1.0.12 - release date 2023-03-15

✅ Features​

  • Up-to-date dependencies
  • Database: SQLite, MySql
    • Silent fallback to SQLite
  • DB Tools: SQLAlchemy ORM, Flask-Migrate
  • Authentication, Session Based, OAuth via Github
  • Docker, Flask-Minify (page compression)
  • Deployment
    • CI/CD flow via Render

Volt Dashboard - Full-Stack Starter generated by AppSeed.

✅ Environment​

To use the starter, Python3 should be installed properly in the workstation. If you are not sure if Python is installed, please open a terminal and type python --version. Here is the full list with dependencies and tools required to build the app:

  • Python3 - the programming language used to code the app
  • GIT - used to clone the source code from the Github repository
  • Basic development tools (g++ compiler, python development libraries ..etc) used by Python to compile the app dependencies in your environment.
  • (Optional) Docker - a popular virtualization software

Start with Docker​

👉 Step 1 - Download the code from the GH repository (using GIT)

$ git clone https://github.com/app-generator/flask-star-admin.git
$ cd flask-star-admin

👉 Step 2 - Start the APP in Docker

$ docker-compose up --build

Visit http://localhost:5085 in your browser. The app should be up & running.

✅ App Environment .env file​

Create a new .env file using sample env.sample. The meaning of each variable can be found below:

  • DEBUG: if True the app runs in develoment mode
    • For production value False should be used
  • ASSETS_ROOT: used in assets management
    • default value: /static/assets
  • OAuth via Github
    • GITHUB_ID=<GITHUB_ID_HERE>
    • GITHUB_SECRET=<GITHUB_SECRET_HERE>

✅ Manual Build​

Download the code

$ git clone https://github.com/app-generator/flask-star-admin.git
$ cd flask-star-admin

👉 Set Up for Unix, MacOS​

Install modules via VENV

$ virtualenv env
$ source env/bin/activate
$ pip3 install -r requirements.txt

Set Up Flask Environment

$ export FLASK_APP=run.py
$ export FLASK_ENV=development

Start the app

$ flask run

At this point, the app runs at http://127.0.0.1:5000/.

👉 Set Up for Windows​

Install modules via VENV (windows)

$ virtualenv env
$ .\env\Scripts\activate
$ pip3 install -r requirements.txt

Set Up Flask Environment

$ # CMD
$ set FLASK_APP=run.py
$ set FLASK_ENV=development
$
$ # Powershell
$ $env:FLASK_APP = ".\run.py"
$ $env:FLASK_ENV = "development"

Start the app

$ flask run

At this point, the app runs at http://127.0.0.1:5000/.

✅ Codebase Structure​

The project is coded using a simple and intuitive structure presented below:

< PROJECT ROOT >
|
|-- apps/
| |
| |-- home/ # A simple app that serve HTML files
| | |-- routes.py # Define app routes
| |
| |-- authentication/ # Handles auth routes (login and register)
| | |-- routes.py # Define authentication routes
| | |-- models.py # Defines models
| | |-- forms.py # Define auth forms (login and register)
| |
| |-- static/
| | |-- <css, JS, images> # CSS files, Javascripts files
| |
| |-- templates/ # Templates used to render pages
| | |-- includes/ # HTML chunks and components
| | | |-- navigation.html # Top menu component
| | | |-- sidebar.html # Sidebar component
| | | |-- footer.html # App Footer
| | | |-- scripts.html # Scripts common to all pages
| | |
| | |-- layouts/ # Master pages
| | | |-- base-fullscreen.html # Used by Authentication pages
| | | |-- base.html # Used by common pages
| | |
| | |-- accounts/ # Authentication pages
| | | |-- login.html # Login page
| | | |-- register.html # Register page
| | |
| | |-- home/ # UI Kit Pages
| | |-- index.html # Index page
| | |-- 404-page.html # 404 page
| | |-- *.html # All other pages
| |
| config.py # Set up the app
| __init__.py # Initialize the app
|
|-- requirements.txt # App Dependencies
|
|-- .env # Inject Configuration via Environment
|-- run.py # Start the app - WSGI gateway
|
|-- ************************************************************************

✅ Customisation​

👉 Use MySql for Persistence​

Note: Make sure your Mysql server is properly installed and accessible.

Step 1 - Create the MySql Database to be used by the app

  • Create a new MySql database
  • Create a new user and assign full privilegies (read/write)

Step 2 - Install flask_mysqldb package

$ pip install flask_mysqldb

Step 3 - Edit the .env to match your MySql DB credentials.

  • DB_ENGINE : mysql
  • DB_NAME : default value = appseed_db
  • DB_HOST : default value = localhost
  • DB_PORT : default value = 3306
  • DB_USERNAME: default value = appseed_db_usr
  • DB_PASS : default value = pass

Here is a sample:

# .env sample

DB_ENGINE=mysql # Database Driver
DB_NAME=appseed_db # Database Name
DB_USERNAME=appseed_db_usr # Database User
DB_PASS=STRONG_PASS_HERE # Password
DB_HOST=localhost # Database HOST, default is localhost
DB_PORT=3306 # MySql port, default = 3306

At this point, the app should use MySql for the persistence layer.

👉 Static Assets for production​

the assets are managed via:

  • apps/static/assets - the folder where JS, CSS, and images files are saved
  • ASSETS_ROOT - environment variable, that defaults to /static/assets if not defined

In production, the contents of the apps/static/assets files should be copied to an external (public) directory and the ASSETS_ROOT environment variable updated accordingly.

For instance, if the static files are copied to https://cdn.your-server.com/volt-assets, the .env file should be updated as below:

# No Slash at the end
ASSETS_ROOT=https://cdn.your-server.com/volt-assets

✅ Resources​