Skip to content

Mohamed Salem Younes

All projects

Fleet Management

livebuilt at SaySoft

A fleet SaaS for transport companies — vehicles, drivers, clients, trips, invoicing, and full accounting — with PDF reports generated off the request path on AWS.

NestJSPrismaPostgreSQLReactTerraformAWS ECSSQSLambda
1,261
Automated tests
39
API controllers
38
Database models
3
Roles

PROBLEM

A transport company's operations lived in a legacy Microsoft Access desktop app: one machine, no remote access, and invoices assembled by hand from trip records. The replacement had to cover the whole chain — vehicle and driver paperwork with expiry dates, the trip lifecycle, billing from trips to invoices, and the books — as a web app several people can use at once.

WHAT'S IN IT

  • Vehicles, drivers, and clients with document storage and expiry tracking, on S3 with presigned URLs.
  • The full trip lifecycle, from booking and cargo to billing, flowing into invoices with payment tracking.
  • Accounting with a chart of accounts, journal entries, and a trial balance, plus a KPI dashboard of trips and revenue against expenses.
  • Async reports: API → SQS → Lambda → PDF in S3, all provisioned with Terraform (ECS, RDS, SQS, S3, Lambda, ECR) and deployed by GitHub Actions over OIDC — no long-lived AWS keys in CI.
  • Owner / writer / viewer roles, Paymob subscription billing, and English and Arabic with a full RTL layout.

ROLE

Engineer at SaySoft and main author of the API and web app, plus the Terraform infrastructure and the report worker.

NOTABLE DECISION

Report generation never runs inside an API request. The API drops a job on SQS and returns immediately; a separate Lambda worker renders the PDF to S3. Large reports can take far longer than a request should, and moving them out means a heavy month-end report can't slow down, or time out, the people still entering trips.