Skip to content
Prototype Database driven Web apps in Angular 6, Bootstrap 4 and REST API's with Flask (Python 3 framework)
Branch: master
Clone or download
Latest commit 2fa62ed Dec 27, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ebextensions users Nov 3, 2018
__pycache__ user signup Dec 27, 2018
app removed env and commit 2.0 Dec 27, 2018
nginx nginx conf Jan 1, 2016
scaffold removed env and commit 2.0 Dec 27, 2018
tests update user form n tests Nov 14, 2018
.DS_Store users Nov 3, 2018
.gitignore requirements.txt Nov 13, 2018
.travis.yml - npm install travis Dec 25, 2018
LICENSE users Nov 3, 2018
README.md readme Dec 27, 2018
__init__.py users Nov 3, 2018
conf.js users Nov 3, 2018
config.py users Nov 3, 2018
db.py users Nov 3, 2018
requirements.txt requirements.txt Nov 13, 2018
run.py users Nov 3, 2018
sample.json TypeError: Decimal('44') is not JSON serializable Nov 26, 2015
scaffold.py run ng later Dec 27, 2018
setup.py users Nov 3, 2018
tests.bash tests.bash cleaned up Dec 16, 2015

README.md

Flask-Scaffold 2.0 let's you Prototype Database Driven Web Apps (Angular 6, Bootstrap 4) and REST API's (Flask python framework),

Features include

  • Python 3 Support
  • RESTFUL JSON API
  • Continous Integration with Travis-CI
  • Inbuilt User Management and Admin Dashboard
  • Google Analytics
  • Datatables support

###Demo Sign Up and Login

###Installation

Please ensure that development libraries for PostgreSQL are installed along with NPM.

####Step 1:Clone the project to your application folder.

git clone git@github.com:Leo-g/Flask-Scaffold.git YourAppFolderName && cd YourAppFolderName

####Step 2: Install the requirements and add your Database configuration details.

pip install -r requirements.txt
cd app/templates/static
npm install

vim config.py
#Fill in your database username, password, name, host etc

Step 3 : Declare your Resource and it's fields in a YAML file as follows

For a list of supported fields please see https://github.com/Leo-g/Flask-Scaffold/wiki/Fields

vim scaffold/blog.yaml
posts:
 - title:string
 - body:text
 - author:string
 - creation_date:datetime
 - published:boolean
comments:
 - author:string
 - body:text
 - author_url:url
 - created_on:date
 - approved:boolean
authors:
 - name:string
 - profile:text
 - url:url

Step 4 : Run the Scaffolding and database migrations script

python scaffold.py scaffold/blog.yaml
python db.py db init
python db.py db migrate
python db.py db upgrade

Step 5 : Run the Server

python run.py

**You should be able to see the Login Page at http://localhost:5000, Sign Up and Login

####For unit testing with python Unit tests

For a Single module

python app/<module_name>/test_<module_name>.py

For all modules

bash tests.bash

###API

API calls can be made to the following URL

Note: This example is for a Post module

HTTP Method URL Results
GET http://localhost:5000/api/v1/posts.json Returns a list of all Posts
POST http://localhost:5000/api/v1/posts.json Creates a New Post
GET http://localhost:5000/api/v1/posts/1.json Returns details for the a single Post
PATCH http://localhost:5000/api/v1/posts/1.json Update a Post
DELETE http://localhost:8001/api/v1/posts/1.json Delete a Post

The JSON format follows the spec at jsonapi.org and a sample is available in the sample.json file

###Tutorials https://techarena51.com/blog/buidling-a-database-driven-restful-json-api-in-python-3-with-flask-flask-restful-and-sqlalchemy/?utm_source=gh-flask-scaffold-readme

https://techarena51.com/blog/tag/flask-tutorials/?utm_source=gh-flask-scaffold-readme

###Directory Structure Project-Folder |-- config.py |--run.py |--requirements.txt |--conf.js |__ /venv |-- db.py |__ /scaffold |-- scaffold.py |-- tests.bash #Tests for all modules |__ app/ |-- init.py +-- module-1 |-- init.py |-- models.py |-- test_module-1.py # Unit Tests for module 1 |-- views.py    +-- module-2 |-- init.py |-- models.py |-- test_module-2.py # Unit Tests for module 2 |-- views.py |__ templates +-- static + -- js |-- app.js |-- login.js |-- css |-- images +-- module-1    |-- _form.html    |-- index.html    |-- add.html    |-- update.html |-- controller.js |--conf.js |--spec.js    +-- module-2    |-- _form.html    |-- index.html    |-- add.html    |-- update.html |-- controller.js |-- conf.js |-- spec.js

Google Analytics

Add your tracking ID and Domain name in app.js in the app.config section

  app.config(function (AnalyticsProvider) {
              // Set a single account
              AnalyticsProvider.setAccount('UA-XXXXX-xx');
              AnalyticsProvider.setDomainName('XXX');

   });

For complete Documentation see the wiki

Note: This app in based on https://github.com/start-angular/SB-Admin-BS4-Angular-6

You can’t perform that action at this time.