Skip to content

app-generator/api-server-flask

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
November 16, 2021 10:33
February 11, 2023 18:34
February 11, 2023 18:44
August 6, 2023 10:01
November 16, 2021 10:33
July 20, 2021 18:04
August 6, 2023 09:51
November 16, 2021 10:33
February 11, 2023 18:44
November 16, 2021 10:33
July 20, 2021 18:04
February 11, 2023 18:44
February 11, 2023 18:44
February 11, 2023 18:44

Flask API Server

Simple Flask API Boilerplate enhanced with JWT authentication, OAuth via GitHub, SqlAlchemy, SQLite persistence, and deployment scripts via Docker. It has all the ready-to-use bare minimum essentials.

  • 👉 Support via Discord & Email provided by AppSeed.

Features:

  • Up-to-date dependencies
  • API Definition - the unified API structure implemented by this server
  • ✅ API powered by Flask-restX
  • JWT Authentication (login, logout, register) via Flask-jwt_extended
  • 🆕 OAuth for Github
  • Docker, Unitary tests

Can be used with other React Starters for a complete Full-Stack experience:

React Node JS Berry React Node Soft Dashboard React Node Horizon
React Node JS Berry React Node Soft Dashboard React Node Horizon

Flask API Server - Open-source Flask Starter provided by AppSeed.


✨ Quick Start in Docker

Get the code

$ git clone https://github.com/app-generator/api-server-flask.git
$ cd api-server-flask

Start the app in Docker

$ docker-compose up --build  

The API server will start using the PORT 5000.


✨ Table of Contents

  1. Getting Started
  2. Project Structure
  3. Modules
  4. Testing

✨ How to use the code

Step #1 - Clone the project

$ git clone https://github.com/app-generator/api-server-flask.git
$ cd api-server-flask

Step #2 - create virtual environment using python3 and activate it (keep it outside our project directory)

$ # Virtualenv modules installation (Unix based systems)
$ virtualenv env
$ source env/bin/activate
$
$ # Virtualenv modules installation (Windows based systems)
$ # virtualenv env
$ # .\env\Scripts\activate

Step #3 - Install dependencies in virtualenv

$ pip install -r requirements.txt

Step #4 - setup flask command for our app

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

For Windows-based systems

$ (Windows CMD) set FLASK_APP=run.py
$ (Windows CMD) set FLASK_ENV=development
$
$ (Powershell) $env:FLASK_APP = ".\run.py"
$ (Powershell) $env:FLASK_ENV = "development"

Step #5 - 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
  • SECRET_KEY: used in assets management
  • GITHUB_CLIENT_ID: For GitHub social login
  • GITHUB_SECRET_KEY: For GitHub social login

Step #6 - start test APIs server at localhost:5000

$ flask run

Use the API via POSTMAN or Swagger Dashboard.

Flask API Server - Swagger Dashboard.


✨ Project Structure

api-server-flask/
├── api
│   ├── config.py
│   ├── __init__.py
│   ├── models.py
│   └── routes.py
├── Dockerfile
├── README.md
├── requirements.txt
├── run.py
└── tests.py

✨ API

For a fast set up, use this POSTMAN file: api_sample

Register - api/users/register (POST request)

POST api/users/register
Content-Type: application/json

{
    "username":"test",
    "password":"pass", 
    "email":"test@appseed.us"
}

Login - api/users/login (POST request)

POST /api/users/login
Content-Type: application/json

{
    "password":"pass", 
    "email":"test@appseed.us"
}

Logout - api/users/logout (POST request)

POST api/users/logout
Content-Type: application/json
authorization: JWT_TOKEN (returned by Login request)

{
    "token":"JWT_TOKEN"
}

✨ Testing

Run tests using pytest tests.py



Flask API Server - provided by AppSeed