Skip to content

Commit 3d286b2

Browse files
committed
readme
1 parent 78423d4 commit 3d286b2

6 files changed

Lines changed: 154 additions & 9 deletions

File tree

.github/workflows/main.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Bookinn-app workflow
1+
name: Bookinn workflow
22

33
on: [push]
44

@@ -13,7 +13,7 @@ jobs:
1313
- name: Set up Python
1414
uses: actions/setup-python@v4
1515
with:
16-
python-version: 3.9
16+
python-version: 3.11
1717

1818
- name: Install dependencies
1919
run: |

README.md

Lines changed: 140 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,143 @@
1-
# bookinn
1+
<a name="Начало"></a>
2+
3+
## BookInn
4+
5+
API сервис для бронирования номеров
26

37
[![BookInn workflow](https://github.com/dmsnback/bookinn/actions/workflows/main.yml/badge.svg)](https://github.com/dmsnback/bookinn/actions/workflows/main.yml)
48

5-
Сервис бронирования номеров в отеле
9+
10+
- [Описание](#Описание)
11+
- [Технологии](#Технологии)
12+
- [Основные ресурсы](#Ресурсы)
13+
- [Шаблон заполнения .env-файла](#Шаблон)
14+
- [Запуск проекта на локальной машине](#Запуск)
15+
- [Автор](#Автор)
16+
17+
<a name="Описание"></a>
18+
19+
### Описание
20+
21+
Сервис — REST API для бронирования номеров в отеле.
22+
Реализован на Django + Django REST Framework, используется Djoser для аутентификации (JWT), drf-spectacular для документации.
23+
24+
```python
25+
Проект адаптирован для использования PostgreSQL и развёртывания в контейнерах Docker.
26+
```
27+
28+
> [Вернуться в начало](#Начало)
29+
<a name="Технологии"></a>
30+
31+
### Технологии
32+
33+
[![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](https://www.python.org)
34+
![Django](https://img.shields.io/badge/django-%23092E20.svg?style=for-the-badge&logo=django&logoColor=white)
35+
[![DjangoREST](https://img.shields.io/badge/DJANGO-REST-ff1709?style=for-the-badge&logo=django&logoColor=white&color=ff1709&labelColor=gray)](https://www.django-rest-framework.org)
36+
[![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com)
37+
[![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white)](https://www.postgresql.org)
38+
[![GitHub Actions](https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge&logo=githubactions&logoColor=white)](https://github.com/features/actions)
39+
[![Nginx](https://img.shields.io/badge/nginx-%23009639.svg?style=for-the-badge&logo=nginx&logoColor=white)](https://nginx.org/ru/)
40+
[![Gunicorn](https://img.shields.io/badge/gunicorn-%298729.svg?style=for-the-badge&logo=gunicorn&logoColor=white)](https://gunicorn.org)
41+
42+
> [Вернуться в начало](#Начало)
43+
44+
<a name="Ресурсы"></a>
45+
46+
### Основные ресурсы
47+
48+
- `/api/v1/rooms/` — CRUD и список номеров
49+
- `/api/v1/room_type/` — типы номеров
50+
- `/api/v1/bookings/` — бронирования (создание/обновление/просмотр)
51+
- `/api/v1/room_images/` — загрузка фото номера
52+
- `/api/v1/auth/` — djoser (регистрация, логин, токены)
53+
54+
> [Вернуться в начало](#Начало)
55+
56+
<a name="Шаблон"></a>
57+
58+
### Шаблон заполнения .env-файла, расположен по пути infra/.env
59+
60+
> в settings.py указаны дефолтные значения для переменных из env-файла
61+
62+
```python
63+
SECRET_KEY = 'Ваш секретный ключ'
64+
65+
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
66+
DB_NAME=postgres # имя базы данных
67+
POSTGRES_USER=postgres # логин для подключения к базе данных
68+
POSTGRES_PASSWORD=postgres # пароль для подключения к БД
69+
DB_HOST=db # название сервиса (контейнера)
70+
DB_PORT=5432 # порт для подключения к БД
71+
```
72+
73+
> [Вернуться в начало](#Начало)
74+
75+
<a name="Запуск"></a>
76+
77+
### Запуск проекта на локальной машине
78+
79+
- Склонируйте репозиторий
80+
81+
```python
82+
git clone git@github.com:dmsnback/bookinn.git
83+
```
84+
85+
- Переходим в папку с файлом ```docker-compose.yaml```
86+
87+
```python
88+
cd infra
89+
```
90+
91+
- Запускаем Docker контейнеры
92+
93+
```python
94+
docker-compose up -d --build
95+
```
96+
97+
- Выполняем миграции
98+
99+
```python
100+
docker-compose exec backend python manage.py migrate
101+
```
102+
103+
- Создаём суперюзера
104+
105+
```python
106+
docker-compose exec backend python manage.py createsuperuser
107+
```
108+
109+
- Собираем статику
110+
111+
```python
112+
docker-compose exec backend python manage.py collectstatic --no-input
113+
```
114+
115+
- Наполняем базу данных содержимым из файла ```rooms_fixture.json```:
116+
117+
> В базу добавится 10 номеров.
118+
119+
```python
120+
docker-compose exec backend python manage.py loaddata data/rooms_fixture.json
121+
```
122+
123+
> __Проект станет доступен по адресу:__
124+
125+
[http://localhost/api/v1/](http://localhost/api/v1/)
126+
127+
> __Админка станет доступна по адресу:__
128+
129+
[http://localhost/admin/](http://localhost/admin/)
130+
131+
> __Документация к API будет доступна по адресу:__
132+
133+
[http://localhost/api/docs/](http://localhost/api/docs/)
134+
135+
> [Вернуться в начало](#Начало)
136+
137+
<a name="Авторы"></a>
138+
139+
### Автор
140+
141+
- [Титенков Дмитрий](https://github.com/dmsnback)
142+
143+
> [Вернуться в начало](#Начало)

backend/bookinn/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@
6666
ALLOWED_HOSTS = ["*"]
6767

6868
CSRF_TRUSTED_ORIGINS = [
69-
"http://localhost:8000",
70-
"http://127.0.0.1:8000",
69+
"http://localhost",
70+
"http://127.0.0.1",
7171
]
7272

7373
INSTALLED_APPS = [

backend/wait-for-it.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#!/usr/bin/env bash
2-
# Use this script to test if a given TCP host/port are available
1+
# Скрипт ждёт, пока база на станет доступна, а потом запускает Django.
32

43
WAITFORIT_cmdname=${0##*/}
54

infra/.env.example

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
SECRET_KEY = 'SuperSecrettKey'
2+
3+
DB_ENGINE=django.db.backends.postgresql
4+
DB_NAME=postgres
5+
POSTGRES_USER=postgres
6+
POSTGRES_PASSWORD=postgres
7+
DB_HOST=db
8+
DB_PORT=5432

infra/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ services:
2424
nginx:
2525
image: nginx:stable-alpine
2626
ports:
27-
- "8000:80"
27+
- "80:80"
2828
volumes:
2929
- static_value:/app/static/
3030
- media_value:/app/media/

0 commit comments

Comments
 (0)