Сучасний веб-додаток для управління особистими фінансами та плануванням подій
- Управління транзакціями: Відстеження доходів та витрат з категоризацією
- Аналітика: Статистика витрат по категоріях та періодах
- Планування подій: Календар завдань з пріоритетами та дедлайнами
- Профілі користувачів: Персоналізація з аватарками
- Безпечна авторизація: Власна реєстрація + Google/GitHub OAuth
- REST API: Повноцінний API з Swagger документацією
- Сучасний UI: Адаптивний дизайн з Bootstrap 5
- Backend: Django 5.2+ | Django REST Framework 3.15+
- Frontend: HTML5 | CSS3 | JavaScript | Bootstrap 5
- База даних: SQLite (розробка) | PostgreSQL (продакшн)
- Авторизація: django-allauth (Google, GitHub OAuth)
- API: drf-spectacular (OpenAPI/Swagger)
- Тестування: pytest | coverage.py
- CI/CD: GitHub Actions
git clone https://github.com/SMatvii/LifeManager.git
Windows:
# Створення віртуального середовища
python -m venv venv
# Активація
venv\Scripts\activate
Linux/Mac:
# Створення віртуального середовища
python3 -m venv venv
# Активація
source venv/bin/activate
# Оновлення pip до останньої версії
python -m pip install --upgrade pip
# Встановлення всіх залежностей з requirements.txt
pip install -r requirements.txt
# Перехід до директорії Django проекту
cd finassistant
# Копіювання файлу налаштувань (або створення власного)
copy .env.example .env # Windows
# або
cp .env.example .env # Linux/Mac
Відредагуйте файл .env
:
Створіть файл `.env` в корені проекту та додайте наступні змінні:
```env
SECRET_KEY=""
DEBUG="True"
DATABASE_URL="sqlite:///db.sqlite3"
DATABASE_NAME="db.sqlite3"
GOOGLE_CLIENT_ID = ""
GOOGLE_CLIENT_SECRET = ""
GITHUB_CLIENT_ID = ""
GITHUB_CLIENT_SECRET = ""
секретний ключ можна згенерувати за допомогою Django:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
- Перейдіть на Google Cloud Console.
- Створіть новий проєкт або виберіть існуючий.
- У меню зліва оберіть APIs & Services > Credentials.
- Натисніть Create Credentials > OAuth 2.0 Client ID.
- Якщо потрібно, спочатку налаштуйте OAuth consent screen:
- Оберіть тип (Internal або External)
- Заповніть необхідну інформацію: App name, User support email, Developer contact info.
- Оберіть Application type: Web application.
- Додайте авторизовані URI:
- Authorized redirect URIs, в нашому випадку це:
http://127.0.0.1:8000/accounts/google/login/callback/
- Authorized redirect URIs, в нашому випадку це:
- Після створення ви отримаєте:
- Client ID
- Client Secret
Збережіть ці значення у .env
файлі вашого проєкту.
- Перейдіть на GitHub Developer Settings.
- Оберіть OAuth Apps → натисніть New OAuth App.
- Заповніть форму:
- Application name: назва вашого додатку
- Homepage URL: в нашому випадку це,
http://127.0.0.1:8000/
- Authorization callback URL: в нашому випадку це,
http://127.0.0.1:8000/accounts/github/login/callback/
- Натисніть Register Application.
- Ви отримаєте:
- Client ID
- Натисніть Generate a new client secret, щоб отримати Client Secret
Збережіть значення у .env файлі.
# Створення міграцій для моделей
python manage.py makemigrations
# Застосування міграцій
python manage.py migrate
# Перевірка статусу міграцій
python manage.py showmigrations
# Опціонально: створення суперкористувача для адмінки
python manage.py createsuperuser
python manage.py runserver
# Всі тести
python manage.py test
# Тести з pytest
pytest
# Тести з покриттям коду
pytest --cov=core --cov-report=html --cov-report=term-missing
# Тести конкретного додатку
python manage.py test core
Після запуску сервера доступні:
- Swagger UI: http://127.0.0.1:8000/api/schema/swagger-ui/
- ReDoc: http://127.0.0.1:8000/api/schema/redoc/
- JSON Schema: http://127.0.0.1:8000/api/schema/
- Django Admin: http://127.0.0.1:8000/admin/
GET /api/transactions/ - Список транзакцій
POST /api/transactions/ - Створення транзакції
GET /api/transactions/{id}/ - Деталі транзакції
PUT /api/transactions/{id}/ - Оновлення транзакції
DELETE /api/transactions/{id}/ - Видалення транзакції
GET /api/categories/ - Список категорій
POST /api/categories/ - Створення категорії
GET /api/events/ - Список подій
POST /api/events/ - Створення події
GET /api/profile/ - Профіль користувача
# Створення нового додатку
python manage.py startapp myapp
# Створення міграцій після змін в моделях
python manage.py makemigrations
# Застосування міграцій
python manage.py migrate
# Створення суперкористувача
python manage.py createsuperuser
# Запуск інтерактивної оболонки Django
python manage.py shell
- Fork репозиторію
- Створіть feature branch:
git checkout -b feature/AmazingFeature
- Commit ваші зміні:
git commit -m 'Add some AmazingFeature'
- Push в branch:
git push origin feature/AmazingFeature
- Відкрийте Pull Request
Цей проект ліцензовано під MIT License - див. файл LICENSE для деталей.