Offline-first, Windows odaklı laboratuvar günlük ve deney raporu uygulaması.
Faz 1-2-3-3.5 Hazır ✅
- ✅ Backend: 8 modül, 35 endpoint, 13 test (100% geçti)
- ✅ Frontend: Vanilla JS ile fonksiyonel UI
- ✅ Multi-Language: 🇹🇷 Türkçe + 🇬🇧 İngilizce
- ✅ Branding: Mikrofab şirketi logosu
- ✅ Database: SQLite + 9 tablo + sample data
- 📋 Desktop: Tauri kurulum rehberi hazır (TAURI_SETUP.md)
# 1. Backend'i başlat
cd backend
pip install -r requirements.txt
python scripts\seed_data.py
$env:PYTHONPATH="."
python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
# 2. Tarayıcıda aç
# http://127.0.0.1:8000- API Framework: FastAPI 0.118+
- ORM: SQLModel 0.0.25
- Database: SQLite (lokal)
- Validation: Pydantic v2
- Data Processing: Pandas 2.3+, NumPy 2.3+
- Visualization: Matplotlib 3.10+
- Documents: python-docx 1.2, openpyxl 3.1+
- Testing: Pytest 8.4+, httpx
- Current: Vanilla HTML/CSS/JavaScript
- Future: React + TypeScript + Vite + Tailwind CSS + Radix UI
- Serving: FastAPI StaticFiles
- Framework: Tauri
- Package: Windows .exe + MSI installer
lab-report-app/
├── backend/ # FastAPI + Python servisleri
│ ├── app/
│ │ ├── models/ # SQLModel veritabanı modelleri
│ │ ├── api/ # API endpoint'leri
│ │ ├── services/ # İş mantığı (rapor, dataset vb.)
│ │ └── main.py # FastAPI uygulaması
│ ├── tests/ # Pytest testleri
│ ├── alembic/ # Veritabanı migration'ları
│ └── requirements.txt
├── frontend/ # React + TypeScript UI
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── services/
│ │ └── App.tsx
│ └── package.json
├── templates/ # DOCX/HTML rapor şablonları
├── storage/ # Yüklenen dosyalar (git'e dahil değil)
└── src-tauri/ # Tauri desktop konfigürasyonu
- Python 3.11+
- Node.js 18+
- Rust (Tauri için)
- Python 3.11+
- (Opsiyonel) Node.js 18+ (React versiyonu için)
- (Opsiyonel) Rust (Tauri için)
cd backend
# Virtual environment oluştur (opsiyonel)
python -m venv venv
.\venv\Scripts\Activate.ps1
# Bağımlılıkları yükle
pip install -r requirements.txt
# Sample data yükle
python scripts\seed_data.py
# Sunucuyu başlat
$env:PYTHONPATH="."
python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000Erişim Adresleri:
- Frontend: http://127.0.0.1:8000
- API Docs: http://127.0.0.1:8000/docs
- Health: http://127.0.0.1:8000/health
cd backend
pytest tests\test_api.py -v
# Sonuç: 13 PASSED ✅- Proje/Deney/Entry hiyerarşisi (CRUD)
- Zengin metin (Markdown desteği)
- Dosya yükleme (PNG, JPG, PDF, DOCX, XLSX, CSV) - SHA256 hash
- Dataset içe aktarma (CSV/XLSX + pandas)
- Grafik üretimi (matplotlib - line, scatter, bar, histogram)
- Çoklu kriter arama ve filtreleme
- Entry sürümleme (otomatik versiyon tracking)
- Audit trail (tam değişiklik geçmişi)
- DOCX (python-docx - metadata, resim, grafik)
- XLSX (openpyxl - çoklu sayfa, özet)
- PDF/HTML (basit HTML rendering)
- Toplu dışa aktarma (ZIP - deney + tüm ekler)
- Proje, deney, entry arama
- Tam metin arama (başlık + içerik)
- Tag kombinasyonları
- Tarih aralığı ve yazar filtreleme
- Frontend arama sayfası
POST http://localhost:8000/api/projects
Content-Type: application/json
{
"name": "YBCO Karakterizasyon",
"description": "Yüksek sıcaklık süperiletken örnekler",
"tags": ["YBCO", "VDP", "Hall"],
"created_by": 1
}POST http://localhost:8000/api/entries
Content-Type: application/json
{
"experiment_id": 1,
"author_id": 1,
"title": "Günlük-2025-10-06",
"body_md": "## Deney Koşulları\n- Sıcaklık: 77K\n- Manyetik alan: 0.5T",
"tags": ["YBCO", "VDP"]
}POST http://localhost:8000/api/reports/docx
Content-Type: application/json
{
"entry_id": 1,
"template_id": 1
}# Backend testleri
cd backend
pytest tests\test_api.py -v
# Sonuç
# 13 PASSED in 5.40s
# Coverage: 55% (542/981 lines)lab-report-app/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI app + Frontend serving
│ │ ├── database.py # SQLite connection
│ │ ├── models/__init__.py # 9 tablo modeli
│ │ ├── schemas.py # Pydantic validation
│ │ └── api/ # 8 API modülü (35 endpoint)
│ │ ├── projects.py # 4 endpoint
│ │ ├── experiments.py # 3 endpoint
│ │ ├── entries.py # 5 endpoint
│ │ ├── attachments.py # 5 endpoint
│ │ ├── datasets.py # 6 endpoint
│ │ ├── reports.py # 4 endpoint
│ │ ├── search.py # 4 endpoint
│ │ └── templates.py # 4 endpoint
│ ├── tests/
│ │ └── test_api.py # 13 tests
│ ├── scripts/
│ │ └── seed_data.py # Sample data loader
│ ├── requirements.txt
│ └── DEVELOPMENT.md
├── frontend/
│ ├── index.html # All-in-one SPA (HTML+CSS+JS)
│ └── README.md
├── README.md
├── QUICKSTART.md
├── STATUS.md
└── BACKEND_COMPLETE.md
| Tablo | Açıklama | Özellikler |
|---|---|---|
| users | Kullanıcılar | Email (unique), isim |
| projects | Projeler | JSON tags, arşivleme |
| experiments | Deneyler | Proje ilişkisi, JSON tags |
| entries | Kayıtlar | Versiyonlu, Markdown, parent_version_id |
| attachments | Dosyalar | SHA256 hash, file_path, size, type |
| datasets | Veri setleri | Pandas JSON, stats (mean/std/min/max) |
| charts | Grafikler | Matplotlib PNG, dataset ilişkisi |
| audit_logs | Değişiklik geçmişi | Entity tracking, diff JSON |
| templates | Rapor şablonları | DOCX/HTML şablonları |
- ✅ Entry Versioning: Her güncelleme yeni versiyon oluşturur (v1→v2→v3)
- ✅ Audit Trail: Tüm create/update işlemleri loglanır
- ✅ SHA256 Hash: Dosya tekrarı önlenir
- ✅ JSON Fields: Esnek veri yapıları (tags, columns, stats, diff)
%APPDATA%\lab-report-app\
├── lab_reports.db # SQLite database
└── storage/
├── attachments/ # Yüklenen dosyalar (yyyy/mm/)
├── datasets/ # CSV/XLSX dosyaları
├── charts/ # Üretilen grafikler
└── reports/ # Üretilen raporlar
- ✅ Dashboard (istatistikler + son kayıtlar)
- ✅ Proje oluşturma + listeleme
- ✅ Deney oluşturma + listeleme
- ✅ Kayıt oluşturma + listeleme + detay
- ✅ Arama (metin + etiket)
- ✅ API dokümantasyonu linkleri
- ✅ Gerçek zamanlı API durumu
- ✅ Responsive design (mobile-friendly)
- ⏳ Drag-drop dosya yükleme
- ⏳ Dataset önizleme tablosu
- ⏳ Grafik oluşturma UI
- ⏳ Markdown editör (syntax highlighting)
- ⏳ Rapor üretme arayüzü
- ⏳ Versiyon karşılaştırma
- ⏳ Gelişmiş arama filtreleri
Tauri ile Windows .exe oluşturma:
# Node.js kurulduktan sonra
cd frontend
npm create vite@latest frontend-react -- --template react-ts
cd frontend-react
npm install
npm install -D @tauri-apps/cli
npm run tauri buildÇıktı:
lab-report-app.exe(portable)lab-report-app_x.x.x_x64.msi(installer)
- Lokal Kullanım: İnternet bağlantısı gerektirmez
- CORS: Sadece localhost originlerine izin verilir
- Offline-First: Tüm veri lokal SQLite'da saklanır
- Tüm veriler
%APPDATA%/lab-report-app/altında saklanır - CORS sadece localhost:5173'e açıktır
- Backend değişiklikleri için testler ekleyin
- Code style:
black,ruff,mypy(Python),eslint,prettier(TypeScript) - Commit mesajları:
feat:,fix:,docs:,test:ön ekleri kullanın
MIT
Sorunlar için GitHub Issues kullanın.