
<strong>Reports Dashboard</strong>: Interactive, responsive summaries of billable time allocations and user productivity, with date-range and project/user filters.
Ndizi Project Management is a professional, native WordPress system built for freelancers, designers, and small agencies to coordinate client work, manage tasks, record project hours, and generate invoices—all inside a single WordPress environment.
Source & development: The full, human-readable source (including the uncompressed src/ for every compiled asset) lives on GitHub at github.com/georgestephanis/plugins.
Decoupling high-frequency data from standard WordPress posts storage, Ndizi records all time logs in a dedicated custom SQL table (wp_ndizi_time_entries). This architectural choice keeps your database queries fast and completely avoids wp_posts and wp_postmeta database inflation.
?desc= URL parameter to pre-fill the description input (used by the Chrome extension). Requests browser notification permission and fires a push notification when the active timer exceeds 8 hours.[ndizi_client_portal] shortcode or the Ndizi Client Portal block in the block editor. Clients can review projects, verify tasks, download invoices, and submit new requests.approved and approved_by fields. Once approved, entries cannot be edited or deleted through normal write paths — only the approval status itself can be updated. Approval-only updates bypass lock-date enforcement./wp-json/ndizi/v1/calendar/ical.ndizi_time_off posts with start/end dates, type, and approval status.chrome-extension/) connects to the site’s REST API to start/stop timers, browse projects and tasks, and open the standalone tracker — from any browser tab./wp-json/ndizi/v1 let desktop widgets or mobile timekeepers start, stop, log, list, edit, and delete timer entries remotely.wp ndizi time start, wp ndizi time stop, and wp ndizi time status. Accepts project/task names or IDs, user login or ID, description, and billable flag.This plugin can connect to third-party services, but only after a site administrator explicitly configures and enables the relevant integration. Out of the box, with no credentials entered and the optional features left at their defaults, the plugin makes no requests to any external service. Each integration below is opt-in: it stays dormant until you supply its API keys / credentials (or, for Google Fonts, tick its checkbox) on the Ndizi PM Settings screen.
Used by the optional “Google Calendar Sync” module to mirror task due dates and project milestones to your Google Calendar. It is only active after an administrator enters Google OAuth credentials and connects an account on the Settings screen.
When a task with a due date is created, updated, or deleted, the plugin sends that task’s title, description, and start/end date-times to the Google Calendar API (https://www.googleapis.com/calendar/v3/...) authenticated with the connected account’s access token. No data is sent until an account is connected, and nothing is sent for sites that never enable the integration.
Google’s terms and privacy policy: https://policies.google.com/terms and https://policies.google.com/privacy
Used to authenticate the Google Calendar integration above. When an administrator clicks “Connect to Google Calendar,” the plugin exchanges the authorization code, and later refreshes the access token, against Google’s OAuth token endpoint (https://oauth2.googleapis.com/token). The data sent is the OAuth client ID, client secret, and authorization/refresh token that the administrator configured. This only happens during the connect flow and subsequent token refreshes for a connected account.
Google’s terms and privacy policy: https://policies.google.com/terms and https://policies.google.com/privacy
Used by the optional “Invoicing & Billing” module to let clients pay invoices online. It is only active after an administrator enters Stripe API keys on the Settings screen.
When a client chooses to pay an invoice, the plugin creates a Stripe Checkout session by sending the invoice amount, currency, description, invoice ID, and success/cancel URLs to the Stripe API (https://api.stripe.com/v1/checkout/sessions), authenticated with the configured Stripe secret key. The plugin also receives Stripe webhook callbacks to mark invoices paid. No data is sent until Stripe keys are configured and a client initiates a payment.
Stripe’s terms and privacy policy: https://stripe.com/legal/ssa and https://stripe.com/privacy
The client portal, the standalone time tracker, and printable invoices can use the Inter and Outfit webfonts served by Google Fonts. This is off by default. When an administrator enables “Load Google Fonts” under Ndizi PM Settings Typography, the affected pages request stylesheets and font files from Google’s servers (https://fonts.googleapis.com and https://fonts.gstatic.com); as with any web request, this exposes the visitor’s IP address and user agent to Google. When the setting is disabled (the default), the plugin uses a web-safe system font stack and makes no requests to Google.
Google’s terms and privacy policy: https://policies.google.com/terms and https://policies.google.com/privacy