saas-base

授权协议 Readme
开发语言 JavaScript
所属分类 Web应用开发、 常用JavaScript包
软件类型 开源软件
地区 不详
投 递 者 华英睿
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

SaaS Base Application

Warning. This repo is rebranded from SaaS-Idea. Please update your urls.

This free SaaS base application allows you to create a working SaaS with minimal efforts. What it already has:

User authentication

  • Email authentication (with email confirmation)
  • User registration, login, logout
  • Simple user profile page

Payment support

  • Fully stripe integration (plans list is automatically generated from your Stripe account)
  • User plans support
  • Payments method support (only credit cards for now, by Stripe)
  • Users can select a plan, change it, cancel, pause, resume
  • User can see all the history of payment-related actions
  • As soon as user logs in, the trial is started automatically (that plan that is marked in Stripe default one)

Dev's features

  • All features are now divided to units and components. Frontend and backend are put side-by-side for easier reference and development.
  • Autocreation of tables for users and roles (2 roles are added automatically: User and Admin)
  • Autoupdating existing database
  • Simple responsive web interface with header, left collapsing menu, central part, and fixed status bar
  • Handling 404 and 500 errors
  • Integration with Google App Engine (reading entities if env variables are not accessible)

Small but pretty user friendly features

  • Breadcrumbs component
  • Loaders to show user when data is fetching but still not finished
  • Loaders may be easily added to buttons

Features:

  • Well organized project structure (blueprints/components based)
  • Used bleeding edge web technologies
  • Allows to add your own features, pages and components quickly

Technologies/libraries in use:

Database:

  • PostgreSQL

Backend:

  • Flask / Python 3 / SQLAlchemy

Frontend:

  • ES6 JavaScript
  • Vue
  • Axios

Design / templates:

  • Bootstrap 4
  • Fontawesome 5
  • SASS / SCSS

Project organize:

  • Webpack 4

What does the app look like?

Before you even clone anything it would be nice to show you what eventually you would own. There are 4 screenshots:

  • Login
  • Register
  • Confirmed
  • Dashboard

Billing/payments

  • Billing summary
  • Stripe integration
  • Payment method selection
  • After user selected plan and pai he/she can pause or cancel it
  • Billing history

Getting Started

Follow instruction to install, set up and run this boilerplate to start your SaaS quicker.

Prerequisites

Before we start make sure you have installed Python 3 and Node.js. Please follow the official instructions. Also, you need to have a PostgreSQL database handy. If you don't want to install it you can use ElephantSQL service, they have a free plan: https://www.elephantsql.com/plans.html.

Installing

  1. Download the full zip or pull code from the repository, here you can find full instruction:
git clone https://github.com/CaravelKit/saas-base
cd saas-base
  1. Create a virtual environment (not necessarily but highly recommended):
python -m venv venv

