Skip to content

Latest commit

 

History

123 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(MVP) Adventures


Adventures - REST API для планирования этапов вашего путешествия.


Python FastAPI React SQLAlchemy Pydantic Poetry Docker
License: MIT


Возможности

  • Регистрация и аутентификация пользователей (JWT/Куки)
  • Администрирование пользователей сквозь призму системы прав разграничений уровня доступа (гранулярный доступ - роли)
  • Админ панель, в которой есть динамический поиск среди пользователей с подсвечиванием синтаксиса совпадения, фильтрация по динамическим ролям, пагинатор, возможность менять роль пользователям и удалять их
  • Просмотр небольшой статистики (наиболее популярное место отдыха, время года путешествий, самая релевантная гостиница и предпочитаемый вид транспорта)
  • Создание путешествий c возможностью выбора транспорта (самолет/машина), произвольного количества точек, отображения графического представления на карте (Yandex API), поиска аэропорта по базе ICAO-кодов, сохранения созданного путешествия и дальнейшего его просмотра, суммарный подсчет стоимости путешествия (с возможностью конвертации в различных валютах согласно актуальному курсу), а также отображение корректного часового пояса в выбранном пункте назначения (TimeZoneDB)

API endpoints

Домашняя странциа

[GET] /api/v1 - Главная страница

Аутентификация

[GET] /api/v1/auth/register/ - Страница регистрации
[POST] /api/v1/auth/register/ - Регистрация
[GET] /api/v1/auth/login/ - Страница входа в систему
[POST] /api/v1/auth/login/ - Вход в систему
[POST] /api/v1/auth/logout/ - Выход из системы

Пользователи

[GET] /api/v1/users/profile/ - Профиль пользователя
[GET] /api/v1/users/ - Получить всех пользователей
[GET] /api/v1/users/filter - Поиск пользователя по Имени/Фамилии
[GET] /api/v1/users/statistics/ - Получить статистику
[GET] /api/v1/users/{id_user}/ - Получить пользователя по id
[DELETE] /api/v1/users/{id_user}/ - Удалить пользователя по id
[PATCH] - /api/v1/users/{id_user}/role/{id_role}/ - Смена роли пользователя

Приложение

[GET] /api/v1/app/new_trip/ - Страница создания нового путешествия
[GET] /api/v1/app/new_trip/airport - Поиск аэропорта/ICAO кода
[GET] /api/v1/app/map/ - Отображения Yandex Map
[GET] /api/v1/app/saved_trips/ - Страница сохраненных путешествий пользователя
[GET] /api/v1/app/saved_trips/{id_trip} - Получить сохраненное путешествие по id
[POST] /api/v1/app/submit/ - Подтверждение к отправке созданного путешествия на сервер
[POST] /api/v1/app/send/ - Отправка созданного путешествия в БД
[POST] /api/v1/app/location/ - Получить местоположение для определения часового пояса

Документация

Swagger: http://localhost:8000/docs
ReDoc: http://localhost:8000/redoc

Архитектура проекта


Вход

Структура проекта

├── LICENSE
├── README.md
├── backend
   ├── Dockerfile
   ├── __init__.py
   ├── __pycache__
   ├── alembic.ini
   ├── poetry.lock
   ├── pyproject.toml
   ├── requirements.txt
   └── src
        ├── __init__.py
        ├── adapters
        │   ├── __init__.py
        │   └── entrypoints
        │       ├── __init__.py
        │       ├── api
        │       │   ├── __init__.py
        │       │   ├── routers.py
        │       │   └── v1
        │       │       ├── __init__.py
        │       │       ├── auth
        │       │       │   ├── __init__.py
        │       │       │   └── auth_router.py
        │       │       ├── icao
        │       │       │   ├── __init__.py
        │       │       │   └── icao_router.py
        │       │       ├── index
        │       │       │   ├── __init__.py
        │       │       │   └── index_router.py
        │       │       └── users
        │       │           ├── __init__.py
        │       │           └── users_router.py
        │       ├── static
        │       │   ├── base.css
        │       │   ├── icao
        │       │   │   ├── 0_fMz62Ks_u0QvVQ1E.png
        │       │   │   ├── autocomplete.js
        │       │   │   ├── map.css
        │       │   │   ├── rate.js
        │       │   │   ├── test.js
        │       │   │   ├── timer.js
        │       │   │   └── trips.css
        │       │   └── users
        │       │       ├── assets
        │       │       │   ├── airplane_icon.png
        │       │       │   ├── roles_icon.png
        │       │       │   └── user_icon.png
        │       │       └── users.css
        │       ├── templates
        │       │   ├── auth
        │       │   │   ├── login.html
        │       │   │   └── register.html
        │       │   ├── base.html
        │       │   ├── trips
        │       │   │   ├── form.html
        │       │   │   ├── map-old.html
        │       │   │   ├── map-other.html
        │       │   │   ├── map.html
        │       │   │   ├── my_trips.html
        │       │   │   └── saved.html
        │       │   └── users
        │       │       ├── all_users.html
        │       │       ├── current_user.html
        │       │       ├── profile.html
        │       │       └── statistics.html
        │       └── utilities
        │           ├── __init__.py
        │           ├── auth.py
        │           └── dependencies.py
        ├── configurator
        │   ├── __init__.py
        │   └── config.py
        ├── domain
        │   ├── __init__.py
        │   ├── models
        │   │   ├── __init__.py
        │   │   ├── airport.py
        │   │   ├── trip.py
        │   │   ├── trip_point.py
        │   │   └── user.py
        │   ├── ports
        │   │   ├── __init__.py
        │   │   ├── airport_repository.py
        │   │   ├── trip_repository.py
        │   │   └── user_repository.py
        │   └── schemas
        │       ├── __init__.py
        │       └── users.py
        ├── infrastructure
        │   ├── __init__.py
        │   └── db
        │       ├── __init__.py
        │       ├── dao
        │       │   ├── __init__.py
        │       │   ├── airport.py
        │       │   ├── trip.py
        │       │   └── users.py
        │       ├── database.py
        │       └── migration
        │           ├── README
        │           ├── __init__.py
        │           ├── data
        │           │   └── icao.csv
        │           ├── env.py
        │           ├── script.py.mako
        │           └── versions
        │               ├── 09458a9f8bba_create_users_table.py
        │               ├── 4cdd72cd7989_create_save_trips.py
        │               ├── 5e897b6b8061_create_icao_table.py
        │               ├── 88bbee1de683_create_roles_table.py
        │               ├── 950f5c02cfc9_updated_users_table.py
        │               ├── __init__.py
        │                   
        └── main.py
── docker-compose.yml
── frontend
   ├── Dockerfile
   ├── node_modules
   ├── package-lock.json
   ├── package.json
   ├── react-apps
   ├── static
   └── vite.config.js
── venv
    ├── bin
    ├── include
    ├── lib
    └── pyvenv.cfg

Галерея

Вход
Вход в систему


Вход
Регистрация


Вход
Админ панель


Вход
Статистика


Вход
Создание путешествия


Вход
Подтверждение путешествия


Вход
Сохраненные путешествия

Команда


  • Болотов Глеб
  • Калинин Артем
  • Смирнов Кирилл
  • Темников Дмитрий

About

MVP of planning adventures

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages