A small business with several shops needed one place to record money in and money out, and printable reports for each shop and for all of them together. The interface is in Arabic, written right to left.

What it does

How I built it

Two tables are enough: shops and transactions. All queries use PDO prepared statements, and filters are built from a list of conditions and parameters, so adding a new filter doesn’t mean writing a new query.

Forms follow the Post/Redirect/Get pattern: after saving, the page redirects with a success message, so refreshing never records the same transaction twice.

Arabic is the tricky part of PDF generation: right-to-left layout and joined letters need a PDF engine and fonts that support them. The project includes Dompdf, mPDF and TCPDF, and bundles its own fonts for the reports.