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.
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.
- 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+BeautifulSoup4and 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
alislartable - 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
QSharedMemorylock prevents two copies of the app from running at once - Config via environment variables — database credentials are read from a local
.envfile (viapython-dotenv), never hardcoded
- 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
Turkish interface — category sidebar, actions, purchase form and the product list.
Same app, instantly switched to English via the TR | EN toggle.
main.py— the entry point; wires up the UI signals to the app logic (fetching, sorting, listing, purchasing, language switching) and owns all MySQL queriestasarim.py— the PyQt5 UI layer: builds the sidebar, cards, buttons and table, and exposesretranslateUi(lang)to re-apply all strings when the language changesceviri.py— the flat TR/EN string table (METINLER) and the category definitions (KATEGORILER), looked up through small helper functionsveritabani.py— reads DB credentials from environment variables (.env) and creates the database/tables on first run if they don't exist yet
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
- Clone the repository
git clone https://github.com/AlperT-Code/AlperTech-UrunYonetimUygulamasi.git cd AlperTech-UrunYonetimUygulamasi - Create a virtual environment and install dependencies (Python 3.10+ recommended)
python -m venv .venv .venv\Scripts\activate # Windows pip install -r requirements.txt
- Make sure a MySQL server is running locally, then copy
.env.exampleto.envand set your own credentials:The database and both tables are created automatically on first run — no manual SQL needed.copy .env.example .env
- Run it
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.
python main.py
- Fork the repository
- Create a new branch
- Commit your changes
- Push the branch
- Open a pull request
This project is licensed under the MIT License.
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.
- 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+BeautifulSoup4ile ç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 BYile 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
alislartablosunda 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
QSharedMemorykilidi, uygulamanın aynı anda iki kopyasının açılmasını engeller - Ortam değişkenleriyle yapılandırma — veritabanı kimlik bilgileri yerel bir
.envdosyasından okunur (python-dotenvile), koda asla gömülmez
- 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
Türkçe arayüz — kategori kenar çubuğu, işlemler, satın alma formu ve ürün listesi.
Aynı uygulama, TR | EN kutusuyla anında İngilizce'ye çevrilmiş hali.
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önetirtasarim.py— PyQt5 arayüz katmanı: kenar çubuğunu, kartları, butonları ve tabloyu oluşturur; dil değiştiğinde tüm metinleri yeniden uygulayanretranslateUi(dil)fonksiyonunu sağlarceviri.py— düz TR/EN metin tablosu (METINLER) ve kategori tanımları (KATEGORILER), küçük yardımcı fonksiyonlar üzerinden okunurveritabani.py— veritabanı kimlik bilgilerini ortam değişkenlerinden (.env) okur, ilk çalıştırmada veritabanını/tabloları henüz yoksa oluşturur
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
- Depoyu klonlayın
git clone https://github.com/AlperT-Code/AlperTech-UrunYonetimUygulamasi.git cd AlperTech-UrunYonetimUygulamasi - 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
- Yerel bir MySQL sunucusunun çalıştığından emin olun, ardından
.env.exampledosyasını.envolarak kopyalayıp kendi bilgilerinizi girin:Veritabanı ve her iki tablo ilk çalıştırmada otomatik oluşturulur — elle SQL yazmaya gerek yok.copy .env.example .env
- Çalıştırın
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.
python main.py
- Projeyi fork'layın
- Yeni bir branch oluşturun
- Değişikliklerinizi commit edin
- Branch'i push edin
- Pull request oluşturun
Bu proje MIT Lisansı ile lisanslanmıştır.

