# Фінальний проект курсу Python Programming: Foundations and Best Practices 2.0

## Технiчний опис завдання

Персональний помічник повинен вміти:
1. Зберігати контакти з іменами, адресами, номерами телефонів, email та днями народження до книги контактів;
2. Виводити список контактів, у яких день народження через задану кількість днів від поточної дати;
3. Перевіряти правильність введеного номера телефону та email під час створення або редагування запису та повідомляти користувача у разі некоректного введення;
4. Здійснювати пошук контактів серед контактів книги;
5. Редагувати та видаляти записи з книги контактів;
6. Зберігати нотатки з текстовою інформацією;
7. Проводити пошук за нотатками;
8. Редагувати та видаляти нотатки;

## Чек-ліст виконання проєкту (основні вимоги)

### Зберігання та управління контактами	
- [ ] Додавання нових контактів із іменами, адресами, номерами телефонів, електронною поштою та днями народження
- [ ] Пошук контактів за різними критеріями (наприклад, за іменем)
- [ ] Редагування та видалення контактів
- [ ] Виведення списку контактів, у яких день народження через задану кількість днів від поточної дати
- [ ] Валідація номера телефону та електронної пошти під час додавання або редагування контакту
### Зберігання та управління нотатками	
- [ ] Можливість додавання текстових нотаток
- [ ] Пошук, редагування та видалення нотаток
### Зберігання даних	
- [ ] Всі дані (контакти, нотатки) повинні зберігатися на жорсткому диску у папці користувача
- [ ] Помічник може бути перезапущений без втрати даних

## Додаткові вимоги

Ви також можете розширити/змінити функціонал проєкту на свій розсуд. Ми пропонуємо додаткове ускладнене завдання, для тих хто реалізує основний функціонал.
Додаткове завдання не обов’язкове, його можна виконувати за власним бажанням. 
*Зверніть увагу на те, що ви можете отримати 15 балів за реалізацію додаткового функціоналу, описаного нижче в Чек-листі виконання проєкту (додаткові вимоги)*

Персональний помічник повинен додатково вміти:
- [ ] Додавання "тегів" до нотаток
- [ ] Пошук та сортування нотаток за "тегами"
- [ ] Помічник повинен вгадувати, що хоче від нього користувач, на основі введеного тексту та пропонувати найближчу команду для виконання

