├── src ├── __init__.py ├── apps │ ├── __init__.py │ ├── account │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ ├── services.py │ │ │ └── adapters.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── templates │ │ │ └── account │ │ │ │ ├── signup.html │ │ │ │ └── reset_password.html │ │ └── apps.py │ ├── cms │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ ├── filters.py │ │ │ ├── serializers.py │ │ │ └── views.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0002_initial.py │ │ ├── apps.py │ │ ├── admin.py │ │ └── models.py │ ├── common │ │ ├── __init__.py │ │ ├── management │ │ │ ├── __init__.py │ │ │ ├── commands │ │ │ │ ├── __init__.py │ │ │ │ └── startapp.py │ │ │ └── app_template │ │ │ │ ├── __init__.py-tpl │ │ │ │ ├── v1 │ │ │ │ ├── __init__.py-tpl │ │ │ │ ├── nested_serializers.py-tpl │ │ │ │ ├── filters.py-tpl │ │ │ │ ├── permissions.py-tpl │ │ │ │ ├── urls.py-tpl │ │ │ │ ├── serializers.py-tpl │ │ │ │ ├── tests.py-tpl │ │ │ │ └── views.py-tpl │ │ │ │ ├── migrations │ │ │ │ └── __init__.py-tpl │ │ │ │ ├── tasks.py-tpl │ │ │ │ ├── signals.py-tpl │ │ │ │ ├── apps.py-tpl │ │ │ │ ├── admin.py-tpl │ │ │ │ └── models.py-tpl │ │ ├── apps.py │ │ └── caches.py │ ├── device │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ ├── views.py │ │ │ └── serializers.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0001_initial.py │ │ ├── apps.py │ │ ├── utils.py │ │ ├── models.py │ │ └── admin.py │ ├── feed │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── fields.py │ │ │ ├── paginations.py │ │ │ ├── urls.py │ │ │ └── filters.py │ │ ├── migrations │ │ │ └── __init__.py │ │ └── apps.py │ ├── file │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ ├── filters.py │ │ │ ├── tasks.py │ │ │ ├── utils.py │ │ │ ├── views.py │ │ │ └── serializers.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ ├── 0002_initial.py │ │ │ └── 0001_initial.py │ │ ├── apps.py │ │ └── models.py │ ├── game │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ ├── serializers.py │ │ │ └── views.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0001_initial.py │ │ ├── apps.py │ │ └── models.py │ ├── user │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── urls.py │ │ │ └── serializers.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── apps.py │ │ ├── signals.py │ │ ├── forms.py │ │ └── admin.py │ ├── agreement │ │ ├── __init__.py │ │ ├── v1 │ │ │ ├── __init__.py │ │ │ ├── paginations.py │ │ │ ├── tasks.py │ │ │ ├── urls.py │ │ │ ├── views.py │ │ │ └── serializers.py │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0002_initial.py │ │ ├── apps.py │ │ ├── admin.py │ │ └── models.py │ └── short_url │ │ ├── __init__.py │ │ ├── v1 │ │ ├── __init__.py │ │ ├── urls.py │ │ ├── utils.py │ │ ├── views.py │ │ └── serializers.py │ │ ├── migrations │ │ ├── __init__.py │ │ └── 0001_initial.py │ │ ├── apps.py │ │ ├── models.py │ │ ├── templates │ │ └── short_url │ │ │ └── redirect.html │ │ └── admin.py ├── base │ ├── __init__.py │ ├── enums │ │ ├── __init__.py │ │ └── base.py │ ├── fields │ │ ├── __init__.py │ │ └── encrypt.py │ └── utils │ │ ├── __init__.py │ │ └── aes_chipher.py ├── tests │ ├── __init__.py │ └── locust │ │ ├── __init__.py │ │ └── locustfile.py ├── conf │ ├── urls │ │ ├── __init__.py │ │ ├── url.py │ │ ├── admin.py │ │ └── api.py │ ├── settings │ │ ├── __init__.py │ │ ├── prod.py │ │ ├── stage.py │ │ ├── local.py │ │ └── develop.py │ ├── __init__.py │ ├── wsgi.py │ ├── hosts.py │ ├── celery.py │ ├── firebase_config.py │ ├── exceptions.py │ ├── filters.py │ ├── utils.py │ ├── routers.py │ ├── caches.py │ └── authentications.py ├── static │ └── favicon.ico ├── secrets │ └── serviceAccountKey.json ├── .env.example ├── manage.py ├── Makefile └── templates │ ├── otp │ ├── invalid_link.html │ ├── otp_already_set.html │ ├── error.html │ └── setup_otp.html │ └── admin │ └── login.html ├── docs ├── files │ ├── backoffice_login.png │ └── backoffice_dashboard.png ├── ko │ └── deploy │ │ └── docker-setup.md └── en │ └── deploy │ └── docker-setup.md ├── .gitignore ├── Dockerfile.celery ├── Dockerfile ├── .pylintrc ├── pyproject.toml └── docker-compose.yml /src/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/base/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/account/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/cms/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/cms/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/device/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/feed/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/feed/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/file/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/file/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/game/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/game/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/user/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/user/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/base/enums/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/base/fields/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/base/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/conf/urls/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/tests/locust/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/account/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/agreement/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/agreement/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/device/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/short_url/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/short_url/v1/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/conf/settings/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/cms/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/device/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/feed/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/file/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/game/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/user/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/account/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/agreement/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/short_url/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/management/app_template/__init__.py-tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/management/app_template/v1/__init__.py-tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/management/app_template/migrations/__init__.py-tpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/apps/common/management/app_template/tasks.py-tpl: -------------------------------------------------------------------------------- 1 | from celery import shared_task 2 | -------------------------------------------------------------------------------- /src/conf/__init__.py: -------------------------------------------------------------------------------- 1 | from .celery import app as celery_app 2 | 3 | __all__ = ("celery_app",) 4 | -------------------------------------------------------------------------------- /src/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lee-lou2/django-boilerplate/HEAD/src/static/favicon.ico -------------------------------------------------------------------------------- /src/apps/account/templates/account/signup.html: -------------------------------------------------------------------------------- 1 |
다음 링크를 클릭하여 이메일을 인증하세요:
2 | 이메일 인증하기 -------------------------------------------------------------------------------- /src/apps/common/management/app_template/v1/nested_serializers.py-tpl: -------------------------------------------------------------------------------- 1 | from rest_framework import serializers 2 | -------------------------------------------------------------------------------- /src/apps/account/templates/account/reset_password.html: -------------------------------------------------------------------------------- 1 |다음 링크를 클릭하여 이메일을 인증하세요:
2 | 이메일 인증하기 -------------------------------------------------------------------------------- /docs/files/backoffice_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lee-lou2/django-boilerplate/HEAD/docs/files/backoffice_login.png -------------------------------------------------------------------------------- /src/apps/cms/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class CMSConfig(AppConfig): 5 | name = "apps.cms" 6 | -------------------------------------------------------------------------------- /docs/files/backoffice_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lee-lou2/django-boilerplate/HEAD/docs/files/backoffice_dashboard.png -------------------------------------------------------------------------------- /src/apps/feed/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class FeedConfig(AppConfig): 5 | name = "apps.feed" 6 | -------------------------------------------------------------------------------- /src/apps/file/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class FileConfig(AppConfig): 5 | name = "apps.file" 6 | -------------------------------------------------------------------------------- /src/apps/game/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class GameConfig(AppConfig): 5 | name = "apps.game" 6 | -------------------------------------------------------------------------------- /src/apps/account/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AccountConfig(AppConfig): 5 | name = "apps.account" 6 | -------------------------------------------------------------------------------- /src/apps/common/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class CommonConfig(AppConfig): 5 | name = "apps.common" 6 | -------------------------------------------------------------------------------- /src/apps/short_url/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class ShortUrlConfig(AppConfig): 5 | name = "apps.short_url" 6 | -------------------------------------------------------------------------------- /src/apps/agreement/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AgreementConfig(AppConfig): 5 | name = "apps.agreement" 6 | -------------------------------------------------------------------------------- /src/apps/common/management/app_template/signals.py-tpl: -------------------------------------------------------------------------------- 1 | from django.db.models.signals import post_save 2 | from django.dispatch import receiver 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | src/staticfiles 3 | .idea 4 | *.pyc 5 | src/logs 6 | .venv 7 | 8 | .env 9 | 10 | db.sqlite3 11 | 12 | .kiro 13 | -------------------------------------------------------------------------------- /src/apps/user/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class UserConfig(AppConfig): 5 | name = "apps.user" 6 | 7 | def ready(self): 8 | import apps.user.signals 9 | -------------------------------------------------------------------------------- /src/conf/wsgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from django.core.wsgi import get_wsgi_application 4 | 5 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "conf.settings.local") 6 | 7 | application = get_wsgi_application() 8 | -------------------------------------------------------------------------------- /src/apps/feed/v1/fields.py: -------------------------------------------------------------------------------- 1 | class CurrentFeedDefault: 2 | """현재 조회된 피드 설정""" 3 | 4 | requires_context = True 5 | 6 | def __call__(self, serializer_field): 7 | return serializer_field.context["view"].kwargs["feed_pk"] 8 | -------------------------------------------------------------------------------- /src/conf/urls/url.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from apps.short_url.v1.views import ShortUrlRedirectView 4 | 5 | urlpatterns = [ 6 | path("{% translate 'The link you followed is either invalid or has expired. Please contact the administrator.' %}
89 |{% translate 'Your account already has an OTP device configured.' %}
93 |{% translate 'If you need to change it, please contact the administrator.' %}
94 |{% translate 'If the problem persists, please contact:' %}
123 | lee@lou2.kr 124 |{% translate 'Scan the QR code with your authenticator app' %}
118 |{% translate 'Enter the 6-digit code from your app' %}
123 | 124 | 143 | 144 | {% if messages %} 145 | {% for message in messages %} 146 | 147 | {% endfor %} 148 | {% endif %} 149 |