├── .env ├── .gitignore ├── .node-version ├── CHANGELOG.md ├── Dockerfile ├── LICENSE.md ├── README.md ├── apps ├── charts │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── dyn_api │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── helpers.py │ ├── migrations │ │ └── __init__.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── dyn_dt │ ├── .gitkeep │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── templatetags │ │ ├── __init__.py │ │ └── get_attribute.py │ ├── tests.py │ ├── urls.py │ ├── utils.py │ └── views.py ├── pages │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── celery.py │ ├── migrations │ │ ├── 0001_initial.py │ │ └── __init__.py │ ├── models.py │ ├── signals.py │ ├── tasks.py │ ├── templatetags │ │ ├── __init__.py │ │ ├── file_extension.py │ │ ├── formats.py │ │ └── info_value.py │ ├── tests.py │ ├── urls.py │ └── views.py ├── tasks │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ └── views.py └── users │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ ├── 0001_initial.py │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py │ ├── utils.py │ └── views.py ├── build.sh ├── cli ├── __init__.py ├── common.py ├── h_ai_claude.py ├── h_code_parser.py ├── h_django.py ├── h_django_common.py ├── h_django_deps.py ├── h_django_env.py ├── h_django_settings.py ├── h_django_urls.py ├── h_files.py ├── h_git.py ├── h_shell.py ├── h_util.py └── migrations │ └── __init__.py ├── config ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py ├── db.sqlite3 ├── docker-compose.yml ├── docs ├── celery.md ├── charts-via-api.md ├── charts.md ├── ci-cd.md ├── datatables.md ├── docker.md ├── extended-user.md ├── multilanguage.md ├── oauth.md └── tailwind.md ├── env.sample ├── gunicorn-cfg.py ├── manage.py ├── media ├── Sales.csv ├── avatar │ └── logo-appseed-100x.png └── mapper.json ├── nginx └── appseed-app.conf ├── package.json ├── postcss.config.js ├── render.yaml ├── requirements.txt ├── static ├── assets │ ├── charts.js │ ├── constants.js │ ├── dark-mode.js │ ├── index.js │ ├── sidebar.js │ └── style.css └── dist │ ├── css │ └── output.css │ ├── images │ ├── authentication │ │ ├── create-account.jpg │ │ ├── login.jpg │ │ └── reset-password.jpg │ ├── blog │ │ ├── image-1.jpg │ │ ├── image-2.jpg │ │ ├── image-3.jpg │ │ ├── image-4.jpg │ │ └── image-7.jpg │ ├── csv.png │ ├── export.png │ ├── feed │ │ ├── image-1.jpg │ │ └── image-2.jpg │ ├── flags │ │ ├── ad.svg │ │ ├── ae.svg │ │ ├── af.svg │ │ ├── ag.svg │ │ ├── ai.svg │ │ ├── al.svg │ │ ├── am.svg │ │ ├── an.svg │ │ ├── ao.svg │ │ ├── ar.svg │ │ ├── at.svg │ │ ├── au.svg │ │ ├── aw.svg │ │ ├── ax.svg │ │ ├── az.svg │ │ ├── ba.svg │ │ ├── bb.svg │ │ ├── bd.svg │ │ ├── be.svg │ │ ├── bf.svg │ │ ├── bg.svg │ │ ├── bh.svg │ │ ├── bi.svg │ │ ├── bj.svg │ │ ├── bm.svg │ │ ├── bn.svg │ │ ├── bo.svg │ │ ├── br.svg │ │ ├── bs.svg │ │ ├── bt.svg │ │ ├── bw.svg │ │ ├── by.svg │ │ ├── bz.svg │ │ ├── ca.svg │ │ ├── caf.svg │ │ ├── cas.svg │ │ ├── cd.svg │ │ ├── ceu.svg │ │ ├── cf.svg │ │ ├── cg.svg │ │ ├── ch.svg │ │ ├── ci.svg │ │ ├── cl.svg │ │ ├── cm.svg │ │ ├── cn.svg │ │ ├── cna.svg │ │ ├── co.svg │ │ ├── coc.svg │ │ ├── cr.svg │ │ ├── csa.svg │ │ ├── cu.svg │ │ ├── cv.svg │ │ ├── cy.svg │ │ ├── cz.svg │ │ ├── de.svg │ │ ├── dj.svg │ │ ├── dk.svg │ │ ├── dm.svg │ │ ├── do.svg │ │ ├── dz.svg │ │ ├── ec.svg │ │ ├── ee.svg │ │ ├── eg.svg │ │ ├── er.svg │ │ ├── es.svg │ │ ├── et.svg │ │ ├── eu.svg │ │ ├── fi.svg │ │ ├── fj.svg │ │ ├── fk.svg │ │ ├── fm.svg │ │ ├── fr.svg │ │ ├── ga.svg │ │ ├── gb.svg │ │ ├── gd.svg │ │ ├── ge.svg │ │ ├── gg.svg │ │ ├── gh.svg │ │ ├── gi.svg │ │ ├── gm.svg │ │ ├── gn.svg │ │ ├── gq.svg │ │ ├── gr.svg │ │ ├── gt.svg │ │ ├── gw.svg │ │ ├── gy.svg │ │ ├── hk.svg │ │ ├── hn.svg │ │ ├── hr.svg │ │ ├── ht.svg │ │ ├── hu.svg │ │ ├── id.svg │ │ ├── ie.svg │ │ ├── il.svg │ │ ├── im.svg │ │ ├── in.svg │ │ ├── iq.svg │ │ ├── ir.svg │ │ ├── is.svg │ │ ├── it.svg │ │ ├── je.svg │ │ ├── jm.svg │ │ ├── jo.svg │ │ ├── jp.svg │ │ ├── ke.svg │ │ ├── kg.svg │ │ ├── kh.svg │ │ ├── km.svg │ │ ├── kn.svg │ │ ├── kp.svg │ │ ├── kr.svg │ │ ├── kw.svg │ │ ├── ky.svg │ │ ├── kz.svg │ │ ├── la.svg │ │ ├── lb.svg │ │ ├── lc.svg │ │ ├── li.svg │ │ ├── lk.svg │ │ ├── lr.svg │ │ ├── ls.svg │ │ ├── lt.svg │ │ ├── lu.svg │ │ ├── lv.svg │ │ ├── ly.svg │ │ ├── ma.svg │ │ ├── mc.svg │ │ ├── md.svg │ │ ├── me.svg │ │ ├── mg.svg │ │ ├── mk.svg │ │ ├── ml.svg │ │ ├── mm.svg │ │ ├── mn.svg │ │ ├── mo.svg │ │ ├── mr.svg │ │ ├── ms.svg │ │ ├── mt.svg │ │ ├── mu.svg │ │ ├── mv.svg │ │ ├── mw.svg │ │ ├── mx.svg │ │ ├── my.svg │ │ ├── mz.svg │ │ ├── na.svg │ │ ├── ne.svg │ │ ├── ng.svg │ │ ├── ni.svg │ │ ├── nl.svg │ │ ├── no.svg │ │ ├── np.svg │ │ ├── nz.svg │ │ ├── om.svg │ │ ├── pa.svg │ │ ├── pe.svg │ │ ├── pf.svg │ │ ├── pg.svg │ │ ├── ph.svg │ │ ├── pk.svg │ │ ├── pl.svg │ │ ├── pr.svg │ │ ├── pt.svg │ │ ├── pw.svg │ │ ├── py.svg │ │ ├── qa.svg │ │ ├── ro.svg │ │ ├── rs.svg │ │ ├── ru.svg │ │ ├── rw.svg │ │ ├── sa.svg │ │ ├── sb.svg │ │ ├── sc.svg │ │ ├── sd.svg │ │ ├── se.svg │ │ ├── sg.svg │ │ ├── sh.svg │ │ ├── si.svg │ │ ├── sk.svg │ │ ├── sl.svg │ │ ├── sm.svg │ │ ├── sn.svg │ │ ├── so.svg │ │ ├── sr.svg │ │ ├── st.svg │ │ ├── sv.svg │ │ ├── sy.svg │ │ ├── sz.svg │ │ ├── tc.svg │ │ ├── td.svg │ │ ├── tg.svg │ │ ├── th.svg │ │ ├── tj.svg │ │ ├── tl.svg │ │ ├── tm.svg │ │ ├── tn.svg │ │ ├── to.svg │ │ ├── tr.svg │ │ ├── tt.svg │ │ ├── tw.svg │ │ ├── tz.svg │ │ ├── ua.svg │ │ ├── ug.svg │ │ ├── us.svg │ │ ├── uy.svg │ │ ├── uz.svg │ │ ├── vc.svg │ │ ├── ve.svg │ │ ├── vg.svg │ │ ├── vn.svg │ │ ├── vu.svg │ │ ├── ws.svg │ │ ├── ww.svg │ │ ├── ye.svg │ │ ├── za.svg │ │ ├── zm.svg │ │ └── zw.svg │ ├── illustrations │ │ ├── 404.svg │ │ ├── 500.svg │ │ ├── maintenance.svg │ │ └── sign-in.svg │ ├── kanban │ │ ├── task-1.jpg │ │ ├── task-2.jpg │ │ └── task-3.jpg │ ├── logo.svg │ ├── og-image.png │ ├── products │ │ ├── apple-imac-1.png │ │ ├── apple-imac-2.png │ │ ├── apple-imac-3.png │ │ ├── imac.png │ │ ├── ipad.png │ │ ├── iphone.png │ │ └── watch.png │ ├── themesberg.svg │ └── users │ │ ├── bonnie-green-2x.png │ │ ├── bonnie-green.png │ │ ├── helene-engels.png │ │ ├── jese-leos-2x.png │ │ ├── jese-leos.png │ │ ├── joseph-mcfall.png │ │ ├── lana-byrd.png │ │ ├── leslie-livingston.png │ │ ├── michael-gough.png │ │ ├── neil-sims.png │ │ ├── robert-brown.png │ │ ├── roberta-casas-2x.png │ │ ├── roberta-casas.png │ │ └── thomas-lean.png │ ├── img │ └── default-user.png │ ├── main.bundle.js │ ├── main.bundle.js.map │ ├── main.css │ └── main.css.map ├── staticfiles └── .gitignore ├── tailwind.config.js ├── tasks_scripts ├── check-db-health.py ├── check-disk-free.py └── clean-database.py ├── templates ├── apps │ ├── charts.html │ ├── datatables.html │ ├── tasks.html │ └── users.html ├── authentication │ ├── forgot-password.html │ ├── password-change-done.html │ ├── password-change.html │ ├── password-reset-complete.html │ ├── password-reset-done.html │ ├── profile-lock.html │ ├── reset-password.html │ ├── sign-in.html │ └── sign-up.html ├── dashboard │ ├── index.html │ └── profile.html ├── dyn_api │ └── index.html ├── dyn_dt │ ├── index.html │ ├── items-table.html │ └── model.html ├── includes │ ├── footer.html │ ├── head.html │ ├── navigation.html │ ├── scripts.html │ └── sidebar.html ├── layouts │ ├── base-auth.html │ └── base.html └── pages │ └── starter.html └── webpack.config.js /.env: -------------------------------------------------------------------------------- 1 | DEBUG=True 2 | 3 | SECRET_KEY= 4 | 5 | # DB_ENGINE=mysql 6 | # DB_HOST=localhost 7 | # DB_NAME=appseed_db 8 | # DB_USERNAME=appseed_db_usr 9 | # DB_PASS=pass 10 | # DB_PORT=3306 11 | 12 | EMAIL_HOST=smtp.gmail.com 13 | EMAIL_PORT=587 14 | EMAIL_USE_TLS=True 15 | EMAIL_HOST_USER= 16 | EMAIL_HOST_PASSWORD= 17 | 18 | # Uncomment for local Redis 19 | #CELERY_BROKER_URL=redis://localhost:6379 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.DS_Store 3 | *.egg* 4 | /dist/ 5 | /.idea 6 | /docs/_build/ 7 | /node_modules/ 8 | build/ 9 | env 10 | env_linux 11 | 12 | #src 13 | #*.sqlite* 14 | 15 | #.env 16 | node_modules 17 | yarn.lock 18 | package-lock.json 19 | 20 | tasks_logs/ 21 | #media/ 22 | 23 | apps/common/management 24 | apps/helpers 25 | 26 | #/media/ 27 | !/media/mapper.json 28 | !/media/Sales.csv -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | v22.0.0 -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.11.5 2 | 3 | # set environment variables 4 | ENV PYTHONDONTWRITEBYTECODE 1 5 | ENV PYTHONUNBUFFERED 1 6 | 7 | COPY requirements.txt . 8 | # install python dependencies 9 | RUN pip install --upgrade pip 10 | RUN pip install --no-cache-dir -r requirements.txt 11 | 12 | COPY . . 13 | 14 | # Install node 18 and npm 15 | RUN set -uex; \ 16 | apt-get update; \ 17 | apt-get install -y ca-certificates curl gnupg; \ 18 | mkdir -p /etc/apt/keyrings; \ 19 | curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ 20 | | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \ 21 | NODE_MAJOR=18; \ 22 | echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \ 23 | > /etc/apt/sources.list.d/nodesource.list; \ 24 | apt-get update; \ 25 | apt-get install nodejs -y; 26 | 27 | # Install Modules, Webpack and Tailwind set up 28 | RUN npm i 29 | RUN npm run build 30 | RUN npx tailwindcss -i ./static/assets/style.css -o ./static/dist/css/output.css 31 | 32 | # Manage Assets & DB 33 | RUN python manage.py collectstatic --no-input 34 | RUN python manage.py makemigrations 35 | RUN python manage.py migrate 36 | 37 | # gunicorn 38 | CMD ["gunicorn", "--config", "gunicorn-cfg.py", "config.wsgi"] 39 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019 - present [AppSeed](http://appseed.us/) 4 | 5 |
6 | 7 | ## Licensing Information 8 | 9 |
10 | 11 | | Item | - | 12 | | ---------------------------------- | --- | 13 | | License Type | MIT | 14 | | Use for print | **YES** | 15 | | Create single personal website/app | **YES** | 16 | | Create single website/app for client | **YES** | 17 | | Create multiple website/apps for clients | **YES** | 18 | | Create multiple SaaS applications | **YES** | 19 | | End-product paying users | **YES** | 20 | | Product sale | **YES** | 21 | | Remove footer credits | **YES** | 22 | | --- | --- | 23 | | Remove copyright mentions from source code | NO | 24 | | Production deployment assistance | NO | 25 | | Create HTML/CSS template for sale | NO | 26 | | Create Theme/Template for CMS for sale | NO | 27 | | Separate sale of our UI Elements | NO | 28 | 29 |
30 | 31 | --- 32 | For more information regarding licensing, please contact the AppSeed Service < *support@appseed.us* > 33 | -------------------------------------------------------------------------------- /apps/charts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/charts/__init__.py -------------------------------------------------------------------------------- /apps/charts/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/charts/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class ChartsConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.charts" 7 | -------------------------------------------------------------------------------- /apps/charts/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/charts/migrations/__init__.py -------------------------------------------------------------------------------- /apps/charts/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /apps/charts/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/charts/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | urlpatterns = [ 6 | path("", views.index, name="charts"), 7 | ] -------------------------------------------------------------------------------- /apps/charts/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | from apps.pages.models import Product 3 | from django.core import serializers 4 | 5 | 6 | # Create your views here. 7 | 8 | def index(request): 9 | products = serializers.serialize('json', Product.objects.all()) 10 | context = { 11 | 'segment' : 'charts', 12 | 'parent' : 'apps', 13 | 'products': products 14 | } 15 | return render(request, 'apps/charts.html', context) 16 | -------------------------------------------------------------------------------- /apps/dyn_api/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | -------------------------------------------------------------------------------- /apps/dyn_api/admin.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | from django.contrib import admin 7 | 8 | # Register your models here. 9 | -------------------------------------------------------------------------------- /apps/dyn_api/apps.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | from django.apps import AppConfig 7 | 8 | class DynApiConfig(AppConfig): 9 | default_auto_field = 'django.db.models.BigAutoField' 10 | name = 'apps.dyn_api' 11 | -------------------------------------------------------------------------------- /apps/dyn_api/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/dyn_api/migrations/__init__.py -------------------------------------------------------------------------------- /apps/dyn_api/tests.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | from django.test import TestCase 7 | 8 | # Create your tests here. 9 | -------------------------------------------------------------------------------- /apps/dyn_api/urls.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | from django.contrib import admin 7 | from django.urls import path 8 | from apps.dyn_api import views 9 | 10 | urlpatterns = [ 11 | path('api/', views.index, name="dynamic_api"), 12 | 13 | path('api//' , views.DynamicAPI.as_view(), name="model_api"), 14 | path('api//' , views.DynamicAPI.as_view()), 15 | path('api///' , views.DynamicAPI.as_view()), 16 | ] 17 | -------------------------------------------------------------------------------- /apps/dyn_dt/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/dyn_dt/.gitkeep -------------------------------------------------------------------------------- /apps/dyn_dt/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/dyn_dt/__init__.py -------------------------------------------------------------------------------- /apps/dyn_dt/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import * 3 | 4 | # Register your models here. 5 | 6 | admin.site.register(PageItems) 7 | admin.site.register(HideShowFilter) 8 | admin.site.register(ModelFilter) 9 | -------------------------------------------------------------------------------- /apps/dyn_dt/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | class DynDtConfig(AppConfig): 4 | default_auto_field = 'django.db.models.BigAutoField' 5 | name = 'apps.dyn_dt' 6 | -------------------------------------------------------------------------------- /apps/dyn_dt/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | # Create your forms here. 4 | -------------------------------------------------------------------------------- /apps/dyn_dt/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/dyn_dt/migrations/__init__.py -------------------------------------------------------------------------------- /apps/dyn_dt/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import gettext_lazy as _ 3 | 4 | # Create your models here. 5 | 6 | class PageItems(models.Model): 7 | parent = models.CharField(max_length=255, null=True, blank=True) 8 | items_per_page = models.IntegerField(default=25) 9 | 10 | class HideShowFilter(models.Model): 11 | parent = models.CharField(max_length=255, null=True, blank=True) 12 | key = models.CharField(max_length=255) 13 | value = models.BooleanField(default=False) 14 | 15 | def __str__(self): 16 | return self.key 17 | 18 | class ModelFilter(models.Model): 19 | parent = models.CharField(max_length=255, null=True, blank=True) 20 | key = models.CharField(max_length=255) 21 | value = models.CharField(max_length=255) 22 | 23 | def __str__(self): 24 | return self.key -------------------------------------------------------------------------------- /apps/dyn_dt/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/dyn_dt/templatetags/__init__.py -------------------------------------------------------------------------------- /apps/dyn_dt/templatetags/get_attribute.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | from datetime import datetime 3 | 4 | register = template.Library() 5 | 6 | 7 | @register.filter(name="getattribute") 8 | def getattribute(value, arg): 9 | try: 10 | attr_value = getattr(value, arg) 11 | 12 | if isinstance(attr_value, datetime): 13 | return attr_value.strftime("%Y-%m-%d %H:%M:%S") 14 | 15 | return attr_value 16 | except: 17 | return '' 18 | 19 | 20 | @register.filter 21 | def get(dict_data, key): 22 | return dict_data.get(key, []) -------------------------------------------------------------------------------- /apps/dyn_dt/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/dyn_dt/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from apps.dyn_dt import views 3 | 4 | urlpatterns = [ 5 | path('dynamic-dt/', views.index, name="dynamic_dt"), 6 | 7 | path('create-filter//', views.create_filter, name="create_filter"), 8 | path('create-page-items//', views.create_page_items, name="create_page_items"), 9 | path('create-hide-show-items//', views.create_hide_show_filter, name="create_hide_show_filter"), 10 | path('delete-filter///', views.delete_filter, name="delete_filter"), 11 | path('create//', views.create, name="create"), 12 | path('delete///', views.delete, name="delete"), 13 | path('update///', views.update, name="update"), 14 | 15 | path('export-csv//', views.ExportCSVView.as_view(), name='export_csv'), 16 | 17 | path('dynamic-dt//', views.model_dt, name="model_dt"), 18 | ] 19 | -------------------------------------------------------------------------------- /apps/dyn_dt/utils.py: -------------------------------------------------------------------------------- 1 | from django.db.models import Q 2 | 3 | def user_filter(request, queryset, fields, fk_fields=[]): 4 | value = request.GET.get('search') 5 | 6 | if value: 7 | dynamic_q = Q() 8 | for field in fields: 9 | if field not in fk_fields: 10 | dynamic_q |= Q(**{f'{field}__icontains': value}) 11 | return queryset.filter(dynamic_q) 12 | 13 | return queryset -------------------------------------------------------------------------------- /apps/pages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/pages/__init__.py -------------------------------------------------------------------------------- /apps/pages/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/pages/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class PagesConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.pages" 7 | 8 | def ready(self): 9 | import apps.pages.signals 10 | -------------------------------------------------------------------------------- /apps/pages/celery.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | import os 7 | 8 | from celery import Celery 9 | 10 | if os.environ.get('DJANGO_SETTINGS_MODULE'): 11 | 12 | app = Celery('config') 13 | 14 | # Using a string here means the worker doesn't have to serialize 15 | # the configuration object to child processes. 16 | # - namespace='CELERY' means all celery-related configuration keys 17 | # should have a `CELERY_` prefix. 18 | app.config_from_object('django.conf:settings', namespace='CELERY') 19 | 20 | # Load task modules from all registered Django apps. 21 | app.autodiscover_tasks() 22 | 23 | else: 24 | print(' ') 25 | print('Celery Configuration ERROR: ') 26 | print(' > "DJANGO_SETTINGS_MODULE" not set in environment (value in manage.py)') 27 | print(' Hint: export DJANGO_SETTINGS_MODULE=project.settings ') 28 | print(' ') -------------------------------------------------------------------------------- /apps/pages/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.9 on 2025-04-29 04:09 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [] 11 | 12 | operations = [ 13 | migrations.CreateModel( 14 | name="FileInfo", 15 | fields=[ 16 | ( 17 | "id", 18 | models.BigAutoField( 19 | auto_created=True, 20 | primary_key=True, 21 | serialize=False, 22 | verbose_name="ID", 23 | ), 24 | ), 25 | ("path", models.URLField()), 26 | ("info", models.CharField(max_length=255)), 27 | ], 28 | ), 29 | migrations.CreateModel( 30 | name="Product", 31 | fields=[ 32 | ("id", models.AutoField(primary_key=True, serialize=False)), 33 | ("name", models.CharField(max_length=100)), 34 | ("info", models.CharField(default="", max_length=100)), 35 | ("price", models.IntegerField(blank=True, null=True)), 36 | ], 37 | ), 38 | ] 39 | -------------------------------------------------------------------------------- /apps/pages/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/pages/migrations/__init__.py -------------------------------------------------------------------------------- /apps/pages/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | 5 | class FileInfo(models.Model): 6 | path = models.URLField() 7 | info = models.CharField(max_length=255) 8 | 9 | def __str__(self): 10 | return self.path 11 | 12 | class Product(models.Model): 13 | id = models.AutoField(primary_key=True) 14 | name = models.CharField(max_length = 100) 15 | info = models.CharField(max_length = 100, default = '') 16 | price = models.IntegerField(blank=True, null=True) 17 | 18 | def __str__(self): 19 | return self.name 20 | -------------------------------------------------------------------------------- /apps/pages/signals.py: -------------------------------------------------------------------------------- 1 | from django.contrib.auth.models import User 2 | from apps.users.models import Profile 3 | from django.db.models.signals import post_save 4 | from django.dispatch import receiver 5 | 6 | @receiver(post_save, sender=User) 7 | def create_profile(sender, instance, created, **kwargs): 8 | if created: 9 | profile = Profile.objects.create(user=instance) 10 | if instance.is_superuser: 11 | profile.role = "admin" 12 | profile.save() 13 | -------------------------------------------------------------------------------- /apps/pages/templatetags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/pages/templatetags/__init__.py -------------------------------------------------------------------------------- /apps/pages/templatetags/file_extension.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | import os 3 | from urllib.parse import quote 4 | 5 | register = template.Library() 6 | 7 | @register.filter 8 | def file_extension(value): 9 | _, extension = os.path.splitext(value) 10 | return extension.lower() 11 | 12 | 13 | @register.filter 14 | def encoded_file_path(path): 15 | return path.replace('/', '%slash%') 16 | 17 | @register.filter 18 | def encoded_path(path): 19 | return path.replace('\\', '/') -------------------------------------------------------------------------------- /apps/pages/templatetags/info_value.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | from apps.pages.models import FileInfo 3 | 4 | register = template.Library() 5 | 6 | @register.filter 7 | def info_value(path): 8 | file_info = FileInfo.objects.filter(path=path) 9 | if file_info.exists(): 10 | return file_info.first().info 11 | else: 12 | return "" 13 | -------------------------------------------------------------------------------- /apps/pages/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/pages/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | urlpatterns = [ 6 | path("", views.index, name="index"), 7 | path("starter/", views.starter, name="starter"), 8 | ] 9 | -------------------------------------------------------------------------------- /apps/pages/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | from django.contrib.auth.decorators import login_required 3 | 4 | from .models import * 5 | 6 | def index(request): 7 | 8 | context = { 9 | 'segment': 'dashboard', 10 | } 11 | return render(request, "dashboard/index.html", context) 12 | 13 | @login_required(login_url='/users/signin/') 14 | def starter(request): 15 | 16 | context = {} 17 | return render(request, "pages/starter.html", context) 18 | -------------------------------------------------------------------------------- /apps/tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/tasks/__init__.py -------------------------------------------------------------------------------- /apps/tasks/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/tasks/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class TasksConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.tasks" 7 | -------------------------------------------------------------------------------- /apps/tasks/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/tasks/migrations/__init__.py -------------------------------------------------------------------------------- /apps/tasks/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /apps/tasks/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/tasks/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | urlpatterns = [ 6 | # Celery 7 | path('', views.tasks, name="tasks"), 8 | path('tasks/run/' , views.run_task, name="run-task" ), 9 | path('tasks/cancel/' , views.cancel_task, name="cancel-task" ), 10 | path('tasks/output/' , views.task_output, name="task-output" ), 11 | path('tasks/log/' , views.task_log, name="task-log" ), 12 | path('download-log-file//', views.download_log_file, name='download_log_file'), 13 | ] -------------------------------------------------------------------------------- /apps/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/users/__init__.py -------------------------------------------------------------------------------- /apps/users/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from apps.users.models import Profile 3 | 4 | # Register your models here. 5 | 6 | 7 | admin.site.register(Profile) -------------------------------------------------------------------------------- /apps/users/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class UsersConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.users" 7 | -------------------------------------------------------------------------------- /apps/users/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/apps/users/migrations/__init__.py -------------------------------------------------------------------------------- /apps/users/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.contrib.auth.models import User 3 | 4 | # Create your models here. 5 | 6 | 7 | ROLE_CHOICES = ( 8 | ('admin' , 'Admin'), 9 | ('user' , 'User'), 10 | ) 11 | class Profile(models.Model): 12 | user = models.OneToOneField(User, on_delete=models.CASCADE) 13 | role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='user') 14 | full_name = models.CharField(max_length=255, null=True, blank=True) 15 | country = models.CharField(max_length=255, null=True, blank=True) 16 | city = models.CharField(max_length=255, null=True, blank=True) 17 | zip_code = models.CharField(max_length=255, null=True, blank=True) 18 | address = models.CharField(max_length=255, null=True, blank=True) 19 | phone = models.CharField(max_length=255, null=True, blank=True) 20 | avatar = models.ImageField(upload_to='avatar', null=True, blank=True) 21 | 22 | def __str__(self): 23 | return self.user.username -------------------------------------------------------------------------------- /apps/users/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/users/utils.py: -------------------------------------------------------------------------------- 1 | def user_filter(request): 2 | filter_string = {} 3 | filter_mappings = { 4 | 'search': 'username__icontains' 5 | } 6 | for key in request.GET: 7 | if request.GET.get(key) and key != 'page': 8 | filter_string[filter_mappings[key]] = request.GET.get(key) 9 | 10 | return filter_string -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # exit on error 3 | set -o errexit 4 | 5 | # Install Modules, Webpack and Tailwind set up 6 | yarn 7 | yarn run build 8 | npx tailwindcss -i ./static/assets/style.css -o ./static/dist/css/output.css 9 | 10 | # Install modules 11 | python -m pip install --upgrade pip 12 | pip install -r requirements.txt 13 | 14 | # Collect Static 15 | python manage.py collectstatic --no-input 16 | 17 | # Migrate DB (Skipped for DEMO) 18 | # python manage.py makemigrations 19 | # python manage.py migrate 20 | -------------------------------------------------------------------------------- /cli/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) App-Generator.dev | AppSeed.us 4 | """ 5 | 6 | from .common import * 7 | from .h_shell import * 8 | from .h_code_parser import * 9 | from .h_git import * 10 | from .h_util import * 11 | from .h_files import * 12 | from .h_django import * 13 | from .h_django_common import * 14 | from .h_django_deps import * 15 | from .h_django_env import * 16 | from .h_django_urls import * 17 | from .h_django_settings import * 18 | from .h_ai_claude import * 19 | 20 | -------------------------------------------------------------------------------- /cli/h_util.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) App-Generator.dev | AppSeed.us 4 | """ 5 | 6 | import random, string 7 | from datetime import datetime 8 | 9 | from .common import * 10 | 11 | def h_random(aLen=6): 12 | letters = string.ascii_letters 13 | digits = string.digits 14 | chars = '_<>,.+' 15 | return ''.join(random.choices( letters + digits + chars, k=aLen)) 16 | 17 | def h_random_ascii(aLen=6): 18 | letters = string.ascii_letters 19 | digits = string.digits 20 | return ''.join(random.choices( letters + digits, k=aLen)) 21 | 22 | def h_ts(): 23 | return datetime.now().strftime("%Y-%m-%d-%H-%M-%S") 24 | 25 | def h_list_to_str(aList, aSep=COMMON.CSV_SEP): 26 | return aSep.join(aList) 27 | -------------------------------------------------------------------------------- /cli/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/cli/migrations/__init__.py -------------------------------------------------------------------------------- /config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/config/__init__.py -------------------------------------------------------------------------------- /config/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for core project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /config/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for config project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/db.sqlite3 -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | services: 3 | appseed-app: 4 | container_name: appseed-app 5 | restart: always 6 | build: 7 | context: . 8 | networks: 9 | - db_network 10 | - web_network 11 | volumes: 12 | - ./db.sqlite3:/db.sqlite3 13 | nginx: 14 | container_name: nginx 15 | restart: always 16 | image: "nginx:latest" 17 | ports: 18 | - "5085:5085" 19 | volumes: 20 | - ./nginx:/etc/nginx/conf.d 21 | networks: 22 | - web_network 23 | depends_on: 24 | - appseed-app 25 | redis: 26 | image: redis:7.0.12 27 | container_name: redis 28 | command: [ "redis-server", "--port", "6379", "--slave-read-only", "no" ] 29 | restart: always 30 | ports: 31 | - 6379:6379 32 | networks: 33 | - db_network 34 | celery: 35 | container_name: celery 36 | restart: always 37 | build: 38 | context: . 39 | networks: 40 | - db_network 41 | environment: 42 | DJANGO_SETTINGS_MODULE: "config.settings" 43 | command: "celery -A home worker -l info -B" 44 | depends_on: 45 | - appseed-app 46 | networks: 47 | db_network: 48 | driver: bridge 49 | web_network: 50 | driver: bridge 51 | -------------------------------------------------------------------------------- /docs/multilanguage.md: -------------------------------------------------------------------------------- 1 | ## Multilanguage 2 | 3 | - Multilanguage for English, German and Italian 4 | 5 | > How to use it 6 | - Currently it only works for http://127.0.0.1:8000/i18n/ this page. 7 | - Load `i18n` tag in the template 8 | ```bash 9 | {% load i18n %} 10 | ``` 11 | - Wrap the translatable content with `{% trans "" %}` tag 12 | ```bash 13 | {% trans "CONTENT_NAME" %} 14 | ``` 15 | - Make and compile messages 16 | ```bash 17 | django-admin makemessages -l de # for a specific language 18 | django-admin compilemessages 19 | ``` 20 | - You will notice that in root directory inside the `local` directory `django.po` file is created. Add your translated content inside the `msgstr` 21 | ```bash 22 | msgid "CONTENT_NAME" 23 | msgstr "" 24 | ``` 25 | 26 | > Codebase: related app, model, template, js 27 | 28 | - Multilanguage items are rendered from 29 | - Templates `templates/pages/i18n.html` 30 | -------------------------------------------------------------------------------- /docs/oauth.md: -------------------------------------------------------------------------------- 1 | ## OAuth 2 | 3 | - Google and GitHub login using [django-allauth](https://docs.allauth.org/en/latest/installation/quickstart.html) library. 4 | 5 | > How to use it 6 | 7 | - Create a `.env` file in the root directory and add the following credentials 8 | ```bash 9 | GOOGLE_CLIENT_ID= 10 | GOOGLE_SECRET_KEY= 11 | 12 | GITHUB_CLIENT_ID= 13 | GITHUB_SECRET_KEY= 14 | ``` 15 | 16 | > Codebase: related app, model, template, js 17 | 18 | - The oath is rendered from 19 | - Template `templates/authentication/sign-in.html` 20 | -------------------------------------------------------------------------------- /env.sample: -------------------------------------------------------------------------------- 1 | DEBUG=False 2 | 3 | SECRET_KEY= 4 | 5 | # DB_ENGINE=mysql 6 | # DB_HOST=localhost 7 | # DB_NAME=appseed_db 8 | # DB_USERNAME=appseed_db_usr 9 | # DB_PASS=pass 10 | # DB_PORT=3306 11 | 12 | EMAIL_HOST=smtp.gmail.com 13 | EMAIL_PORT=587 14 | EMAIL_USE_TLS=True 15 | EMAIL_HOST_USER= 16 | EMAIL_HOST_PASSWORD= 17 | 18 | # Uncomment for local Redis 19 | #CELERY_BROKER_URL=redis://localhost:6379 20 | -------------------------------------------------------------------------------- /gunicorn-cfg.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | bind = '0.0.0.0:5005' 7 | workers = 1 8 | accesslog = '-' 9 | loglevel = 'debug' 10 | capture_output = True 11 | enable_stdio_inheritance = True 12 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == "__main__": 22 | main() 23 | -------------------------------------------------------------------------------- /media/avatar/logo-appseed-100x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/media/avatar/logo-appseed-100x.png -------------------------------------------------------------------------------- /media/mapper.json: -------------------------------------------------------------------------------- 1 | { 2 | "version":"v1", 3 | "input": { 4 | "Sales.csv": "" 5 | }, 6 | "normalize_col_name": { 7 | "%":"Perc", 8 | "$":"USD", 9 | "-":"_", 10 | " ":"_", 11 | "/":"_", 12 | "(":"", 13 | ")":"", 14 | "'":"", 15 | ",":"_", 16 | "?":"", 17 | "_":"" 18 | }, 19 | "col_name":{ 20 | "Sales_BuyerName":"BuyerName" 21 | }, 22 | "col_type":{ 23 | "Sales_PurchaseDateX":"int" 24 | }, 25 | "col_transformers":{ 26 | "Sales_PurchaseDateX":"timestamp_%Y-%m-%d" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /nginx/appseed-app.conf: -------------------------------------------------------------------------------- 1 | upstream webapp { 2 | server appseed-app:5005; 3 | } 4 | 5 | server { 6 | listen 5085; 7 | server_name localhost; 8 | 9 | location / { 10 | proxy_pass http://webapp; 11 | proxy_set_header Host $host; 12 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rocket-django", 3 | "version": "1.0.0", 4 | "description": "SaaS Django Starter styled with Tailwind/Flowbite", 5 | "main": "index.js", 6 | "directories": { 7 | "doc": "docs" 8 | }, 9 | "scripts": { 10 | "dev": "webpack --mode development --watch", 11 | "build": "webpack --mode=production", 12 | "test": "echo \"Error: no test specified\" && exit 1" 13 | }, 14 | "keywords": [], 15 | "author": "", 16 | "license": "ISC", 17 | "devDependencies": { 18 | "webpack": "^5.88.2", 19 | "webpack-cli": "^5.1.4" 20 | }, 21 | "dependencies": { 22 | "apexcharts": "^3.48.0", 23 | "autoprefixer": "^10.4.19", 24 | "css-loader": "^7.1.1", 25 | "css-minimizer-webpack-plugin": "^6.0.0", 26 | "flowbite": "^2.3.0", 27 | "mini-css-extract-plugin": "^2.8.1", 28 | "postcss-loader": "^8.1.1", 29 | "tailwindcss": "^3.4.3" 30 | } 31 | } -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | // postcss.config.js 2 | module.exports = { 3 | plugins: { 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | } 7 | } -------------------------------------------------------------------------------- /render.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | - type: web 3 | name: rocket-django-latest 4 | plan: free 5 | env: python 6 | region: frankfurt # region should be same as your database region. 7 | buildCommand: "./build.sh" 8 | startCommand: "gunicorn config.wsgi:application" 9 | envVars: 10 | - key: DEBUG 11 | value: False 12 | - key: SECRET_KEY 13 | generateValue: true 14 | - key: WEB_CONCURRENCY 15 | value: 4 16 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # Core 2 | django==4.2.9 3 | python-dotenv==1.0.1 4 | str2bool==1.1 5 | 6 | # Utils 7 | django-debug-toolbar==4.2.0 8 | Pillow==11.1.0 9 | 10 | # Services 11 | celery==5.3.4 12 | redis==5.0.1 13 | hiredis==3.1.0 14 | 15 | # Tooling 16 | django-celery-results==2.5.1 17 | djangorestframework==3.14.0 18 | django-api-generator==1.0.17 19 | drf-spectacular==0.26.5 20 | 21 | # Deployment 22 | whitenoise==6.5.0 23 | gunicorn==21.2.0 24 | 25 | astor==0.8.1 26 | django-jazzmin==3.0.1 27 | 28 | # AI 29 | anthropic==0.34.2 30 | 31 | # DB Layer 32 | # psycopg2-binary==3.1.12 33 | # mysqlclient==2.2.0 34 | -------------------------------------------------------------------------------- /static/assets/constants.js: -------------------------------------------------------------------------------- 1 | 2 | const DARK_CLASS_NAME = 'dark' 3 | const DARK_COLOR_THEME = 'dark' 4 | const LIGHT_CLASS_NAME = 'light' 5 | const LIGHT_COLOR_THEME = 'light' 6 | const HIDDEN_CLASS_NAME = 'hidden' 7 | 8 | module.exports = { 9 | DARK_CLASS_NAME, 10 | DARK_COLOR_THEME, 11 | LIGHT_CLASS_NAME, 12 | LIGHT_COLOR_THEME, 13 | HIDDEN_CLASS_NAME, 14 | } -------------------------------------------------------------------------------- /static/assets/index.js: -------------------------------------------------------------------------------- 1 | import './style.css'; 2 | import 'flowbite/dist/flowbite.js'; 3 | import './sidebar'; 4 | import './charts'; 5 | import './dark-mode'; 6 | 7 | // Have the courage to follow your heart and intuition. 8 | -------------------------------------------------------------------------------- /static/assets/sidebar.js: -------------------------------------------------------------------------------- 1 | const sidebar = document.getElementById('sidebar'); 2 | 3 | if (sidebar) { 4 | const toggleSidebarMobile = (sidebar, sidebarBackdrop, toggleSidebarMobileHamburger, toggleSidebarMobileClose) => { 5 | sidebar.classList.toggle('hidden'); 6 | sidebarBackdrop.classList.toggle('hidden'); 7 | toggleSidebarMobileHamburger.classList.toggle('hidden'); 8 | toggleSidebarMobileClose.classList.toggle('hidden'); 9 | } 10 | 11 | const toggleSidebarMobileEl = document.getElementById('toggleSidebarMobile'); 12 | const sidebarBackdrop = document.getElementById('sidebarBackdrop'); 13 | const toggleSidebarMobileHamburger = document.getElementById('toggleSidebarMobileHamburger'); 14 | const toggleSidebarMobileClose = document.getElementById('toggleSidebarMobileClose'); 15 | const toggleSidebarMobileSearch = document.getElementById('toggleSidebarMobileSearch'); 16 | 17 | toggleSidebarMobileSearch.addEventListener('click', () => { 18 | toggleSidebarMobile(sidebar, sidebarBackdrop, toggleSidebarMobileHamburger, toggleSidebarMobileClose); 19 | }); 20 | 21 | toggleSidebarMobileEl.addEventListener('click', () => { 22 | toggleSidebarMobile(sidebar, sidebarBackdrop, toggleSidebarMobileHamburger, toggleSidebarMobileClose); 23 | }); 24 | 25 | sidebarBackdrop.addEventListener('click', () => { 26 | toggleSidebarMobile(sidebar, sidebarBackdrop, toggleSidebarMobileHamburger, toggleSidebarMobileClose); 27 | }); 28 | } 29 | -------------------------------------------------------------------------------- /static/dist/images/authentication/create-account.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/authentication/create-account.jpg -------------------------------------------------------------------------------- /static/dist/images/authentication/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/authentication/login.jpg -------------------------------------------------------------------------------- /static/dist/images/authentication/reset-password.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/authentication/reset-password.jpg -------------------------------------------------------------------------------- /static/dist/images/blog/image-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/blog/image-1.jpg -------------------------------------------------------------------------------- /static/dist/images/blog/image-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/blog/image-2.jpg -------------------------------------------------------------------------------- /static/dist/images/blog/image-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/blog/image-3.jpg -------------------------------------------------------------------------------- /static/dist/images/blog/image-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/blog/image-4.jpg -------------------------------------------------------------------------------- /static/dist/images/blog/image-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/blog/image-7.jpg -------------------------------------------------------------------------------- /static/dist/images/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/csv.png -------------------------------------------------------------------------------- /static/dist/images/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/export.png -------------------------------------------------------------------------------- /static/dist/images/feed/image-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/feed/image-1.jpg -------------------------------------------------------------------------------- /static/dist/images/feed/image-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/feed/image-2.jpg -------------------------------------------------------------------------------- /static/dist/images/flags/ad.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/dist/images/flags/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/an.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/dist/images/flags/ar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/aw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /static/dist/images/flags/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/bh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/bn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/bo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/br.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /static/dist/images/flags/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /static/dist/images/flags/bt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/by.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/bz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/ca.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/dist/images/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/cf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/cm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /static/dist/images/flags/cn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/csa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/cu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/cv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/ec.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/dist/images/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/es.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /static/dist/images/flags/et.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/fm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/gb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/dist/images/flags/ge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/dist/images/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/gq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/gr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/gt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/gw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/il.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/jo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/dist/images/flags/kg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/kh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/kn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/dist/images/flags/kp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /static/dist/images/flags/li.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/lr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/ls.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/md.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/mm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/mn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /static/dist/images/flags/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/mw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/mx.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/my.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/mz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/dist/images/flags/na.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ni.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/om.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/pa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/pe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/pk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/pt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/dist/images/flags/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/py.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/dist/images/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/rw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /static/dist/images/flags/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /static/dist/images/flags/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/si.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /static/dist/images/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/sm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/st.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/dist/images/flags/sv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /static/dist/images/flags/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/tg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/tl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/dist/images/flags/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/tw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/uy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/ve.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /static/dist/images/flags/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /static/dist/images/flags/ww.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /static/dist/images/flags/za.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /static/dist/images/kanban/task-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/kanban/task-1.jpg -------------------------------------------------------------------------------- /static/dist/images/kanban/task-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/kanban/task-2.jpg -------------------------------------------------------------------------------- /static/dist/images/kanban/task-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/kanban/task-3.jpg -------------------------------------------------------------------------------- /static/dist/images/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/og-image.png -------------------------------------------------------------------------------- /static/dist/images/products/apple-imac-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/apple-imac-1.png -------------------------------------------------------------------------------- /static/dist/images/products/apple-imac-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/apple-imac-2.png -------------------------------------------------------------------------------- /static/dist/images/products/apple-imac-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/apple-imac-3.png -------------------------------------------------------------------------------- /static/dist/images/products/imac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/imac.png -------------------------------------------------------------------------------- /static/dist/images/products/ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/ipad.png -------------------------------------------------------------------------------- /static/dist/images/products/iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/iphone.png -------------------------------------------------------------------------------- /static/dist/images/products/watch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/products/watch.png -------------------------------------------------------------------------------- /static/dist/images/users/bonnie-green-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/bonnie-green-2x.png -------------------------------------------------------------------------------- /static/dist/images/users/bonnie-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/bonnie-green.png -------------------------------------------------------------------------------- /static/dist/images/users/helene-engels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/helene-engels.png -------------------------------------------------------------------------------- /static/dist/images/users/jese-leos-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/jese-leos-2x.png -------------------------------------------------------------------------------- /static/dist/images/users/jese-leos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/jese-leos.png -------------------------------------------------------------------------------- /static/dist/images/users/joseph-mcfall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/joseph-mcfall.png -------------------------------------------------------------------------------- /static/dist/images/users/lana-byrd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/lana-byrd.png -------------------------------------------------------------------------------- /static/dist/images/users/leslie-livingston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/leslie-livingston.png -------------------------------------------------------------------------------- /static/dist/images/users/michael-gough.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/michael-gough.png -------------------------------------------------------------------------------- /static/dist/images/users/neil-sims.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/neil-sims.png -------------------------------------------------------------------------------- /static/dist/images/users/robert-brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/robert-brown.png -------------------------------------------------------------------------------- /static/dist/images/users/roberta-casas-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/roberta-casas-2x.png -------------------------------------------------------------------------------- /static/dist/images/users/roberta-casas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/roberta-casas.png -------------------------------------------------------------------------------- /static/dist/images/users/thomas-lean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/images/users/thomas-lean.png -------------------------------------------------------------------------------- /static/dist/img/default-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/app-generator/rocket-django/74d0b5df75864a988a828c3f587e190c362df0da/static/dist/img/default-user.png -------------------------------------------------------------------------------- /staticfiles/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | './templates/**/*.html', 4 | './static/**/*.js', 5 | './node_modules/flowbite/**/*.js' 6 | ], 7 | safelist: [ 8 | 'w-64', 9 | 'w-1/2', 10 | 'rounded-l-lg', 11 | 'rounded-r-lg', 12 | 'bg-gray-200', 13 | 'grid-cols-4', 14 | 'grid-cols-7', 15 | 'h-6', 16 | 'leading-6', 17 | 'h-9', 18 | 'leading-9', 19 | 'shadow-lg', 20 | 'bg-opacity-50', 21 | 'dark:bg-opacity-80' 22 | ], 23 | darkMode: "class", 24 | theme: { 25 | extend: { 26 | colors: { 27 | primary: { "50": "#eff6ff", "100": "#dbeafe", "200": "#bfdbfe", "300": "#93c5fd", "400": "#60a5fa", "500": "#3b82f6", "600": "#2563eb", "700": "#1d4ed8", "800": "#1e40af", "900": "#1e3a8a" } 28 | }, 29 | fontFamily: { 30 | 'sans': ['Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', 'sans-serif', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'], 31 | 'body': ['Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', 'sans-serif', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'], 32 | 'mono': ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace'] 33 | }, 34 | transitionProperty: { 35 | 'width': 'width' 36 | }, 37 | textDecoration: ['active'], 38 | minWidth: { 39 | 'kanban': '28rem' 40 | }, 41 | }, 42 | }, 43 | 44 | plugins: [ 45 | require('flowbite/plugin') 46 | ], 47 | } 48 | -------------------------------------------------------------------------------- /tasks_scripts/check-db-health.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | import os, sys 7 | 8 | def main(argv): 9 | 10 | try: 11 | 12 | print(' EXEC -> ' + os.path.basename(__file__)) 13 | 14 | for i in range(1, len(argv)): 15 | print('argument:', i, 'value:', argv[i]) 16 | 17 | # Unix ErrCode 18 | exit(0) 19 | 20 | except Exception as e: 21 | 22 | print( 'Err: ' + str( e ) ) 23 | exit(1) 24 | 25 | if __name__ == '__main__': 26 | main(sys.argv) 27 | -------------------------------------------------------------------------------- /tasks_scripts/check-disk-free.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | import os, sys 7 | 8 | def main(argv): 9 | 10 | try: 11 | 12 | print(' EXEC -> ' + os.path.basename(__file__)) 13 | 14 | # Unix ErrCode 15 | exit(0) 16 | 17 | except Exception as e: 18 | 19 | print( 'Err: ' + str( e ) ) 20 | exit(1) 21 | 22 | if __name__ == '__main__': 23 | main(sys.argv) 24 | -------------------------------------------------------------------------------- /tasks_scripts/clean-database.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | import os, sys 7 | 8 | def main(argv): 9 | 10 | try: 11 | 12 | print(' EXEC -> ' + os.path.basename(__file__)) 13 | 14 | # Unix ErrCode 15 | exit(0) 16 | 17 | except Exception as e: 18 | 19 | print( 'Err: ' + str( e ) ) 20 | exit(1) 21 | 22 | if __name__ == '__main__': 23 | main(sys.argv) 24 | -------------------------------------------------------------------------------- /templates/authentication/password-change-done.html: -------------------------------------------------------------------------------- 1 | {% extends "layouts/base-auth.html" %} 2 | {% load static %} 3 | 4 | 5 | {% block content %} 6 | 7 |
8 | 9 | FlowBite Logo 10 | Flowbite 11 | 12 | 13 |
14 |

