text: # import libraries
  from fastapi import Depends, FastAPI, status, APIRouter
  from decouple import config
  # include other functionality
  from .config.db import engine
  from .routes.home_routes import home_router
  from .routes.user_routes import user_router
  from .routes.template_routes import template_router
  from .routes.document_routes import document_router
  from .database import models
  # =======================================================
  models.Base.metadata.create_all(bind=engine)
  
  # Define app as fastapi app
  description = """
  
  Document Api Conventor helps you do awesome stuff. 🚀 \n
  
  ## Users
  
  * **Read user me** (_user_action_)
  
  ## Templates
  
  * **Create templates** (_user_action_)
  
  * **Read templates** (_user_action_)
  
  * **Update templates** (_user_action_)
  
  * **Delete templates** (_user_action_)
  
  * **Upload templates** (_admin_action_)
  
  ## Documents
  
  * **Create documents** (_user_action_)
  
  * **Read documents** (_user_action_)
  
  * **Update documents** (_user_action_)
  
  * **Delete documents** (_user_action_)
  
  """
  
  app = FastAPI(
      title = "Document Api Conventor (DAC)",
      description = description + "\b",
      version = "0.1.0",
      openapi_url=f"{config('API_URL')}/openapi.json",
      docs_url=f"{config('API_URL')}/documentation", 
      redoc_url=f"{config('API_URL')}/redocs",
      contact = {
          "name": "Vasilis Tsatalis",
          "url": "https://vasilis-tsatalis.w3spaces.com/"
      },
      license_info = {
          "name": "MIT License",
          "url": "https://www.mit.edu/~amini/LICENSE.md",
      },
      terms_of_service= 
          "https://github.com/vasilis-tsatalis/document-conventor.git",
  )
  
  # Main Routes of API
  app.include_router(home_router)
  app.include_router(user_router)
  app.include_router(template_router)
  app.include_router(document_router)
  