Skip to content

A great starting point to build your SaaS in Flask & Python, with Stripe subscription billing 🚀

License

Notifications You must be signed in to change notification settings

Absatasy/flaskSaaS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flask boilerplate code

License

I didn't really like the Flask starter projects I found searching the web. I really like Flask and I use it for quite a few projects so I decided to make a clean, readable, documented starter project. I didn't include any makefile or fabric as I feel it imposes a choice to the user of this project, I rather keep things simple (even though the word is subject to interpretation).

Features

  • User account sign up, sign in, password reset, all through asynchronous email confirmation.
  • Form generation.
  • Error handling.
  • HTML macros.
  • HTML layout file.
  • "Functional" file structure.
  • Python 3.x compliant.
  • Asynchronous AJAX calls.
  • Application factory.
  • Online administration.
  • Static file bundling, automatic SCSS to CSS conversion and automatic minifying.
  • Websockets (for example for live chatting)
  • Virtual environment example.
  • Heroky deployment example.
  • Digital Ocean deployment example.
  • Tests.
  • Logging.

If you have any suggestions or want to help, feel free to drop me a line at [email protected] or to create an issue.

Libraries

Backend

Frontend

Structure

I did what most people recommend for the application's structure. Basically, everything is contained in the app/ folder.

  • There you have the classic static/ and templates/ folders. The templates/ folder contains macros, error views and a common layout.
  • I added a views/ folder to separate the user and the website logic, which could be extended to the the admin views.
  • The same goes for the forms/ folder, as the project grows it will be useful to split the WTForms code into separate files.
  • The models.py script contains the SQLAlchemy code, for the while it only contains the logic for a users table.
  • The toolbox/ folder is a personal choice, in it I keep all the other code the application will need.

Setup

Vanilla

  • Install the required libraries.

    pip install -r requirements.txt

  • Create the database.

    python createdb.py

  • Run the application.

    python run.py

  • Navigate to localhost:5000.

Virtual environment

pip install virtualenv
virtualenv venv
venv/bin/activate (venv\scripts\activate on Windows)
pip install -r requirements.txt
python createdb.py
python run.py

Deploy

Configuration

The goal is to keep most of the application's configuration in a single file called config.py. The one I have included is basic and yet it covers most of the important stuff.

I have included a working Gmail account to confirm user email addresses and reset user passwords, although in production you should't include the file if you push to GitHub because people can see it. The same goes for API keys, you should keep them secret. You can read more about secret configuration files here.

Read this for information on the possible configuration options.

Examples

Inspiration

Other possibilities

About

A great starting point to build your SaaS in Flask & Python, with Stripe subscription billing 🚀

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 62.6%
  • HTML 31.9%
  • Dockerfile 2.4%
  • CSS 1.9%
  • Makefile 1.2%