15 | Password Change Done 16 |

17 | Your password has been changed successfully. 18 | Back to dashboard 19 |
20 |
21 | 22 | {% endblock content %} -------------------------------------------------------------------------------- /templates/authentication/password-reset-complete.html: -------------------------------------------------------------------------------- 1 | {% extends "layouts/base-auth.html" %} 2 | {% load static %} 3 | 4 | 5 | {% block content %} 6 | 7 |
8 | 9 | FlowBite Logo 10 | Flowbite 11 | 12 | 13 |
14 |

15 | Password Reset Done 16 |

17 | Your password has been reset successfully. 18 | Back to login 19 |
20 |
21 | 22 | {% endblock content %} -------------------------------------------------------------------------------- /templates/authentication/password-reset-done.html: -------------------------------------------------------------------------------- 1 | {% extends "layouts/base-auth.html" %} 2 | {% load static %} 3 | 4 | 5 | {% block content %} 6 | 7 |
8 | 9 | FlowBite Logo 10 | Flowbite 11 | 12 | 13 |
14 |

15 | Email Sent 16 |

17 | An email has been sent to your email address. Please click the link and reset your password. 18 | Back to login 19 |
20 |
21 | 22 | {% endblock content %} -------------------------------------------------------------------------------- /templates/dyn_dt/items-table.html: -------------------------------------------------------------------------------- 1 | {% load get_attribute %} 2 | 3 | 4 | 5 | 6 | {% for field_name in db_field_names %} 7 | 12 | {% endfor %} 13 | 14 | 15 | 16 | 17 | {% for item in items %} 18 | 19 | {% for field_name in db_field_names %} 20 | 23 | {% endfor %} 24 | 25 | {% endfor %} 26 | 27 | 28 |
8 |
9 | {{ field_name }} 10 |
11 |
21 | {{ item|getattribute:field_name }} 22 |
-------------------------------------------------------------------------------- /templates/includes/scripts.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /templates/layouts/base.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% include "includes/head.html" %} 9 | {% block extrastyle %}{% endblock extrastyle %} 10 | 11 | 12 | 13 | 14 | 15 | {% block messages %}{% endblock messages %} 16 | 17 | {% block navigation %} 18 | {% include "includes/navigation.html" %} 19 | {% endblock navigation %} 20 | 21 |
22 | 23 | {% block sidebar %} 24 | {% include "includes/sidebar.html" %} 25 | {% endblock sidebar %} 26 | 27 | 28 | 29 |
30 | {% block content %}{% endblock content %} 31 | {% block footer %} 32 | {% include "includes/footer.html" %} 33 | {% endblock footer %} 34 |