(First 'venv' is a command, the second one is a new folder for a virtual environment. Or you can call it whatever.)

  1. Add necessarily environment variables:
  • Find venv/Scripts/activate.bat file, open in a text editor (Important! Don't use Notepad++ as for some reason it spoils the file.)
  • Add the following variables before :END:
    • set FLASK_APP=application
    • set env=dev
    • set "db_url=postgres://user:password@dbhost:port/database"
    • set "secret_key=your_local_secret_key"
    • set "secret_salt=your_local_salt"
    • set mail_server=your_email_server
    • set mail_port=usually_465
    • set "mail_username=your_email"
    • set "mail_password=your_email_password"
    • set "admin_email=admin_email"
    • set "TEST_STRIPE_PUBLISHABLE_KEY=your test publishable key"
    • set "TEST_STRIPE_SECRET_KEY=your test secret key"
    • set "GOOGLE_APPLICATION_CREDENTIALS=path to your google credential json file"
    • set "stripe_endpoint_secret="
  • The same folder find deactivate.bat and add the following strings before :END:
    • set FLASK_APP=
    • set env=
    • set db_url=
    • set secret_key=
    • set secret_salt=
    • set mail_server=
    • set mail_port=
    • set mail_username=
    • set mail_password=
    • set admin_email=
    • set TEST_STRIPE_PUBLISHABLE_KEY="
    • set TEST_STRIPE_SECRET_KEY=
    • set GOOGLE_APPLICATION_CREDENTIALS=
    • set stripe_endpoint_secret=

Note: if you use privateemail.com for your email you can set up the following settings:

set "mail_server=mail.privateemail.com"
set "mail_port=465"

Setting up (quick, automate)

Just run the command:

init

Or, from a terminal:

./init.bat

Warning! This command clears up your database before creating new entities. If you want just to update your current database, change the following code:

call flask dbinit -c

to

call flask dbinit -u

As soon as you see the following info you can open your browser:

* Serving Flask app "main"
* Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Setting up (slow, manual)

  1. Activate the environment:
venv/Scripts/activate.bat
  1. Move to the venv folder and install Python dependencies:
pip install -r requirements.txt

If you see some error you definitely have to update your pip:

python -m pip install --upgrade pip
  1. Move back to the folder where your project is. Install webpack/JavaScript dependencies:
npm install
  1. Build the javascript code and styles:
npm run dev

Note, there is another config, for production that you can run with "npm run prod" - in this version you will get well zipped (but not readable) code.

  1. Initialize the database:
flask dbinit -c
  1. Run the app:
flask run
  1. Open a browser and go http://127.0.0.1:5000/. It will show the 404 error page because there is no any route defined for the root. If you see this page it means everything works fine! Feel free to explore, it's your code now!

How to add/edit breadcrumbs

In file \app\components\dashboard\js\appDashboard.jschange/add the following code:

var routes = [
    ...
    { 
        path: '/user/profile', 
        component: UserProfile,
        name: 'userProfile',
        meta: {
            breadcrumb: [
                {   name: 'User'    }, <= breadcrumb link or text
                {   name: 'Profile' } // add 'link' field with name or the route
            ]
        } 
    },
    ...

Name your routes to have the access from breadcrumbs to them.

Trial default period (in days)

By default, for a production version it's 14 days, for dev it's just a one day (for easier validation). If you want to change this setting,please change the corresponding line in config.py:

TRIAL_PERIOD_IN_DAYS = 1

How to debug the code

We prefer MS VS Code. It's free and have tons of plugins for any language and framework. We use plugins for Python, Flask, Vue. To debug Python code you need to do some setups:

  1. Open settings: File -> Preferences --> Settings
  2. In the Workspace settings section add the following data:
{
    "python.pythonPath": "path_to_you_venv/Scripts/python.exe",
    "python.venvPath": "path_to_you_venv/Scripts/activate",
    "python.linting.pylintEnabled": false,
}
  1. Follow this instructions to set up launch.json. In our case you should have something like that:
{
	"name": "Python Experimental: Flask",
	"type": "pythonExperimental",
	"request": "launch",
	"module": "flask",
	"env": {
		"FLASK_APP": "application.py"
	},
	"args": [
		"run",
		"--no-debugger",
		"--no-reload"
	   //"dbinit", 
	   //"-u"
	],
	"jinja": true
}
  1. To start debugging, open the Terminal, activate the environment from there, the save as we did from the command line, then select Debug-->Start debugging.

How to update the database

Every time when you change something in your models, run the following command to update the database:

flask dbinit -u

Future features

We want to build the great product and we believe it's possible only when we collaborate with our users. So, we created a survey to figure out what is most important for you. Please fill it up and we will develop next feature on your choice!

Important note about this free version

This version of our SaaS boilerplate is free and it will NOT have all the features.

Authors

Caravel Kit

SaaS Idea

License

Copyright (c) 2019 Caravel Kit www.caravelkit.com under the MIT license.If you are interested in the full-functional version please check our website www.caravelkit.com for pricing and conditions.

Feedback

  • BaseController作父类 子类继承父类的好处 springmvc可以给控制器方法参数赋值request,response,session springmvc可以给控制器成员变量赋值 //子类继承父类,可以自动拥有父类的非私有成员(方法或者变量) public class BaseController{ //定义一个可以返回companyId public String getL

  • BaseController作父类 (1)子类继承父类的好处 (2)springmvc可以给控制器方法参数赋值 request,response,session (3)springmvc可以给控制器成员变量赋值 //子类继承父类,可以自动拥有父类的非私有成员(方法或者变量) public class BaseController { //定义一个可以返回companyId publ

  • 我们前面对部门进行操作,那都是基于一个公司而言的,对于不同的公司,它的部门是不同的,显示的数据也应该是不同的,所以我们应该将公司信息抽取出来,设置它为登录的公司信息,这里先设置默认值id=1的公司,后期修改。 然后对其功能执行的时候,基础BaseController作父类,就能拥有它的所有属性。 抽取相同部门作为BaseController父类 子类继承父类,拥有父类的所有属性。 获取父类的公司信

  • 4 企业管理 4.1 需求分析 在通用页面配置企业管理模块,完成企业的基本操作 4.2 搭建环境 4.2.1 新增模块 (1)手动创建 方式一: 在src目录下创建文件夹,命名规则:module-模块名称()在文件夹下按照指定的结构配置assets,components,pages,router,store等文件 (2)使用命令自动创建 安装命令行工具 npm install -g itheima

 相关资料
  • SaaS Boilerplate Open source web app that saves you many days of work when building your own SaaS product. The boilerplate comes with many basic SaaS features (see Features below) so that you can focu

  • una-saas是基于Spring Boot 和 JPA构建的SaaS多租户应用系统,提供动态数据源切换,采用的数据隔离方式为共享DB,独立Schema。

  • 简云 Saas 平台,基于 SpringBoot2.3.3, Mybatis, JWT, Redis, VUE+Element-UI 的前后端分离的 Saas 平台后台管理系统 开发文档  文档链接http://yanghuiyuan.gitee.io/saas-ui/ 体验地址 简云 Saas 平台 系统功能  - 自定义表单: 用于OA表单自定义申请, 自定义模块扩展功能. -  自定义表单业

  • 微信小程序/公众号一键生成系统 weiit-saas是一款Java开源项目,属于weiit团队自研产品,意在通过技术封装,让企业无需代码开发,帮助企业一键生成小程序、公众号,让企业拥有独立品牌的自营商城。产品竞争对手《有赞》、《微盟》。 一、系统功能                                  五、系统功能 二、主要特点 项目采用Spring+SpringMVC+Mybati

  • tmaic saas 多租户(Multi-Tenant ),即一个Tenant,一个Database“的数据存储方式。隔离级别最高、最安全,说到底是要解决数据存储的问题,golang语言saas框架唯数不多的框架之一。 软件架构 数据模型 以下是例子 package modelsimport ( "github.com/pangxianfei/framework/helpers/m" "githu

  • 蓝鲸智云容器管理平台的 SaaS,它提供了友好的操作界面,支持对项目集群、节点、命名空间、部署配置、仓库镜像、应用等进行可视化界面操作管理,并提供了 WebConsole 可快捷查看集群状态的命令行服务,针对 K8S 集群模式支持使用 Helm 进行 K8S 应用的部署和管理。 蓝鲸智云容器管理平台的 SaaS 源码包含: bcs-app:SaaS 产品层主体功能模块,负责项目集群、节点、命名空间