Kittygram — платформа, на которой пользователи могут регистрироваться, публиковать фотографии своих питомцев, указывать их достижения и любоваться котиками других участников.
Проект представляет собой полноценное веб-приложение, упакованное в контейнеры и с настроенным конвейером автоматизации (CI/CD).
- Python 3.10
- Django 3.2
- Django REST Framework
- Djoser
- PostgreSQL
- Gunicorn
- React
- Node.js
- CSS Modules
- Docker & Docker Compose
- Nginx (Reverse Proxy / Gateway)
- GitHub Actions (CI/CD: Линтинг, тесты, сборка образов)
- Telegram Bot SDK (Уведомления о статусе деплоя)
- Ruff (Линтер)
git clone https://github.com/ORBUZIK/kittygram_final.git
cd kittygram_finalВ корневой директории создайте файл .env и заполните его по образцу:
POSTGRES_DB=django
POSTGRES_USER=django
POSTGRES_PASSWORD=django
DB_HOST=db
DB_PORT=5432
SECRET_KEY=ваш_секретный_ключ_django
DEBUG=False
ALLOWED_HOSTS=127.0.0.1,localhostdocker compose up -d --builddocker compose exec backend python manage.py migrate
docker compose exec backend python manage.py collectstatic --no-inputПроект будет доступен по адресу: http://localhost:8000
В проекте настроена автоматизация через GitHub Actions. При каждом пуше в ветку main выполняются следующие шаги:
- Линтинг и тесты бэкенда: Проверка кода линтером
ruffи запуск Django-тестов. - Тестирование фронтенда: Запуск тестов React-приложения.
- Сборка и публикация образов: При успешном прохождении тестов собираются три Docker-образа (
backend,frontend,gateway) и отправляются на Docker Hub. - Уведомление: После завершения всех этапов в Telegram приходит сообщение об успешном обновлении образов.
Эндпоинты API:
/api/cats/— получение списка котиков или создание новой записи (GET, POST)./api/cats/{id}/— просмотр, редактирование или удаление конкретного котика./api/achievements/— список достижений./api/users/— регистрация пользователей./api/token/login/— получение токена авторизации.
Для доступа к админ-панели используйте адрес: /admin/
GitHub: @orbuzik
