All work

Tädäne CRM

Production and finance system for a food factory

Tädäne makes jarred food products. The CRM I built runs the factory’s daily work: raw materials and packaging in the warehouse, production runs, quality control, finished stock, sales and payments, staff attendance and payroll, and the profit and loss report.

Role
Sole developer
Timeline
4 months, live
Scope
20 pages, 70+ API routes
Access
Per-feature roles
Factory dashboard with revenue, profit, quarantine, finished goods, recent sales and stock alerts
Production batches with plan versus actual output and quality-control status
Raw materials with stock levels, landed unit cost and low-stock badges
Monthly timesheet built from QR attendance
Role editor with read, write or no access for each feature

The real app running with invented demo data; no real customers, staff or figures are shown.

My role

  • I designed and built the whole system alone: the data model, the Go backend, the web app and the deployment.
  • I worked directly with the owner and the accountant, turning how the factory really works into rules in the system, and kept shipping their requests after launch.

Approach

  • Every production run takes its raw materials and packaging out of stock, and its unit cost is built from what was actually used and produced, including a fair share of shared monthly costs.
  • Purchases are stored at their full landed cost, so material costs stay accurate as prices change.
  • New production waits in a quality-control hold before it can be sold; spoilage found there updates stock and costs automatically.
  • Sales track delivery and payment separately, plus returns and sales commission, and everything feeds one profit and loss report.
  • Staff check in and out with QR codes; the timesheet and payroll are calculated from attendance, shifts, bonuses and deductions.
  • Products, materials, jar sizes and packaging are configured by the users, not hard-coded.

Architecture

Web app
Next.jsResponsive UIQR scannerExcel export
Security
Keycloak loginRoles × 13 featuresRead / write levelsPer-user overrides
Go API
Permission checksValidationCost and payroll rulesUnit tests
Data
PostgreSQLNightly backupsSafe restoreNo public database port
A self-hosted stack where every request is checked against the user’s permissions.

Result

  • Version 1.0 went live about six weeks after the first commit, and I kept shipping the accountant’s requests after launch.
  • Management sees the cost of each jar, stock levels and monthly profit in one place.
  • The system runs on the company’s own server; it is not reachable from the internet.

Stack

GoPostgreSQLKeycloakNext.jsReactTypeScriptTailwindDockerQR codesExcel export

Want the short version?

Everything on one or two pages, with contacts.