motiejus/e11sync

Unnamed repository; edit this file 'description' to name the repository.
git clone https://git.jakstys.lt/motiejus/e11sync.git
Log | Tree | Refs | LICENSE

commit 7be91dd980962ad3524ee1f7a2300bee9332c4af (tree)
parent 4946aa87cffad60f7dacb50ac5629fe57a14d5e1
Author: Motiejus Jakštys <motiejus@jakstys.lt>
Date:   Sun,  7 Jan 2024 22:48:26 +0200

e11mail -> e11sync

Diffstat:
Dapp/e11mail/asgi.py | 16----------------
Dapp/e11mail/settings.py | 106-------------------------------------------------------------------------------
Dapp/e11mail/urls.py | 24------------------------
Dapp/e11mail/wsgi.py | 16----------------
Rapp/e11mail/__init__.py -> app/e11sync/__init__.py | 0
Aapp/e11sync/asgi.py | 16++++++++++++++++
Aapp/e11sync/settings.py | 106+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapp/e11sync/urls.py | 24++++++++++++++++++++++++
Aapp/e11sync/wsgi.py | 16++++++++++++++++
Mapp/manage.py | 2+-
Mapp/signup/templates/signup/base.html | 4++--
Mapp/signup/templates/signup/index.html | 32++++++++------------------------
12 files changed, 173 insertions(+), 189 deletions(-)

diff --git a/app/e11mail/asgi.py b/app/e11mail/asgi.py @@ -1,16 +0,0 @@ -""" -ASGI config for e11mail project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'e11mail.settings') - -application = get_asgi_application() diff --git a/app/e11mail/settings.py b/app/e11mail/settings.py @@ -1,106 +0,0 @@ -from pathlib import Path - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-$e2!=equ(efm0e%f9&t+xjtz0)$*$@pw%rnjdqcl8f@5o5hw!l' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - -# Application definition - -INSTALLED_APPS = [ - 'compressor', - 'signup.apps.SignupConfig', - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'e11mail.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'e11mail.wsgi.application' - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', - } -} - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_TZ = True - -STATIC_URL = 'static/' - -STATICFILES_FINDERS = [ - "django.contrib.staticfiles.finders.AppDirectoriesFinder", - "compressor.finders.CompressorFinder", -] - -STATIC_ROOT = '/tmp/e11mail-static' - -COMPRESS_PRECOMPILERS = ( - # TODO: --style=compressed + source maps - # https://github.com/django-compressor/django-compressor/issues/438 - ('text/x-scss', 'sass {infile} {outfile}'), -) - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/app/e11mail/urls.py b/app/e11mail/urls.py @@ -1,24 +0,0 @@ -""" -URL configuration for e11mail project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/5.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" - -from django.contrib import admin -from django.urls import include, path - -urlpatterns = [ - path('admin/', admin.site.urls), - path('', include('signup.urls')), -] diff --git a/app/e11mail/wsgi.py b/app/e11mail/wsgi.py @@ -1,16 +0,0 @@ -""" -WSGI config for e11mail project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'e11mail.settings') - -application = get_wsgi_application() diff --git a/app/e11mail/__init__.py b/app/e11sync/__init__.py diff --git a/app/e11sync/asgi.py b/app/e11sync/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for e11sync project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'e11sync.settings') + +application = get_asgi_application() diff --git a/app/e11sync/settings.py b/app/e11sync/settings.py @@ -0,0 +1,106 @@ +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-$e2!=equ(efm0e%f9&t+xjtz0)$*$@pw%rnjdqcl8f@5o5hw!l' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + +# Application definition + +INSTALLED_APPS = [ + 'compressor', + 'signup.apps.SignupConfig', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'e11sync.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'e11sync.wsgi.application' + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + +STATIC_URL = 'static/' + +STATICFILES_FINDERS = [ + "django.contrib.staticfiles.finders.AppDirectoriesFinder", + "compressor.finders.CompressorFinder", +] + +STATIC_ROOT = '/tmp/e11sync-static' + +COMPRESS_PRECOMPILERS = ( + # TODO: --style=compressed + source maps + # https://github.com/django-compressor/django-compressor/issues/438 + ('text/x-scss', 'sass {infile} {outfile}'), +) + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/app/e11sync/urls.py b/app/e11sync/urls.py @@ -0,0 +1,24 @@ +""" +URL configuration for e11sync project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" + +from django.contrib import admin +from django.urls import include, path + +urlpatterns = [ + path('admin/', admin.site.urls), + path('', include('signup.urls')), +] diff --git a/app/e11sync/wsgi.py b/app/e11sync/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for e11sync project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'e11sync.settings') + +application = get_wsgi_application() diff --git a/app/manage.py b/app/manage.py @@ -6,7 +6,7 @@ import sys def main(): """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'e11mail.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'e11sync.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/app/signup/templates/signup/base.html b/app/signup/templates/signup/base.html @@ -3,7 +3,7 @@ <html lang="en"> <head> <meta charset="utf-8"> - <title>{% block "title" %}e11mail.com{% endblock %}</title> + <title>{% block "title" %}e11sync.com{% endblock %}</title> <meta name="viewport" content="width=device-width,initial-scale=1"> {% compress css %} <link rel="stylesheet" type="text/x-scss" href="{% static "signup/style.scss" %}"> @@ -14,7 +14,7 @@ <div> <section id="header"> - <h1 class="brand-title"><a href="{% url "index" %}">e11mail.com</a></h1> + <h1 class="brand-title"><a href="{% url "index" %}">e11sync.com</a></h1> <h2 class="brand-subtitle">Email for Everyone</h2> </section><!-- #header --> diff --git a/app/signup/templates/signup/index.html b/app/signup/templates/signup/index.html @@ -7,42 +7,26 @@ <section class="leftright pure-g"> <article class="pure-u-1 pure-u-md-1-2"> - <h1 id="backup">Effortless and safe backup</h1> + <h1 id="backup">Usage-based pricing</h1> - All files are backed up every few minutes and old copies are stored for - decades. Overwritten an important file by accident? No problem, restore it - with a couple of clicks. Synctech protects against ransomware: even if all - devices get compromised, backups will always work. + Tired of paying per e-mail address? e11sync.com offers unlimited domains + and unlimited addresses. Pay only for the used storage and the emails sent + and received (don't worry, limits are more than enough for fair use). </article> <article class="pure-u-1 pure-u-md-1-2"> <h1 id="opensource">Open-source</h1> - Synctech is powered by <a - href="https://syncthing.net">syncthing</a>, an open-source file - synchronization tool, first released in 2013. - - <p>Just like syncthing, Synctech is open-source, licensed under <a - href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPL-v3</a>. + Entirety of e11sync.com is open source, including the infrastructure to run + it. No proprietary clients, tools or protocols. </article> <article class="pure-u-1 pure-u-md-1-2"> - <h1 id="privacy">Privacy</h1> - - <p>You can <a - href="https://docs.syncthing.net/branch/untrusted/html/users/untrusted.html">protect - a folder with a password</a>. - - When the folder is password-protected, the files can be read only on the - devices where password was entered. Nobody can access your data without a - password, including us. + <h1 id="privacy">Company mission and funding</h1> - <p>This is quite unique in the on-line synchronization and - backup space. While we very carefully protect your data, you are - additionally assured that it is impossible to read your files for anyone - else but you (or others, with whom you have shared the password). + We are a small bootstrapped company. We did not take funding and will not. </article>