Giter Site home page Giter Site logo

imgomg's Introduction

Логотип проекта

ImgOmg

krutoi editor photo (по крайней мере он таким задумывался)


Оглавление

  1. Возможности
  2. Стек технологий
  3. Запуск

Документация , но на самом деле это отчёт по практике, я подумал почему бы и нет. Не будет же она просто так валяться.


Проект представляет из себя веб-ресурс для простейших манипуляций над изображениями.

Главный экран
Главный экран

Возможности

  • https:

https
https сертификаты находятся в '/frontend/certs'

  • Регистрация, идентификация, авторизация через jwt-токен:

https
Меню регистрации


https
Меню авторизации


https
Красивое автозаполнение


https
jwt в куках


  • Меню редактора:

image

  1. Цвет

Можно сделать красиво. image

  1. Размер

Радужный прямоугольник выделяющий область для обрезки фотографии переливается радугой. image

(теперь радужный прямоугольник ещё более радужный!) image

  1. Сжатие

ЖПЕГ. (реализация .ppeg, а также .ppega будет добавлена в следующих версиях) image

  1. Приколы

дрейн генг романчик-манчик сёма, влада карасёва, макс всем привет! image Заставляет задуматься о бренности. image Клепаем крипипасты. image

Изображение после редактирования:

image АХЫФДАФЫЗЛАЛЗЩЙЦЛЩАЗЙЦ, пока делал ридми нашел багфичу с конфликтом пост-запросов компресса и приколов..

  1. Поддержка слоёв

можно нажать на любой из слоёв и вы сбросите картинку до него image image

ещё одно изображение после редактирования, но уже со всеми пруфами image


  • Профиль пользователя:

image

Сайт пока что не адаптивен... Нам правда жаль, мы это исправим.


Ну а теперь самое интересное. Стек технологий и в целом его структура.

Frontend:

  1. Vue 3 + Vite
  2. Vuetify
  3. Vuex
  4. Куча плагинов, по типу: js-cookie, axios, bcryptjs (помоему уже не используется), file-saver, ...
  5. Компоненты: @vuepic/vue-datepicker и mdi-шки, хотелось конечно использовать fa-шки, но как-то руки не дошли.
  6. Кривой дизайн
  7. Огромная куча запутанного кода, который не подлежит рефакторингу.
    1. Его остаётся лишь сжечь и просить богов о милости.
  8. немного адаптивности не помешает?

image

Backend:

Микросервис для реги, автори и идентифи:

  • FastAPI + uvicorn (роутинг и запуск)
  • psycopg2 + pydantic (дб, бд и модели)
  • PyJWT + bcrypt (шифровка, проверка и генерация жвт) И куча всякой фигни. Надо бы реализовать всё на sqlalchemy, но крайний срок вчера сказал потом. Кстати там к фастапи сваггер прилагается, так что пируем за чужой счет.

Структура:

Есть класс PostgreConn, который принимает даннные для захода в бдшку и там всё колдует.

  1. /user/signup:
  • Регистрация. Нужно куча данных, которые инсертаются PC.insert_user. Пароль хешируется сразу. Возвращает жвтшку.
  1. /user/check:
  • Возвращает данные о юзере, данные которого мы кинули ему на растерзание. Если чето вернулось проверяет пароли у pass_hash.py.
  1. /user/login:
  • Проверяет юзера предыдущим пунктом, если проходит проверку возвращает жвтшку на основе user.login + "/" + user.email.
  • Прикол в том, что в форме можно вводить либо почту либо логин, поэтому колхозим так.
  1. /user/profile:
  • Декодирует токен и селектает пользователя по декодированным данным (либо логин либо пошта)
  1. /user/logout:
  • Продолжаем колхозить, дамы и господа, поэтому возвращаем здесь пустой набор необходимых данных.
  1.  @app.get("/", dependencies=[Depends(jwtBearer())])
     async def pong():
         return {
             'id': 0,
             'name': 'John',
             'surname': 'Doe'
         }

Микросервис для редактирования фото:

  • Flask (роутинг и запуск)
  • PIL (Цвета, обрезание, сжатие, наложение дрейнгенг эффекта и элегантного)
  • cv2 (Кривое выгрызание фона)
  • base64 (декодирование и кодирование картинок оттуда сюда)
  • re, io, os, numpy, ... (понятно) И куча всякой фигни. Не успел реализовать сохранение картинок у пользователя в бдшке, чтобы можно было работы в профиле смотреть.

Ну и ладно

Структура:

Есть класс Editor, который переправляет запросы для каждого из модулей (цвет, размер, сжатие и приколы) и после обработки возвращает данные.

  1. /upload:
  • Собстна, загрузка фотографии в Едитор.
  • Сначала декодирует картинку из base64 в PIL image.
  • Потом проходит по каждому модулю, там определяется че надо ченить или пофик скипаем.
  • Возвращается снова base64 из пил картинки.
  1. /compress_size:
  • Компрессирует и возвращает картинку и размер полученной картинки.
  • Помоему я забил на размер картинки и считаю её на фронте.
  1. /pre_prikol:
  • Прикалываемся, но не полностью.
  • Здесь мы рандомно прикалываемся из дрейн эффектов и выкидываем картинку и файл.
  • Файлом мы потом в аплоад заходим и гарантированно тот эффект который нам нужен применяем. Всё это приправленно криворукостью, неоптимизированным кодом и тихим ужасом, а иногда даже и громким.

Database:

  • Было бы странно увидеть здесь, что-то кроме PostgreSQL.
  • В нём две таблицы с юзерами и категориями юзеров.
  • Переменные окружения в database.env
  • Остальное в докер композе.
  • Кстати я перевёл постгру на алпину, но еще не запускал. Надеюсь оно будет нормально и не захватит заложников.

Nginx:

  • Пока что не знаю, что написать.

Запуск.

НИКАКИХ БОЛЬШЕ ПУНКТОВ!!!

1. Открываете терминал в рут папке проекта!

1. Пишите docker-compose up

1. Радуетесь!!!

**круто

ставте пять звезд лайк и подписывайте на меня свои завещания. всем пока!

imgomg's People

Contributors

burunyuu23 avatar

Stargazers

Alexander Ereshkin avatar Evgeniy Sakov avatar  avatar Anastasia avatar  avatar FelixDesyatirikov avatar Putin Pavel Alexandrovich avatar Grushevskaya Oksana avatar Alexey Brante avatar Elena avatar  avatar

Watchers

 avatar

imgomg's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.