Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Databáze nákupních cen materiálu z faktur dodavatelů.
Translation pending
BusinessTypeScript · JavaScriptGitHub @ventura1126-starOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Přehled cen dodavatelů
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Ceník dodavatelů — Mistři dřeva s.r.o. Aplikace, do které se nahrávají PDF doklady od dodavatelů — faktury i cenové nabídky. Z každého dokladu se vytěží všechny položky a z nich se postupně staví databáze nákupních cen materiálu. Pak stačí zadat, co hledáte — třeba kvh 60x120 — a uvidíte, za kolik ten materiál máte u kterého dodavatele, jak se cena vyvíjela a kolik jste u koho celkem odebrali. Doklady se dělí na dvě cenové větve, které se nikde nesčítají:Read the full README ↗
Aplikace, do které se nahrávají PDF doklady od dodavatelů — faktury i cenové
nabídky. Z každého dokladu se vytěží všechny položky a z nich se postupně staví
databáze nákupních cen materiálu. Pak stačí zadat, co hledáte — třeba
kvh 60x120 — a uvidíte, za kolik ten materiál máte u kterého dodavatele, jak se
cena vyvíjela a kolik jste u koho celkem odebrali.
Doklady se dělí na dvě cenové větve, které se nikde nesčítají:
| Větev | Doklady | Co říká |
|---|---|---|
| Fakturováno | faktura, dodací list | co jste za materiál skutečně zaplatili |
| Nabídnuto | cenová nabídka, potvrzení objednávky | co vám kdo nezávazně nabídl, s platností do data |
Je to zásadní rozdíl: nabídková cena je nezávazná a může se od konečné faktury lišit. Kdyby se obojí míchalo, „nejlepší cena" by mohla být částka, kterou vám nikdo nikdy nenaúčtoval. Druh dokladu pozná aplikace sama z jeho záhlaví a při kontrole ho můžete přepsat.
V kalkulaci se ve výchozím režimu počítá platnou nabídkou, pokud je novější než poslední faktura — za tu materiál skutečně koupíte. Jde přepnout na „jen fakturované" nebo „jen nabídkové" ceny; u každé částky je vidět zdroj.
| Obrazovka | K čemu je |
|---|---|
| Nahrát doklady | Přetáhnete PDF (i víc najednou), Claude pozná druh dokladu a přečte hlavičku i všechny řádky. |
| Doklady | Kontrola a potvrzení. Dokud doklad nepotvrdíte, do cen se nezapočítá. |
| Materiály a ceny | Vyhledávání materiálu → srovnání cen mezi dodavateli + graf vývoje ceny. |
| Dodavatelé | Kolik u koho odebíráme — podklad pro vyjednávání množstevních slev. |
| Kalkulace | Poskládáte materiál na zakázku a spočítá se nákladová cena podle vašich skutečných cen. |
Každý dodavatel píše stejný materiál jinak. Aplikace to řeší ve třech krocích:
Řádky jako doprava, palety nebo zaokrouhlení se poznají samy a do cen se nezapočítávají.
Potřebujete Node.js 20 nebo novější.
npm install
cp .env.example .env
Do .env doplňte klíč z https://console.anthropic.com/settings/keys:
ANTHROPIC_API_KEY=sk-ant-...
Pak spusťte:
npm run dev
Aplikace poběží na http://localhost:3000. Databáze se vytvoří sama jako soubor
data/ceny.db.
Pokud si chcete aplikaci osahat dřív, než nahrajete první skutečnou fakturu:
npm run db:seed
Vloží tři smyšlené dodavatele a osm měsíců nákupů. Skript odmítne běžet, pokud
už v databázi nějaké faktury jsou. Až budete chtít začít načisto, smažte soubor
data/ceny.db a spusťte aplikaci znovu.
Repozitář je připravený tak, aby stejný kód běžel lokálně i na serveru — liší se jen dvě proměnné prostředí.
ANTHROPIC_API_KEY=sk-ant-...
DATABASE_URL=libsql://vase-databaze.turso.io
DATABASE_AUTH_TOKEN=...
Schéma databáze se založí samo při prvním spuštění.
Funguje i klasické npm run build && npm start s DATABASE_URL=file:./data/ceny.db.
V tom případě zálohujte adresář data/ — je v něm celá databáze včetně
originálních PDF faktur.
Vytěžení jednoho dokladu je jeden dotaz na Claude API — platí se jen za přijaté doklady, ne za prohlížení cen. Orientačně za jeden doklad o dvou stranách:
ANTHROPIC_MODEL | Cena za doklad |
|---|---|
claude-opus-5 (výchozí) | ~2,20 Kč |
claude-sonnet-5 | ~0,90 Kč |
claude-haiku-4-5 | ~0,45 Kč |
Druhá proměnná ANTHROPIC_EFFORT (low / medium / high, výchozí medium)
řídí, jak důkladně model doklad pročítá — vyšší hodnota znamená přesnější čtení
za delší zpracování a vyšší cenu.
Lokálně se obojí mění v .env. Na Vercelu v Settings → Environment Variables
a je potřeba pak dát Redeploy, jinak se změna neprojeví.
src/
app/ stránky (Next.js App Router)
components/ sdílené komponenty UI
db/ připojení k databázi, schéma, ukázková data
lib/
extract.ts čtení PDF faktur přes Claude API
matching.ts párování položek faktur na materiály v katalogu
normalize.ts normalizace názvů, rozměrů a podobnost textů
repo.ts dotazy nad databází (ceny, statistiky)
actions.ts serverové akce (nahrání, potvrzení faktury, kalkulace)
Do cen patří všechno nakoupené zboží, ne jen stavební materiál — nářadí, řezné kotouče, ochranné pomůcky, chemie i provozní materiál. Jejich cena se u dodavatelů liší stejně jako u řeziva. Mimo ceny zůstávají jen řádky, které nejsou zboží: doprava, manipulace, obaly, poplatky a zaokrouhlení.
Ceny jsou vždy bez DPH a po slevě. Když faktura uvádí jen cenu před slevou, dopočítá se z celkové částky za řádek.
Různé měrné jednotky. Dodavatelé často prodávají v jiné jednotce, než ve které tvoří cenu — „30 bal" a zároveň „630 m" s cenou za metr. Aplikace vždy ukládá tu jednotku, ke které se vztahuje jednotková cena, protože jen ta je srovnatelná.
Když stejný materiál účtuje jeden dodavatel za m² a druhý za balení, ceny se nikde nemíchají: jednotka je součástí identity ceny, každá má na kartě materiálu vlastní tabulku a označení „nejlevnější" platí vždy jen uvnitř jedné jednotky. Souhrny nahoře a v hledání počítají s tou jednotkou, ve které máte nejvíc dokladů, a na existenci ostatních upozorní.
Přepočet mezi jednotkami aplikace vědomě nedělá a dělat nebude. Obsah
balení bývá na dokladech jen v poznámce za názvem ((role/7,5m2)), takže by
se musel odhadovat — a špatný přepočet je horší než žádný, protože vypadá
věrohodně. Ceny se ukazují tak, jak je dodavatel naúčtoval; přepočet zůstává
na člověku, který zná zboží.
Kontrola se vyplatí. Model čte i špatně naskenovaná PDF, ale u prvních faktur od nového dodavatele si projděte řádky pozorně. Co jednou potvrdíte, se používá i příště.