GZL Temizlik — Cleaning and Property Operations Platform
A live service platform combining a corporate website, quotation intake, customer portal and apartment-management operations.

Description
A live service platform combining a corporate website, quotation intake, customer portal and apartment-management operations.
Case study
Challenge
Cleaning services and property management were run by the same team, with quotes in email, staff plans in spreadsheets and service charges in separate files. Property management also involves evidence-based steps defined by the Turkish Condominium Law.
Approach
A customer site, a resident portal and a two-part admin panel were built on a single Fastify API and MySQL data model. Every record is isolated per building, and finance, meeting, document and collection rules are secured by tests.
Outcome
The platform is live at gzltemizlik.com and used daily by the team. Quotes are recorded as numbered PDFs, building finances stay auditable, and residents can check balances and documents in the portal.
Tools
Next.js, React, TypeScript, Redux Toolkit, Fastify, Drizzle ORM, MySQL, Cloudinary
Key Features
11 service pages, numbered quotes generated as PDF
Unit-scoped resident portal: balance, charges, documents
Login-free QR issue reporting with on-device photo resizing
FIFO collection, cash book, statements and period locking
Operating plan and 70/30 heating cost allocation
Meeting notices, attendance, proxies and majority rules
Building-branded PDFs, demand letters, enforcement sets
Monthly staff plans from shift templates with conflict checks
Iyzico online payments, consent-based SMS and WhatsApp
Technologies Used
Next.js
React
TypeScript
Redux Toolkit
Fastify
Drizzle ORM
MySQL
Cloudinary
Design Highlights
Every record is scoped to tenant and building; residents only see their unit
Issue reporting on a single screen with only category and description required
Visible copy comes from site settings and can change without a release
Finance and legal rules covered by 86 test files and a full-year scenario
Payment and notification channels stay closed until credentials are set
Details
GZL Temizlik is a live platform built for a business that runs both cleaning services and apartment and residential complex management in the Gemlik and Bursa area of Turkey. One system serves three different audiences: the customer looking for a service and requesting a quote, the resident following service charges and announcements, and the manager who runs everything from field staff to the cash book.
Context and requirements
When cleaning and property management are handled by the same team, the work quickly overlaps: a single building needs stairwell cleaning, service charge collection and an owners' meeting. Previously, quotes were handled by email and phone, staff schedules lived in spreadsheets and service charges were tracked in separate files. Property management in Turkey is also governed by the Condominium Law, so steps such as meeting notices, the resolution book, the annual operating plan and formal notifications have to happen in the right order and with evidence. The goal was to manage both lines of business in one data model, with each building strictly isolated from the others.
Solution and scope
Customer website
The corporate site presents 11 services on their own detail pages: home, office, deep cleaning, post-construction, apartment and stairwell, window, upholstery, warehouse and pool cleaning, plus lawn mowing and apartment/complex management. Visitors submit requests through the quote form or the booking page; quotes are numbered, generated as PDFs and sent by email. A dedicated landing page for property management, a public 20-chapter guide to apartment management, a blog, news, FAQ and privacy pages are also live.
Resident portal
After signing in, residents see only the data for their own unit: summaries of total charges, amount paid and outstanding balance, service charges by period, payment history, announcements and documents. They can also follow whether a meeting notice has been delivered and how they are registered to attend, check the status of their earthquake insurance policy, view a debt statement, open a request and download a PDF account statement.
QR-based issue reporting
A QR poster in the building opens a reporting form that requires no login. Only a category and a description are mandatory; photos are resized on the phone and uploaded immediately. Residents can report a problem in a common area without installing an app.
Admin panel
The panel has two main areas. The cleaning area covers customers and their properties, staff profiles, tasks, the work calendar and finances. Monthly schedules are generated from shift templates with conflict checks, and generating the same plan twice never duplicates records. Visit teams, visit order and job photos are recorded.
The apartment area covers everything a property manager needs throughout the year:
- Finance: service charges, FIFO-based collection, cash book, income and expenses, debtor list, statements and period locking.
- Operating plan and allocation: expense allocation to the cent, an approval chain, a check that budget and charges match, and heating cost allocation at 70 percent consumption and 30 percent floor area.
- Meetings and resolutions: meeting notices, attendance list, proxies, majority calculation, resolutions and statutory books.
- Document generation: PDF documents carrying the building's identity, document counters, retention classes and delivery records.
- Collections and legal: escalation stages, formal demand letters, enforcement document sets and legal case files.
- Building and maintenance: buildings, units, residents, inventory, equipment and lift inspections, contracts, insurance policies and an obligations calendar.
- Staff and handover: caretakers and staff, leave and personnel records, a 21-item handover protocol.
- Processes and data protection: an evidence-based process wizard, checklists, emergency cards and CCTV audit records.
Website content (services, quotes, bookings, messages), users, roles and permissions, sessions, files and the audit log are managed from the same panel.
Technical architecture
The system consists of three applications: a customer site built with Next.js and React, a separate Next.js admin panel and a Fastify API running on Bun. MySQL with Drizzle ORM forms the data layer, and Zod handles validation. Authentication uses JWT; every record is bound to a tenant and a building, so a manager can only access the buildings they are authorised for. Notifications and scheduled jobs run in a separate worker process.
Areas where mistakes are not acceptable, such as financial calculations, allocation rules, meeting majorities and document rules, are covered by 86 test files, including a regression scenario that runs a full year from budget to handover. Data migration from the previous version is repeatable and was carried out with data verification.
Most visible text on the site is read from site settings rather than code, so service copy can be updated without a new release. Pages are rendered on the server, and sitemap, robots.txt and llms.txt endpoints are in place for technical SEO.
Integrations
- Iyzico: online service charge payments with signed callbacks, double idempotency and reconciliation; payments stay closed until credentials are configured.
- SMS and WhatsApp: a consent-based notification queue with Netgsm and WhatsApp Cloud adapters.
- Email: quote, notification and account emails via Nodemailer.
- Cloudinary: image and media management.
Outcome
GZL Temizlik is live at gzltemizlik.com. Customer requests are recorded with a quote number and PDF, apartment finances are kept separate and auditable per building, and residents can see their balance and documents without calling the office. Because the team uses the platform in its own daily work, new requirements come straight from the field; selling cleaning products online is on the roadmap as the next phase.