Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚍 AllWays — сервис мультимодальных маршрутов

❄️ Статус проекта: ЗАМОРОЖЕН

На данный момент проект официально заморожен. Разработка новых бизнес-фич приостановлена. Однако кодовая база полностью стабильна, отрефакторена.

AllWays — это веб-приложение (Vue.js + Django REST Framework), спроектированное для построения сложных мультимодальных маршрутов. С точки зрения Python Backend-разработки проект представляет собой надежный REST API, обеспечивающий строгую валидацию данных, безопасную аутентификацию для SPA-клиента и грамотное управление реляционными связями (пользователи, маршруты, сегменты поездок).

Allways: alt text

Архитектура и инженерные решения

В проекте применены современные паттерны проектирования и строгие стандарты разработки:

  • Архитектура API (DRF): Использование Class-Based Views (APIView). Логика строго разделена: контроллеры отвечают за прием/ответ, а валидация и бизнес-правила изолированы в Serializers.
  • Безопасность SPA: Интеграция Vue.js и Django реализована через надежную Session Authentication с защитой от CSRF. Пароли защищены на уровне API.
  • Проектирование БД: Контроль целостности данных на уровне базы через UniqueConstraint (например, уникальность сегментов маршрута). Автоматические timestamps (created_at/updated_at) и предсказуемая сортировка.
  • Инфраструктура: Управление конфигурациями через django-environ (.env). Четкое разделение сред: SQLite для локальной разработки, MySQL для Production.
  • Developer Experience: Соблюдение PEP 8. Реализована кастомная management-команда seed_db для мгновенного развертывания тестовой базы.

💻 Технологический стек

Backend:

  • Python 3.12+
  • Django 5.2.5
  • Django REST Framework (DRF)
  • django-environ

Frontend:

  • Node.js
  • Vue.js 3
  • Vue Router
  • Vite
  • Axios

Базы данных:

  • SQLite — Development
  • MySQL — Production

Инструкция по локальному развертыванию

1. Подготовка и клонирование

git clone https://github.com/VoltusV5/AllWays.git
cd AllWays

2. Запуск Backend

Скопируйте конфигурацию окружения и заполните её (оставьте IS_PRODUCTION=False для SQLite):

cp .env.example .env

Перейдите в папку бекенда и настройте виртуальное окружение:

cd backend

# Windows
python -m venv venv
venv\Scripts\activate

# Linux / macOS
python3 -m venv venv
source venv/bin/activate

Установите зависимости, подготовьте БД и запустите сервер:

pip install -r requirements.txt
python manage.py migrate

# Скрипт создаст тестовых пользователей
python manage.py seed_db

python manage.py runserver

Backend будет доступен по адресу: http://127.0.0.1:8000/

3. Запуск Frontend (Vue + Vite)

Откройте новый терминал и перейдите в папку фронтенда:

cd frontend
npm install
npm run dev

Frontend будет доступен по адресу: http://localhost:5173/


✅ Статус задач (TODO)

  • Создана архитектурная структура проекта
  • Личный кабинет (безопасная регистрация и вход)
  • Поиск маршрута между двумя точками
  • Мультимодальные маршруты
  • Отображение карты и списка сегментов
  • Фильтры по видам транспорта
  • Автоматическая покупка билетов
  • AI-персонализация
  • Интеграция с внешними операторами и платёжными системами
  • Международная локализация и white-label

🔮 Планы развития

Бизнес-функционал:

  • Покупка всех билетов для сложных маршрутов единой транзакцией.
  • Персонализация предложений с помощью машинного обучения.
  • Учет погодных условий и массовых мероприятий в городе для динамической оптимизации маршрутов.

Backend и Инфраструктура:

  • Подключение Celery + Redis для асинхронного фонового парсинга билетов и расписаний из внешних API.
  • Внедрение продвинутого кэширования для ускорения отдачи популярных поисковых запросов.
  • Упаковка проекта в Docker (docker-compose) для абсолютной независимости от среды развертывания.
  • Настройка CI/CD пайплайнов (GitHub Actions) с автоматическим запуском линтеров (flake8, mypy) и юнит-тестов (pytest).

About

REST API и SPA-сервис для построения сложных транспортных маршрутов на базе Django REST Framework и Vue.js, MySQL. Проект заморожен.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages