Skip to main content
Web ApplicationCompleted

Novadesk CRM: Operations Platform for Virtual Office and Shared Workspace Providers

A vertical CRM and back-office platform for virtual office, shared office, and ready office providers in Turkey, covering contracts, package billing, meeting room reservations, and KVKK-aware data handling in a single role-based workspace.

DeveloperMustafa Kürşad Başer
Started: Nov 2025Completed: Feb 2026
Novadesk CRM: Operations Platform for Virtual Office and Shared Workspace Providers

Novadesk CRM is built for a niche generic sales CRMs do not serve: companies that sell virtual office, shared office, and ready office services. The interesting work in that business starts after the deal closes. Contracts get drafted, PDFs get generated and re-generated, packages get assigned, monthly meeting room hours get tracked, payments get reconciled, and renewals get reminded. Novadesk CRM puts all of that in one place with role-aware views, so a secretary, an accountant, and an admin each see exactly what they should.

The audience is concrete: virtual office and address service providers in Turkey, shared office and coworking operators billing by package and meeting hours, ready office and serviced office businesses managing multi-room inventories, and accounting offices, law firms, and consultancies that have to track customer contracts, mailing addresses, and meeting room usage in one place.

Contracts and documents:

  • A single guided wizard captures the customer, authorized persons, package, pricing, and term, writes everything to the database, and triggers PDF generation in one step
  • A set of service packages out of the box (Virtual Office Basic and Premium, Shared Office, multiple Ready Office tiers, and a Meeting Room only plan), each with its own pricing model, monthly meeting hour allocation, and contract template
  • A serverless function renders the right contract template per package on insert and update, with versioned PDFs, iframe preview, and signed download URLs
  • A bulk PDF regeneration queue reissues PDFs across the customer base when templates change, with job state (pending, processing, completed, failed) so a stale template never reaches a customer

Meeting room reservations:

  • Reservations go through a database-side procedure that locks the time window, checks for overlaps, and verifies remaining hours in a single transaction
  • Each package ships with a monthly hour quota tracked live through a database view, with a separate ledger for purchased extra hours
  • Reservation creation, update, and cancellation events fan out as Turkish-language emails through templated content per event type
  • A weekly calendar view with quick filters and CSV export for monthly reporting

Companies, people, and cargo:

  • Companies carry tax office, tax number (Vergi No), and assigned phone allocations, along with authorized-person records that store TC Kimlik, phone, and email
  • Incoming mail is logged with arrival and delivery status, dates, free-text notes, and the operator who handled it, giving customers a clear delivery audit trail
  • A data table drives column filters, sort, pagination, and ready-made views like "expiring soon", "active", and "inactive", with CSV export for any filtered set

Finance and billing:

  • Each contract tracks contract amount, paid amount, and outstanding balance, with a payment history table that syncs back to the contract on every entry
  • System-level settings control the VAT rate and inclusive vs exclusive pricing, and all displayed totals recalculate accordingly
  • A revenue dashboard surfaces total contract value, collected amount, outstanding receivables, monthly revenue trend, package mix, and contract status distribution

Roles, permissions, and KVKK:

  • Three first-class roles: Admin sees everything, Muhasebeci (accountant) sees only the companies they manage, and Sekreter (secretary) handles contacts and reservations with financial fields hidden
  • Row Level Security policies plus dedicated finance-free database views make sure the secretary role cannot see financial columns even if the UI is bypassed
  • Customer contact data, TC Kimlik, and contract attachments live behind RLS, signed cloud storage URLs, and a hardened set of security headers at the edge

Reminders and automation:

  • Scheduled jobs flag contracts that are about to expire and send reminder emails through the contract reminder pipeline
  • Contract status transitions across active, inactive, expiring, expired, closure, and address-transfer states based on dates and operator actions, with no manual cleanup
  • Customers approaching their monthly meeting hour ceiling are surfaced on the dashboard and triggered for outreach

Stack and operations:

  • Next.js with the App Router and React, TypeScript end to end
  • Supabase Postgres with versioned SQL migrations and a paired rollback file for each, plus Supabase Auth, Storage, and Edge Functions
  • Tailwind CSS with shadcn/ui on top of Radix primitives, TanStack Table and TanStack Query for data, React Hook Form with Zod for validation
  • Netlify with the Next.js plugin, automated deploys from GitHub, security headers and a secrets-scan allowlist baked into the deploy config
  • A dedicated serverless function renders the per-package contract template into a branded PDF, decoupling rendering from the request lifecycle so the UI stays snappy even on bulk operations
  • Job tables for PDF regeneration, a system settings surface for VAT and SMTP, and a contract notes and attachments layer that gives operators an audit trail per customer

The system replaces the usual stack (spreadsheets, Word templates, scattered inboxes) with a role-aware web app that respects KVKK and Turkish accounting realities.

Tech Stack

Next.js 16React 19TypeScriptSupabase PostgresSupabase AuthSupabase StorageSupabase Edge FunctionsRow Level SecurityTailwind CSSshadcn/uiRadix UITanStack TableTanStack QueryReact Hook FormZodRechartsNodemailerpg_cronNetlify