Опубликовал в публичном доступе свой маленький проект AMP. AMP — это шаблон «админки» на базе FastAPI. В качестве ORM использую peewee, в шаблонах bootstrap и графическую библиотеку C3(на базе D4). В AMP существует механизм авторизации пользователей (это ж админка), группы пользователей, локализация (английский и русский языки), установка часовых поясов. В статье покажу Вам, как это выглядит с экрана десктопа, мобильного устройства, небольшое демо(видео), дам ссылку на репозиторий, ну и конечно отвечу на вопрос «К чему нам еще одна админка ?».
Читать далее…
К чему нам еще одна админка?
Почти каждый разработчик, независимо от стека, со временем «собирает» свой любимый набор инструментов и оттачивает навыки по работе с ними. Это могут быть как любимые и хорошо известные (разработчику) графические библиотеки, так и наборы скриптов, что угодно. И я не исключение. Очень много времени провел в поисках своеобразного «персонального грааля», микрофреймворка или шаблона, который бы удовлетворял моим следующим требованиям:
- компактный размер. (проект занимает 6.5МБ, причем половина объема — это js библиотеки);
- лаконичное описание. FastAPI+Jinja2 под это почти идеально подходит;
- автодокументирование;
- нормальное отображение как с десктопа так и на экранах мобильных устройств;
- бесплатная графическая библиотека, в которой существует не только большое разнообразие красивых графиков, но например «из коробки» существует возможность периодически самостоятельно забирать JSON-ы и их же отрисовывать;
- компактный внешний вид. Все вспомогательные элементы (заголовки, кнопки, менюшки и т.п.) должны занимать минимум рабочего пространства экрана;
Не подобрав ничего подходящего, решил написать «свой велосипед», причем с акцентом на максимальную простоту кода и описание моделей (поэтому и использовал peewee). И, как итог, решил сделать свой проект публичным, т.к. являюсь сторонником выражения «добро порождает добро» или «opensource порождает opensource» :)
Вот демка, как это выглядит (надо нажать на картинку).
Допущенные вольности.
- В угоду простоте, я все маршруты описал в main.py, а функции имеющие отношение к конкретным моделям, в описание самих моделей;
- Использовал peewee. Да компактная и простая библиотека, да есть очень удобный функционал, например использование model_to_dict. Но библиотека не сильно распространенная и из популярных СУБД может работать только с MySQL и PostgreSQL;
- Использовал sqlite. Опять же в целях упрощения и повышения скорости развертывания. Хотелось чего-то недостижимого, в духе: «Развернул-> сменил пароль -> отдал в использование!».
Что дальше?
Помимо стандартных этапов которые я должен был сделать, но не сделал (линтер + тесты) и доработок направленных на улучшение проекта (добавление настроек, цветовых тем и прочее), планирую использовать данный проект по прямому назначению, а именно как шаблон для новых проектов, возможно востребованных как легендарный «неуловимый Джо». Например, через API или личный кабинет поуправлять nginx и ffmpeg на хосте, где развернут AMP.
Ах, да, репозиторий проекта: https://github.com/BazDen/AMP