Skip to content

About

Python ve PyQt5 ile geliştirilmiş masaüstü ürün yönetim uygulaması. Kategoriye göre canlı ürün verisi çekip MySQL'de saklar; modern, iki dilli (TR/EN) sidebar dashboard arayüzünden sıralama, filtreleme, listeleme ve satın alma kaydı yapmanı sağlar. Canlı veritabanı durum rozeti, anında dil değişimi ve tekil çalışma koruması içerir.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🛒 AlperTech - Product Management Application

A desktop product management app — built with Python & PyQt5 — that scrapes live product data by category, stores it in MySQL, and lets you sort, browse and record purchases through a modern, bilingual (Turkish/English) dashboard interface.

Python ve PyQt5 ile geliştirilmiş bir masaüstü ürün yönetim uygulaması — kategoriye göre canlı ürün verisi çeker, MySQL'de saklar; modern, iki dilli (Türkçe/İngilizce) bir dashboard arayüzü üzerinden sıralama, listeleme ve satın alma kaydı yapmanızı sağlar.

Python PyQt5 MySQL BeautifulSoup4 License Badge

🌐 English • 🇹🇷 Türkçe


AlperTech Ürün Yönetim Uygulaması - Türkçe arayüz


🌐 English


📖 About

AlperTech - Ürün Yönetim Uygulaması (Product Management App) is a PyQt5 desktop application for pulling product listings by category, storing them in a local MySQL database, and managing them through a modern sidebar dashboard. Pick a category from the sidebar, fetch live sample data with one click, then sort it by price or name, filter it by category, and record a purchase against a specific product — all from a single, bilingual window that switches instantly between Turkish and English.

✨ Features

  • Category-based scraping — 8 categories (Laptop, Phone, Tablet, Camera, Smart Watch, Headphones, Monitor, Mouse), each mapped to a live product listing page, fetched with requests + BeautifulSoup4 and bulk-inserted into MySQL
  • Sorting & filtering — sort the current category (or the whole catalog) by price ascending/descending or alphabetically by name, computed with a SQL ORDER BY
  • Purchase recording — a validated purchase form (first name, last name, 11-digit national ID, product ID lookup) that links a buyer to an existing product and stores the sale in a separate alislar table
  • Fully bilingual UI (ceviri.py) — every label, button, table header and dialog message is looked up from a shared TR/EN string table; a segmented TR | EN toggle in the sidebar switches the whole app instantly, no restart needed
  • Modern dashboard interface (tasarim.py) — a custom-styled PyQt5 UI: dark glass-panel cards, a single accent color, a category sidebar with an active-state highlight, and a styled scrollbar
  • Live database status badge — the header shows a green/red "Database Connected / Disconnected" pill reflecting the real MySQL connection state at startup
  • Friendly empty states — the product table shows a helpful placeholder message instead of a blank grid when no products have been fetched yet
  • Single-instance guard — a QSharedMemory lock prevents two copies of the app from running at once
  • Config via environment variables — database credentials are read from a local .env file (via python-dotenv), never hardcoded

🛠️ Tech Stack

  • Python 3 — core language
  • PyQt5 (Qt) — native desktop GUI
  • MySQL (mysql-connector-python) — product & purchase storage
  • requests + BeautifulSoup4 — fetching and parsing product listings
  • python-dotenv — loads database credentials from environment variables

📸 Screenshots

Turkish interface

Turkish interface — category sidebar, actions, purchase form and the product list.

English interface

Same app, instantly switched to English via the TR | EN toggle.

⚙️ How it works

  • main.py — the entry point; wires up the UI signals to the app logic (fetching, sorting, listing, purchasing, language switching) and owns all MySQL queries
  • tasarim.py — the PyQt5 UI layer: builds the sidebar, cards, buttons and table, and exposes retranslateUi(lang) to re-apply all strings when the language changes
  • ceviri.py — the flat TR/EN string table (METINLER) and the category definitions (KATEGORILER), looked up through small helper functions
  • veritabani.py — reads DB credentials from environment variables (.env) and creates the database/tables on first run if they don't exist yet

📁 Project Structure

AlperTech-UrunYonetimUygulamasi/
├── main.py              # Entry point - app window, event handlers, MySQL queries
├── tasarim.py             # PyQt5 UI layer - sidebar, cards, styles, retranslateUi
├── ceviri.py                # TR/EN string table + category definitions
├── veritabani.py              # Env-based DB config & schema setup
├── logo.png                     # App icon / sidebar logo
├── ArkaPlan.jpeg                  # Background image
├── img/                              # Screenshots used in this README
│   ├── turkce.png
│   └── english.png
├── .env.example                        # Template for DB credentials
├── .gitignore
├── requirements.txt
├── LICENSE
└── README.md

🚀 Usage

  1. Clone the repository
    git clone https://github.com/AlperT-Code/AlperTech-UrunYonetimUygulamasi.git
    cd AlperTech-UrunYonetimUygulamasi
  2. Create a virtual environment and install dependencies (Python 3.10+ recommended)
    python -m venv .venv
    .venv\Scripts\activate        # Windows
    pip install -r requirements.txt
  3. Make sure a MySQL server is running locally, then copy .env.example to .env and set your own credentials:
    copy .env.example .env
    The database and both tables are created automatically on first run — no manual SQL needed.
  4. Run it
    python main.py
    Pick a category from the sidebar, click Fetch Data to pull sample products into MySQL, then List / Cheapest First / Priciest First / Sort by Name to browse them, and Buy Product to record a purchase.

🤝 Contributing

  1. Fork the repository
  2. Create a new branch
  3. Commit your changes
  4. Push the branch
  5. Open a pull request

📝 License

This project is licensed under the MIT License.





🇹🇷 Türkçe


📖 Hakkında

AlperTech - Ürün Yönetim Uygulaması, kategoriye göre ürün listelerini çekip yerel bir MySQL veritabanında saklayan ve modern bir sidebar dashboard'u üzerinden yöneten bir PyQt5 masaüstü uygulamasıdır. Kenar çubuğundan bir kategori seçin, tek tıkla canlı örnek veriyi çekin, ardından fiyata veya isme göre sıralayın, kategoriye göre filtreleyin ve belirli bir ürün için satın alma kaydı oluşturun — hepsi Türkçe ve İngilizce arasında anında geçiş yapan tek bir pencereden.

✨ Özellikler

  • Kategori bazlı veri çekme — 8 kategori (Laptop, Telefon, Tablet, Kamera, Akıllı Saat, Kulaklık, Monitör, Mouse), her biri canlı bir ürün listeleme sayfasına bağlı; requests + BeautifulSoup4 ile çekilip toplu halde MySQL'e eklenir
  • Sıralama & filtreleme — mevcut kategoriyi (veya tüm kataloğu) fiyata göre artan/azalan ya da isme göre alfabetik sıralar, SQL ORDER BY ile hesaplanır
  • Satın alma kaydı — doğrulanmış bir satın alma formu (isim, soyisim, 11 haneli TC kimlik no, ürün ID araması) alıcıyı mevcut bir ürünle ilişkilendirir ve satışı ayrı bir alislar tablosunda saklar
  • Tamamen iki dilli arayüz (ceviri.py) — her etiket, buton, tablo başlığı ve diyalog mesajı ortak bir TR/EN metin tablosundan okunur; kenar çubuğundaki TR | EN kutusu tüm uygulamayı anında değiştirir, yeniden başlatma gerekmez
  • Modern dashboard arayüzü (tasarim.py) — özel stillendirilmiş bir PyQt5 arayüzü: koyu cam panel kartlar, tek bir vurgu rengi, aktif durumu vurgulayan bir kategori kenar çubuğu ve özel bir scrollbar
  • Canlı veritabanı durum rozeti — başlıkta, uygulama açılışındaki gerçek MySQL bağlantı durumunu yansıtan yeşil/kırmızı bir "Veritabanı Bağlı / Bağlantısı Yok" rozeti bulunur
  • Kullanıcı dostu boş durumlar — henüz ürün çekilmemişse ürün tablosu boş bir ızgara yerine yönlendirici bir mesaj gösterir
  • Tekil çalışma koruması — bir QSharedMemory kilidi, uygulamanın aynı anda iki kopyasının açılmasını engeller
  • Ortam değişkenleriyle yapılandırma — veritabanı kimlik bilgileri yerel bir .env dosyasından okunur (python-dotenv ile), koda asla gömülmez

