DepoT е софтуер за управление на контейнерно депо. Това е площадка, в която се съхраняват контейнери на различни фирми, могат да бъдат почиствани, измивани, фумигирани и т.н
Софтуерът е предназначен за управление на дейностите в депото, включително приемане и издаване на контейнери, проследяване на техния статус и управление на складовите наличности.

## За проекта
В проекта има 3 основни типа потребители:
- служители
- клиенти
- оператори (вход/изход)
като има администратор(и) и клиент-администратор. Идеята е на всяка фирма да се даде един акаунт за клиентски администратор и той от своя страна да се грижи за управлението на потребителите във неговата фирма
Служителите на депото и клиентите имат различни типове права и достъп до различни функционалности на системата.

Обработката протича по следния начин:
1. Клиентът изпраща заявка за приемане на контейнер - Preinfo.
2. Операторът проверява дали има предварителна информация за получаване на контейнера
    - ако да, операторът приема контейнера и го маркира като приет, и при положение, че има видими дефекти по него, прави снимки и ги прикачва към досието на контейнера
3. Когато фирмата има нужда от определен вид контейнери, те правят заявка (booking), в който описват вида, количеството и дават уникален номер на заявката (booking number). Освен това подават списък с камиони, които ще обработват този booking. По задание на клиента в този списък може да има повтарящи се номера на камиони показващо, че един камион може да получи n на брой контейнера по този букинг.
4. Шофьорите на камиони могат да видят на външно табло дали има заявки за техния камион за да не се трупат камиони на едно място и да се оптимизира движението в депото.
5. Когато шофьор отиде на портала, той показва booking number на оператора, който проверява дали има такъв booking и дали е за този камион. Ако всичко е наред, операторът издава контейнерите по заявката.
6. Когато контейнерите са издадени, те се маркират като експедирани.
7. На определена дата или период от време, който е зададен от клиента, се прави фактура за извършените услуги. Служител прави справка за неплатени престои на контейнери по фирми, избира няколко (или обикновено всички, но може да има друга уговорка) и създава плащане. Когато се създаде плащане, към него се добавят всички контейнери, които са били маркирани, и се изпраща имейл на клиента с 2 прикачени файла - фактура (сумарно) и детайли за за всички услуги. В писмото се подават 2 линка за плащане на фактурата - един за плащане с карта и един за плащане от сметка в EPay. Когато клиента използва един от линковете за плащане, в системата се получава известие от EPay за платената фактура и това се отразява автоматично в базата данни.

За разработка на проекта се използва Python с Django, като базата данни е PostgreSQL. 
Проектът е структуриран по модулен начин, което позволява лесно добавяне на нови функционалности и поддръжка на съществуващите.

## Инсталация
За пускане на проекта е необходимо да се вдигне контейнер, в който са инсталирани PostgreSQL и minIO. MinIO е S3 съвместим bucket storage, който се използва за съхранение на снимки и други файлове, които се прикачват към контейнерите. Той е идеален за разработка, тъй като може да се използва локално и е съвместим с AWS S3 API.
Това става с docker-compose.dev.yml, който е в корена на проекта. 

след това трябва да се пуснат миграциите, за да се попълни базата данни с основни номенклатури и други данни, които са необходими за работата на проекта, както и има създаден суперпотребител:
username: kikimor
password: shushunka1

След стартиране на системата, се отваря landing страницата на DepoT. В нея има малко информация за депото, login бутон и бутон за таблото за шофьорите.
При логване, в зависимост от типа на потребителя, се отваря различен dashboard. За служители и клиенти той изглежда почти еднакво, а за операторите е различен, тъй като те ползват таблети и интерфейса трябва да е по-опростен и удобен за работа с пръст(ръкавици).


