{"id":16174848,"url":"https://github.com/app-generator/sample-django-all-auth-graphql","last_synced_at":"2025-03-19T00:31:04.199Z","repository":{"id":100503187,"uuid":"317561683","full_name":"app-generator/sample-django-all-auth-graphql","owner":"app-generator","description":"Django Dashboard - Open-Source Seed Project  | AppSeed ","archived":false,"fork":false,"pushed_at":"2022-10-11T10:18:32.000Z","size":6883,"stargazers_count":5,"open_issues_count":2,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-11T05:55:54.483Z","etag":null,"topics":["appseed","appseed-sample","django"],"latest_commit_sha":null,"homepage":"https://appseed.us/admin-dashboards/django","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/app-generator.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-01T14:10:17.000Z","updated_at":"2024-09-14T18:15:50.000Z","dependencies_parsed_at":"2023-05-15T11:15:22.012Z","dependency_job_id":null,"html_url":"https://github.com/app-generator/sample-django-all-auth-graphql","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"app-generator/django-argon-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-generator%2Fsample-django-all-auth-graphql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-generator%2Fsample-django-all-auth-graphql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-generator%2Fsample-django-all-auth-graphql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-generator%2Fsample-django-all-auth-graphql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/app-generator","download_url":"https://codeload.github.com/app-generator/sample-django-all-auth-graphql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955701,"owners_count":20374373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appseed","appseed-sample","django"],"created_at":"2024-10-10T04:43:32.469Z","updated_at":"2025-03-19T00:31:04.184Z","avatar_url":"https://github.com/app-generator.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django Seed Project\n\n\u003e **Open-Source Admin Dashboard** coded in **Django Framework** by **AppSeed** [App Generator](https://appseed.us/app-generator) - Features:\n\n\u003cbr /\u003e\n\n- REST API \n- GraphQL API\n- Charts Samples - Bar chart, Line chart\n- DataTables - pagination, search, inline edit (via Ajax) \n- Social Login via AllAuth (Google and Github) \n- Unitary Tests\n- Documentation (this file) - Full docs are WIP.\n\n\u003cbr /\u003e \n\n\u003e 🚀 `PROMO`: **[Junior Developers Starter KIT](https://www.creative-tim.com/product/buy/bundle/junior-bundle?AFFILIATE=128200)** `85%OFF`\n\nThe package includes a `rock-solid collection of premium assets` (**Kits \u0026 Dashboards**) that can be used to build eye-catching portfolios and web apps in no time.\n\n[![Junior Developers Starter KIT](https://user-images.githubusercontent.com/51854817/195055646-e55200cd-0ddd-4bdd-aded-0d4e4479789b.png)](https://www.creative-tim.com/product/buy/bundle/junior-bundle?AFFILIATE=128200)\n\n\u003cbr /\u003e \n\n## Base Requirements\n\n- Install `django-import-export` package to import data form csv, xls and etc file to table.\n```bash\n$ pip install django-import-export\n```\n\u003e Then add this package to INSTALLED_APPS in settings.py. Now you can change the admin section of each model and add this feature. so you can easily import the data to your table.\n\u003e Please add this package in requirements.txt\n\n\u003cbr /\u003e\n\n## REST API\n\n\u003e How to use it\n\nTo use REST in Django, install `djangorestframework`:\n‍‍‍\n```bash\n$ pip install djangorestframework djangorestframework-simplejwt\n```\n\nIn **[settings.py](https://github.com/app-generator/django-dashboard-eps/blob/master/core/settings.py)** add `rest_framework` in INSTALLED_APPS\n```python\nINSTALLED_APPS = [\n    ...\n    'rest_framework',\n]\n```\n\nThen add django rest framework config in **[settings.py](https://github.com/app-generator/django-dashboard-eps/blob/master/core/settings.py)**:\n```python\nREST_FRAMEWORK = {\n    'PAGE_SIZE': 5,\n    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',\n    'COERCE_DECIMAL_TO_STRING': False,\n}\n```\n\n\u003e Please add this package in requirements.txt\n\n**Database/table structure**\n\nCreate two models to display the information in REST API, which includes `Visit` \u0026 `Traffic`:\n\n```python\nfrom django.db import models\n\nclass Visit(models.Model):\n    BOUNCE_RATE_TYPE_UP = 1\n    BOUNCE_RATE_TYPE_DOWN = 2\n\n    BOUNCE_RATE_TYPE_CHOICES = [\n        (BOUNCE_RATE_TYPE_UP, 'up'),\n        (BOUNCE_RATE_TYPE_DOWN, 'down')\n    ]\n\n    page_name        = models.CharField(max_length=255)\n    visitors         = models.PositiveIntegerField()\n    unique_users     = models.PositiveIntegerField()\n    bounce_rate      = models.FloatField()\n    bounce_rate_type = models.SmallIntegerField(choices=BOUNCE_RATE_TYPE_CHOICES)\n    created_time     = models.DateTimeField(db_index=True)\n    updated_time     = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        verbose_name = 'visit'\n        verbose_name_plural = 'visits'\n\nclass Traffic(models.Model):\n    RATE_TYPE_UP = 1\n    RATE_TYPE_DOWN = 2\n\n    RATE_TYPE_CHOICES = [\n        (RATE_TYPE_UP, 'up'),\n        (RATE_TYPE_DOWN, 'down')\n    ]\n\n    referral     = models.CharField(max_length=50)\n    visitors     = models.PositiveIntegerField()\n    rate         = models.FloatField()\n    rate_type    = models.SmallIntegerField(choices=RATE_TYPE_CHOICES)\n    created_time = models.DateTimeField(db_index=True)\n    updated_time = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        verbose_name = 'traffic'\n        verbose_name_plural = 'traffics'\n```\n\n\u003cbr /\u003e\n\n**Files** (that implements the feature)\n\n- Create **[serializers.py](https://github.com/app-generator/django-dashboard-eps/blob/master/app/serializers.py)** file. Then add serializers `TrafficSerializer` and `VisitSerializer` as follows:\n```python\nfrom rest_framework import serializers\nfrom app.models import Traffic, Visit\n\nclass TrafficSerializer(serializers.ModelSerializer):\n    class Meta:\n        model = Traffic\n        fields = '__all__'\n\nclass VisitSerializer(serializers.ModelSerializer):\n    class Meta:\n        model = Visit\n        fields = '__all__'\n```\n\n- In file **[views.py](https://github.com/app-generator/django-dashboard-eps/blob/master/app/views.py)** add the `TrafficViewSet` and `VisitViewSet` ViewSets.\n```python\nfrom rest_framework.viewsets import ModelViewSet\nfrom app.models import Traffic, Visit\nfrom app.serializers import TrafficSerializer, VisitSerializer\n\n\nclass TrafficViewSet(ModelViewSet):\n    serializer_class = TrafficSerializer\n    queryset = Traffic.objects.all()\n    http_method_names = ['get']\n\n\nclass VisitViewSet(ModelViewSet):\n    serializer_class = VisitSerializer\n    queryset = Visit.objects.all()\n    http_method_names = ['get']\n```\n\n- In file **[urls.py](https://github.com/app-generator/django-dashboard-eps/blob/master/app/urls.py)**, add the following urls:\n```python\nfrom rest_framework import routers\nfrom app.views import TrafficViewSet, VisitViewSet\n\nrouter = routers.SimpleRouter()\nrouter.register(r'api/v1/traffics', TrafficViewSet, basename=\"traffics\")\nrouter.register(r'api/v1/visits', VisitViewSet, basename=\"visits\")\n\nurlpatterns = router.urls + [\n...\n]\n```\n\nNow your REST APIs is ready. And you can use it.\n\n\u003cbr /\u003e\n\n**API structure**\n\nThe `traffics` and `visits` APIs structure follow the Django REST framework:\n\n```json\n{\n    \"count\": \"Total Item count\",\n    \"next\": \"Next Link\",\n    \"previous\": \"Previous Link\",\n    \"results\": \"Serialized information in the form of a list\"\n}\n```\n\n**How to add data**\n\nIn Django admin, you can import data for the **Visits** and **Traffics** sections. \nTo do this just click on ```IMPORT``` button in each section, then select your csv, xls or etc file and submit it.\n\n![Import Data](https://raw.githubusercontent.com/app-generator/django-simple-charts/master/media/admin_import.png)\n\n\u003e Download **[Visits](https://github.com/app-generator/django-dashboard-eps/blob/master/media/sample_data/visits.csv)** and **[Traffics](https://github.com/app-generator/django-dashboard-eps/blob/master/media/sample_data/traffics.csv)** Sample data\n\n**How to consume API**\n\n* To use AIPs, you can import the sample **[POSTMAN](https://github.com/app-generator/django-dashboard-eps/blob/master/media/postman/postman.json)**\n\n\u003cbr /\u003e\n\n## GraphQL API\n\n\u003e How to use it\n\nTo use GraphQL in Django install `graphene-django`:\n```bash\n$ pip install graphene-django\n```\n\nIn **[settings.py](https://github.com/app-generator/django-dashboard-eps/blob/master/core/settings.py)** add `graphene-django` in INSTALLED_APPS\n```python\nINSTALLED_APPS = [\n    ...\n    'graphene_django',\n]\n```\n\n\u003e Please add this package in requirements.txt\n\n**Database/table structure**\n\nWe created two models to display the information in GraphQL API, which includes `Order` \u0026 `Sale`:\n\n```python\nfrom django.db import models\n\nclass Order(models.Model):\n    count        = models.PositiveIntegerField()\n    amount       = models.FloatField(db_index=True)\n    product_name = models.CharField(max_length=40, db_index=True)\n    created_time = models.DateTimeField(db_index=True)\n    updated_time = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        verbose_name = 'order'\n        verbose_name_plural = 'orders'\n\n\nclass Sale(models.Model):\n    amount       = models.FloatField(db_index=True)\n    product_name = models.CharField(max_length=40, db_index=True)\n    created_time = models.DateTimeField(db_index=True)\n    updated_time = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        verbose_name = 'sale'\n        verbose_name_plural = 'sales'\n```\n\n\u003cbr /\u003e\n\n**Files** (that implements the feature)\n\n- Create the **[schema.py](https://github.com/app-generator/django-dashboard-eps/blob/master/app/schema.py)** file in your app. Then add the following classes to make your own schema:\n\u003e These classes include monthly reports on sales and orders.\n```python\nimport graphene\nfrom django.db.models import Count, Sum\nfrom django.db.models.functions import TruncMonth\nfrom app.models import Order, Sale\n\n\nclass OrderMonthReportType(graphene.ObjectType):\n    month = graphene.Int()\n    total = graphene.Int(name='total')\n\nclass SalesMonthReportType(graphene.ObjectType):\n    month = graphene.Int()\n    total_amount = graphene.Float(name='total_amount')\n\nclass Query(graphene.ObjectType):\n    orders_month_report = graphene.List(\n        OrderMonthReportType,\n        name='orders_month_report'\n    )\n\n    sales_month_report = graphene.List(\n        SalesMonthReportType,\n        name='sales_month_report'\n    )\n\n    def resolve_orders_month_report(self, info, **kwargs):\n        queryset = Order.objects.annotate(\n            date=TruncMonth('created_time')\n        ).values('date').annotate(total=Count('id')).values('date', 'total').order_by('date')\n\n        report = {month: 0 for month in range(1, 13)}\n        for order_month in queryset:\n            report[order_month['date'].month] += order_month['total']\n        report = sorted(report.items())\n\n        res = []\n        for month, total in report:\n            res.append({'month': month, 'total': total})\n\n        return res\n\n    def resolve_sales_month_report(self, info, **kwargs):\n        queryset = Sale.objects.annotate(\n            date=TruncMonth('created_time')\n        ).values('date').annotate(total_amount=Sum('amount')).values('date', 'total_amount').order_by('date')\n\n        report = {month: 0 for month in range(1, 13)}\n        for order_month in queryset:\n            report[order_month['date'].month] += round(order_month['total_amount'], 2)\n        report = sorted(report.items())\n\n        res = []\n        for month, total_amount in report:\n            res.append({'month': month, 'total_amount': total_amount})\n\n        return res\n```\n\n- To receive data through any app, you need to create a [schema.py](https://github.com/app-generator/django-dashboard-eps/blob/master/core/schema.py) file in the main app. In this project, the name of the main app is `core`. So in this part, I created a scheam.py:\n\n```python\nimport graphene\nfrom app.schema import Query as app_query\n\nclass Query(app_query):\n    pass\n\nschema = graphene.Schema(query=Query)\n```\n\n- Then add the url in [urls.py](https://github.com/app-generator/django-dashboard-eps/blob/master/core/urls.py) in `main` app:\n\n```python\nfrom django.contrib import admin\nfrom django.urls import path\nfrom django.views.decorators.csrf import csrf_exempt\nfrom graphene_django.views import GraphQLView\nfrom core.schema import schema\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    \n    # This is our GraphQL URL\n    path('graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True, schema=schema))),\n]\n```\n\u003e We enabled ‍‍‍`graphiql` to run queries with `graphiql=True`\n\n- Now you can open `http://localhost:8000/graphql/` in your browser and run your queries.\n\nSample Query:\n```text\n{\n  orders_month_report{\n    total\n    month\n  }\n  sales_month_report{\n    total_amount\n    month\n  }\n}\n```\n\n\u003cbr /\u003e\n\n**API structure**\n\nThe `orders` and `sales` APIs structure follow the Django GraphQL:\n```json\n{\n  \"data\": {\n    \"orders_month_report\": [],\n    \"sales_month_report\": []\n  }\n}\n```\n\n**How to add data**\n\nIn Django admin, you can import data for the **Orders** and **Sales** sections. \nTo do this just click on ```IMPORT``` button in each section, then select your csv, xls or etc file and submit it.\n\n![Import Data](https://raw.githubusercontent.com/app-generator/django-simple-charts/master/media/admin_import.png)\n\n\u003e Download **[Orders](https://github.com/app-generator/django-dashboard-eps/blob/master/media/sample_data/orders.csv)** and **[Sales](https://github.com/app-generator/django-dashboard-eps/blob/master/media/sample_data/sales.csv)** Sample data\n\n\n**How to consume API**\n\n* To use AIPs, you can import the sample **[POSTMAN](https://github.com/app-generator/django-dashboard-eps/blob/master/media/postman/postman.json)**\n\n\u003cbr /\u003e\n\n## Charts Samples\n\nFor this part, we use GraphQL API and Jquery (AJAX) to fetch data and show.\n\n**Database/table structure**\n\n* In this section, we use the previous models, ie `Order` and `Sale`.\n\n\u003cbr /\u003e\n\n**Files** (that implements the feature)\n\n- Create a new js file (anywhere you want). named [dashboard.js](https://github.com/app-generator/django-dashboard-eps/blob/master/core/static/assets/js/dashboard.js) and add it in the page you want to fetch and show.\n- Run AJAX when the page loaded. for doing this I made a function then I call it anywhere:\n\n```js\nfunction GraghQLAjax(params) {\n    var query = JSON.stringify({\n        query: `query {\n            orders_month_report {\n                month\n                total\n            }\n            sales_month_report {\n                month\n                total_amount\n            }\n        }`\n    });\n\n    $.ajax({\n        method: 'POST',\n        url: '/graphql/',\n        data: query,\n        contentType: 'application/json',\n        success: function (data) {\n            var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n            // sales chart\n            var sales_chart_data = [];\n            $.each(data.data.sales_month_report, function (index, obj) {\n                sales_chart_data.push(obj.total_amount);\n            });\n            SalesChart(sales_chart_data, months);\n\n            // orders chart\n            var orders_chart_data = [];\n            $.each(data.data.orders_month_report, function (index, obj) {\n                orders_chart_data.push(obj.total);\n            });\n            OrderChart(orders_chart_data, months);\n\n        },\n        error: function () {\n            alert('Error occurred');\n        }\n    });\n}\n\n// charts function\n\n// Line chart\nfunction SalesChart(data, labels) {\n    // Variables\n    var $chart = $('#chartSales');\n\n    var salesChart = new Chart($chart, {\n        type: 'line',\n        options: {\n            scales: {\n                yAxes: [{\n                    gridLines: {\n                        lineWidth: 1,\n                        color: Charts.colors.gray[900],\n                        zeroLineColor: Charts.colors.gray[900]\n                    },\n                    ticks: {\n                        callback: function (value) {\n                            if (!(value % 10)) {\n                                return '$' + value;\n                            }\n                        }\n                    }\n                }]\n            },\n            tooltips: {\n                callbacks: {\n                    label: function (item, data) {\n                        var label = data.datasets[item.datasetIndex].label || '';\n                        var yLabel = item.yLabel;\n                        var content = '';\n\n                        if (data.datasets.length \u003e 1) {\n                            content += '\u003cspan class=\"popover-body-label mr-auto\"\u003e' + label + '\u003c/span\u003e';\n                        }\n\n                        content += '\u003cspan class=\"popover-body-value\"\u003e$' + yLabel + '\u003c/span\u003e';\n                        return content;\n                    }\n                }\n            }\n        },\n        data: {\n            labels: labels,\n            datasets: [{\n                label: 'Performance',\n                data: data\n            }]\n        }\n    });\n\n    // Save to jQuery object\n    $chart.data('chart', salesChart);\n}\n\n// Bar chart\nfunction OrderChart(data, labels) {\n    var $chart = $('#chartOrders');\n\n    var ordersChart = new Chart($chart, {\n        type: 'bar',\n        options: {\n            scales: {\n                yAxes: [{\n                    gridLines: {\n                        lineWidth: 1,\n                        color: '#dfe2e6',\n                        zeroLineColor: '#dfe2e6'\n                    },\n                    ticks: {\n                        callback: function (value) {\n                            if (!(value % 10)) {\n                                //return '$' + value + 'k'\n                                return value\n                            }\n                        }\n                    }\n                }]\n            },\n            tooltips: {\n                callbacks: {\n                    label: function (item, data) {\n                        var label = data.datasets[item.datasetIndex].label || '';\n                        var yLabel = item.yLabel;\n                        var content = '';\n\n                        if (data.datasets.length \u003e 1) {\n                            content += '\u003cspan class=\"popover-body-label mr-auto\"\u003e' + label + '\u003c/span\u003e';\n                        }\n\n                        content += '\u003cspan class=\"popover-body-value\"\u003e' + yLabel + '\u003c/span\u003e';\n\n                        return content;\n                    }\n                }\n            }\n        },\n        data: {\n            labels: labels,\n            datasets: [{\n                label: 'Sales',\n                data: data\n            }]\n        }\n    });\n\n    // Save to jQuery object\n    $chart.data('chart', ordersChart);\n}\n```\n\n\u003e Now call `GraghQLAjax` function whatever you want. In this example, after fetching data from GraphQL, the required params sent to the related function to show the data on charts.\n\n\u003cbr /\u003e\n\n## DataTables (paginated information)\n\nIn this section, you can `search`, `edit` and `delete` the transactions. The added features of this `datatable` are:\n    \n- Paginated information (transaction page) with usable controls: PREV, 1,2,3., NEXT\n- Search box to filter\n- Delete row control\n- edit cel data on double click and ENTER on confirm.\n\n\u003cbr /\u003e\n\n**Database/table structure**\n\nCreate the `Transaction` model to show data in the datatable:\n```python\nfrom django.db import models\n\nclass Transaction(models.Model):\n    bill_for = models.CharField(max_length=100)\n    issue_date = models.DateField()\n    due_date = models.DateField()\n    total = models.DecimalField(max_digits=10, decimal_places=2)\n\n    status = models.CharField(max_length=10)\n\n    created_time = models.DateTimeField(auto_now_add=True)\n    updated_time = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        verbose_name = 'transaction'\n        verbose_name_plural = 'transactions'\n```\n\n\u003cbr /\u003e\n\n**How to add data**\n\nIn Django admin, you can import data for the **Transaction** sections. \nTo do this just click on ```IMPORT``` button in each section, then select your csv, xls or etc file and submit it.\n\n![Import Data](https://raw.githubusercontent.com/app-generator/django-simple-charts/master/media/admin_import.png)\n\n\u003e Download **[Transactions](https://github.com/app-generator/django-dashboard-eps/blob/master/media/sample_data/transactions.csv)** Sample data\n\n\n\u003cbr /\u003e\n\n**Files** (that implements the feature)\n\n- In this section, create a view in [view.py](https://github.com/app-generator/django-dashboard-eps/blob/master/app/views.py) to implement CRUD (`Create`, `Read`, `Update`, `Delete`):\n\n```python\nfrom django.views import View\n\nclass TransactionView(View):\n    def get(self, request):\n        pass\n\n    def post(self, request):\n        pass\n\n    def put(self, request):\n        pass\n\n    def delete(self, request):\n        pass\n```\n\n\u003e We use `get` to display items and forms, `post` to store a new item, `put` to update an item, and `delete` to remove an item.\n\n- jQuery (AJAX) has been used to make changes in the datatable. Which is located in the [app_js.js](https://github.com/app-generator/django-dashboard-eps/blob/master/app/static/app_assets/js/app_js.js).\n\n\u003cbr /\u003e\n\n## Social Login\n\n**Requirements**\n\nThere is a convenient package to an integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication that is very easy to use.\nThe package is `django-allauth`‍ and you can read its [doc](https://django-allauth.readthedocs.io/en/latest/index.html) to use it. and also recommend a [youtube video](https://www.youtube.com/watch?v=56w8p0goIfs) for easier implementation.\n\n\u003cbr /\u003e\n\n**Files** (that implements the feature)\n\nIn this section, we selected Google and Github to implement.\n\n- Added buttons in [login.html](https://github.com/app-generator/django-dashboard-eps/blob/master/core/templates/accounts/login.html) and [register.html](https://github.com/app-generator/django-dashboard-eps/blob/master/core/templates/accounts/register.html).\n\n![Social Auth](https://raw.githubusercontent.com/app-generator/django-dashboard-eps/master/media/django-dashboard-argon-signin-signup.png)\n\n\u003cbr /\u003e\n\n## Unitary Tests\n\n- **REST APIs test:**\n```bash\n$ python manage.py test app.tests.RESTAPIsTest\n```\n\n\u003cbr /\u003e\n\n- **GraphQL test:**\n\n```bash\n$ python manage.py test app.tests.GraphQLAPIsTest\n```\n\u003cbr /\u003e\n\n## Full Documentation (WIP) \n\nThis section will point users to https://docs.appseed.us (WIP)\n\n\u003cbr /\u003e\n\n---\nDjango Seed Project - Provided by **AppSeed** [App Generator](https://appseed.us/app-generator).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapp-generator%2Fsample-django-all-auth-graphql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapp-generator%2Fsample-django-all-auth-graphql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapp-generator%2Fsample-django-all-auth-graphql/lists"}