🛠️ Kullanılan Teknolojiler

  • Python 3 — ana dil
  • PyQt5 (Qt) — yerel masaüstü arayüzü
  • MySQL (mysql-connector-python) — ürün ve satın alma verisi saklama
  • requests + BeautifulSoup4 — ürün listelerini çekme ve ayrıştırma
  • python-dotenv — veritabanı kimlik bilgilerini ortam değişkenlerinden yükler

📸 Ekran Görüntüleri

Türkçe arayüz

Türkçe arayüz — kategori kenar çubuğu, işlemler, satın alma formu ve ürün listesi.

İngilizce arayüz

Aynı uygulama, TR | EN kutusuyla anında İngilizce'ye çevrilmiş hali.

⚙️ Nasıl Çalışıyor

  • main.py — ana giriş noktası; arayüz sinyallerini uygulama mantığına (veri çekme, sıralama, listeleme, satın alma, dil değiştirme) bağlar ve tüm MySQL sorgularını yönetir
  • tasarim.py — PyQt5 arayüz katmanı: kenar çubuğunu, kartları, butonları ve tabloyu oluşturur; dil değiştiğinde tüm metinleri yeniden uygulayan retranslateUi(dil) fonksiyonunu sağlar
  • ceviri.py — düz TR/EN metin tablosu (METINLER) ve kategori tanımları (KATEGORILER), küçük yardımcı fonksiyonlar üzerinden okunur
  • veritabani.py — veritabanı kimlik bilgilerini ortam değişkenlerinden (.env) okur, ilk çalıştırmada veritabanını/tabloları henüz yoksa oluşturur

📁 Proje Yapısı

AlperTech-UrunYonetimUygulamasi/
├── main.py              # Giriş noktası - uygulama penceresi, olaylar, MySQL sorguları
├── tasarim.py             # PyQt5 arayüz katmanı - kenar çubuğu, kartlar, stiller, retranslateUi
├── ceviri.py                # TR/EN metin tablosu + kategori tanımları
├── veritabani.py              # Ortam değişkeni tabanlı DB yapılandırması & şema kurulumu
├── logo.png                     # Uygulama ikonu / kenar çubuğu logosu
├── ArkaPlan.jpeg                  # Arka plan görseli
├── img/                              # Bu README'de kullanılan ekran görüntüleri
│   ├── turkce.png
│   └── english.png
├── .env.example                        # DB kimlik bilgileri için şablon
├── .gitignore
├── requirements.txt
├── LICENSE
└── README.md

🚀 Kullanım

  1. Depoyu klonlayın
    git clone https://github.com/AlperT-Code/AlperTech-UrunYonetimUygulamasi.git
    cd AlperTech-UrunYonetimUygulamasi
  2. Sanal ortam oluşturup bağımlılıkları kurun (Python 3.10+ önerilir)
    python -m venv .venv
    .venv\Scripts\activate        # Windows
    pip install -r requirements.txt
  3. Yerel bir MySQL sunucusunun çalıştığından emin olun, ardından .env.example dosyasını .env olarak kopyalayıp kendi bilgilerinizi girin:
    copy .env.example .env
    Veritabanı ve her iki tablo ilk çalıştırmada otomatik oluşturulur — elle SQL yazmaya gerek yok.
  4. Çalıştırın
    python main.py
    Kenar çubuğundan bir kategori seçin, Veri Çek ile örnek ürünleri MySQL'e çekin, ardından Listele / Ucuzdan Pahalıya / Pahalıdan Ucuza / İsme Göre Sırala ile inceleyin ve Ürün Al ile bir satın alma kaydı oluşturun.

🤝 Katkıda Bulunma

  1. Projeyi fork'layın
  2. Yeni bir branch oluşturun
  3. Değişikliklerinizi commit edin
  4. Branch'i push edin
  5. Pull request oluşturun

📝 Lisans

Bu proje MIT Lisansı ile lisanslanmıştır.

About

Python ve PyQt5 ile geliştirilmiş masaüstü ürün yönetim uygulaması. Kategoriye göre canlı ürün verisi çekip MySQL'de saklar; modern, iki dilli (TR/EN) sidebar dashboard arayüzünden sıralama, filtreleme, listeleme ve satın alma kaydı yapmanı sağlar. Canlı veritabanı durum rozeti, anında dil değişimi ve tekil çalışma koruması içerir.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages