Frontend

Headless Api


Since version 0.9.1

The Vanty Starter Kit as a headless API for a separate Frontend like Vue or React you will need to extend the backend.

Please be aware that using Django as a headless API means you will be losing out on the majority of the logic in the Django views and templates.

Authentication

The dj_rest_auth library is used to extend django-allauth to provide the following endpoints for managing the user registration and authentication flow.

  • User Registration with activation
  • Login/Logout
  • Retrieve/Update the Django User model
  • Password change
  • Password reset via e-mail
  • Social Media authentication

Enable social authentication

The allauth library is already installed with five providers enabled. However, it only includes Django-based and not DRF API views. To use social auth you will need to add custom views for each provider.

For example to add social auth Facebook:

add a custom view

from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
from dj_rest_auth.registration.views import SocialLoginView

class FacebookLogin(SocialLoginView):
    adapter_class = FacebookOAuth2Adapter

add the url

urlpatterns += [
    ...,
    path('dj-rest-auth/facebook/', FacebookLogin.as_view(), name='fb_login')
]

See the dj_rest_auth docs for adding connect views for social accounts.

Enable JWT authentication

This is enabled by default via the djangorestframework-simplejwt library. You can configure your preferences in config/settings/base.py .

    JWT_AUTH_COOKIE = 'my-app-auth'
    JWT_AUTH_REFRESH_COOKIE = 'my-refresh-token'
    REST_USE_JWT = True

You can also customise to suit your needs, for example change the claims attached to tokens .

Available endpoints.

The available endpoints depend on which apps are installed. See the full listing here .

The following apps are fully supported:

  • teams
  • users
  • workspaces
  • webhooks

The payments are is not yet fully supported. The endpoints to be replicated are in apps.payments/views.py . If you need this help with extending this, please add it as a feature request .

Client generation

You can also generate clients for pretty much every language out there. See the swagger codegen docs for more info .