SharedHabits — это веб-приложение для совместного отслеживания привычек. Пользователи могут создавать привычки, делиться ими с друзьями, приглашать участников и отслеживать прогресс выполнения.
- Flask + SQLAlchemy на Python
- PostgreSQL в Docker
- JWT-аутентификация через Flask-JWT-Extended
- Веб-интерфейс с Jinja2 шаблонами
- Docker
- Docker Compose
-
Перейдите в папку проекта:
cd SharedHabbits -
Запустите сервисы:
docker-compose up -d
-
Откройте приложение:
http://localhost:5000
docker-compose downЕсли вы хотите запустить приложение без Docker:
-
Создайте виртуальное окружение:
python -m venv venv
-
Активируйте его:
- Windows:
venv\Scripts\activate
- Linux/macOS:
source venv/bin/activate
- Windows:
-
Установите зависимости:
pip install -r requirements.txt
-
Настройте подключение к базе данных в
app/config.pyили через переменную окруженияDATABASE_URL. -
Запустите приложение:
python run.py
Приложение будет доступно по адресу http://localhost:5000.
Основные параметры задаются через переменные окружения:
DATABASE_URL— URL подключения к PostgreSQLJWT_SECRET_KEY— секретный ключ для JWTFLASK_APP—run.pyFLASK_ENV—development
По умолчанию приложение использует:
postgresql://postgres:postgres@localhost/SharedHabitJWT_SECRET_KEY=super-secret
Dockerfile— сборка образа Python-приложенияdocker-compose.yml— сервисыwebиpostgres.dockerignore— файлы, исключаемые из сборки
В docker-compose.yml PostgreSQL создается с:
- пользователь:
postgres - пароль:
postgres - база:
SharedHabit
SharedHabbits/
├── Dockerfile
├── docker-compose.yml
├── .dockerignore
├── README.md
├── requirements.txt
├── run.py
├── app/
│ ├── __init__.py
│ ├── auth.py
│ ├── config.py
│ ├── habits.py
│ ├── models.py
│ ├── utils.py
│ ├── web.py
│ └── templates/
│ ├── base.html
│ ├── index.html
│ ├── habits.html
│ ├── habit.html
│ ├── habit_edit.html
│ ├── profile.html
│ ├── profile_settings.html
│ ├── user_profile.html
│ └── invites.html
GET /— главная страницаPOST /api/login— входPOST /api/register— регистрацияPOST /api/logout— выходPOST /api/refresh— refresh tokenGET /api/habits— список привычекPOST /api/habits— создание привычкиGET /api/habits/<id>— детали привычкиPUT /api/habits/<id>— обновление привычкиDELETE /api/habits/<id>— удаление привычкиGET /api/habits/<id>/logs— логи привычкиPOST /api/habits/<id>/logs— добавление логаPOST /api/habits/<id>/invite— отправка приглашенияGET /api/invites— список приглашенийPOST /api/invites/<id>/accept— принятие приглашения