35 | © Flowbite - Coded by App Generator 36 |

37 | 38 |
39 |
40 | 41 | 42 | {% include "includes/scripts.html" %} 43 | {% block extra_js %}{% endblock extra_js %} 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 2 | const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); 3 | const { SourceMapDevToolPlugin } = require("webpack"); 4 | const path = require('path'); 5 | 6 | module.exports = { 7 | entry: './static/assets/index.js', // path to our input file 8 | output: { 9 | filename: '[name].bundle.js', // output bundle file name 10 | path: path.resolve(__dirname, './static/dist'), // path to our Django static directory 11 | }, 12 | 13 | module: { 14 | rules: [ 15 | { 16 | test: /\.css$/, 17 | use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'], 18 | }, 19 | { 20 | test: /\.(png|jpg|gif|svg)$/, 21 | loader: 'file-loader', 22 | options: { 23 | outputPath: 'static/images/' 24 | } 25 | }, 26 | { 27 | test: /\.(ttf|eot|svg|gif|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/, 28 | use: [{ 29 | loader: 'file-loader', 30 | }] 31 | }, 32 | ], 33 | }, 34 | resolve: { 35 | extensions: ['', '.js', '.jsx', '.css'] 36 | }, 37 | plugins: [ 38 | new MiniCssExtractPlugin(), 39 | new SourceMapDevToolPlugin({ 40 | filename: "[file].map" 41 | }) 42 | ], 43 | optimization: { 44 | minimizer: [ 45 | new CssMinimizerPlugin() 46 | ] 47 | }, 48 | }; --------------------------------------------------------------------------------