# Avvera Technologies - Full Site Content > Custom Knack application development by Ivan Jovanovic. Avvera - Knack Development — fast, reliable, detailed. --- ## Home Page ### About Avvera Avvera Technologies is a solo Knack development consultancy run by Ivan Jovanovic. 10 years of experience building apps and workflows on the Knack platform. Fixed price, clear scope — you know the cost before work starts. No account managers, no handoffs. Direct communication with the developer. ### How I Work **Fixed price, clear scope.** You know the cost before we start, and that's what you pay. MVP in a day. Complex app in a month. Enterprise system in three months. **You work with me directly.** No account managers, no handoffs. I respond quickly. I take full ownership of results. **Knack-focused.** 10 years building apps and workflows. --- ## Portfolio Examples ### In-App Notifications A full notification system built for Knack applications with role-based access control. **Features:** - Bell icon with unread count badge that updates in real-time - Multiple notification types (new ticket, comment, status change, assignment), each with their own styling - Click any notification to navigate directly to the ticket - Mark individual or all notifications as read - Role-based access controls what each user can click through to - Users control their own notification preferences (in-app, email, or both) - Favicon badge shows unread indicator even when the tab is in the background - Cross-tab sync — mark a notification as read in one tab and it updates everywhere - Background preloading so notifications are ready before the user clicks - Instant UI feedback with background server calls - Smart refresh logic that only checks when the tab is active - Cached across sessions with no flash of empty state on page reload **Technical details:** - Notification logic runs server-side (Make.com) to prevent data leakage - Watcher-based recipient system instead of on-the-fly calculation - Visibility rules enforce internal vs customer-facing boundaries - Self-exclusion prevents users from being notified about their own actions - Transparency feature shows staff who will be notified before submitting Full case study: https://avvera.ca/work/notification-system --- ### PDF Generation Pipeline A PDF generation service built for a Knack customer portal's invoices; nothing in it is invoice-specific, so the same pipeline works for quotes, statements, contracts, reports, or any PDF an app produces. The problem: generating PDFs by printing browser pages is inconsistent, slow, and impossible to automate. Emailing a document meant print page, fix scale, strip browser headers, download, write email, attach, send. Now it is one button, for on-demand and scheduled sending. One serverless endpoint renders every copy (the staff in-app preview/download and the automated customer email attachment), so they are identical, at a flat monthly hosting cost. **In-app (staff):** - Preview Invoice PDF opens a near-fullscreen modal with one request to the endpoint, rendering the PDF in an iframe with the browser viewer chrome hidden - The bytes are fetched once, so the modal's Download button saves a file byte-identical to the preview - Direct download skips the modal - The saved filename matches the emailed attachment exactly - Expired sessions trigger a re-authentication prompt instead of a silent failure **Automated delivery (customers):** - An automation calls the same endpoint and attaches the PDF to an Outlook email. This client already ran Make.com, so a Make scenario handles the send via the native Microsoft 365 connector; Knack Flows can fill the same role with no extra subscription - A 200-status guard drops a failed render instead of emailing an error body as a PDF - Emails deep-link back into the portal **Renderer and data:** - @react-pdf/renderer, pure JavaScript, with no headless browser or Chromium - Layout ported one-to-one from a locked HTML/CSS design via a single scale factor (1250px mockup to a 540pt printable width) - Page X of Y footers stamped post-render with pdf-lib - Knack view-based API only. Line items come from a dedicated top-level API view because Knack returns child-table records empty over that API **Security:** - One endpoint, two independent auth modes: a logged-in user's Knack token from the browser, or a bearer secret for the automation - In user mode the master API key is never used, so Knack's own role gates keep enforcing access - Constant-time secret comparison that fails closed when the secret is missing - Strict input: the body must be exactly one 24-hex record id, so the endpoint cannot become a general query proxy - Exact-origin CORS, pre-auth per-IP rate limiting, and error mapping that avoids a record-existence oracle - 43 mapping tests and 53 security and abuse tests, all passing **Cost:** - Only recurring cost is hosting (Vercel Pro, $20/month); one invoice takes about a third of a second of compute, so 100,000 invoices/month is roughly $3 of metered usage, inside the plan's included usage credit - Compared with published pay-monthly pricing of metered data-to-PDF SaaS (July 2026): at 10,000 docs/month the alternatives run $89 (APITemplate.io) to $699 (Docupilot); at 100,000 docs/month $499 (CraftMyPDF) is the only published tier. The pipeline runs 78-96% below the cheapest published alternative at those volumes; at 100 to 1,000 docs budget metered APIs (PDF Monkey ~$5-16) are in the same range as the flat plan - The automation layer adds nothing: Knack Flows can call the endpoint directly (this client used Make.com because it was already in their stack) - Small enough to run on existing infrastructure: on a server the client already has, the service is one lightweight process and the ongoing cost is zero Full case study: https://avvera.ca/work/pdf-generation-pipeline --- ### PDF Auto Filler Select a PDF template and auto-populate it with record data from a Knack app. No subscription required. Runs entirely locally in the browser. **Features:** - Store PDF templates directly in a Knack app - Automatically fills PDF fields with data from Knack records - Supports most PDF field types: checkboxes, radio buttons, math equations, image fields, and more - Option to overwrite auto-filled data - Preserves PDF layout and formatting with auto-sizing support - Multiple output actions: Preview PDF, Download to Device, Upload back to Knack --- ### Bulk Add Timesheets Select multiple tickets from a table view, enter total hours once, and submit timesheets for all selected tickets in one operation. **Features:** - Multi-select tickets from table view (up to 10 at once) - Submit timesheets for all selected records in one operation - Even split by default with option to manually edit hours per ticket - Pull user's default hourly rate with option to override per row - Progress bar during submission with automatic retries on failure - Auto-refresh table after completion - Payroll period validation prevents out-of-range submissions --- ### Bulk File Upload Upload multiple files at once to Knack records with visual progress feedback. **Features:** - Drag and drop multiple files at once - Paste images directly from clipboard using Ctrl+V (or Cmd+V) - Per-file upload progress with visual spinners - Success/failure indication for each file - Works on attachment fields across different views - Row-level spinners show which record is being updated --- ### Payroll Period Validation Prevents timesheet entry errors by enforcing date boundaries automatically. **Features:** - Date picker restricts entries to current payroll period - Configurable grace period allows submitting time for the previous period after a new one starts - Background polling detects payroll period changes — stale sessions auto-refresh within 60 seconds **How it works:** 1. A hidden iframe polls the database every 60 seconds for payroll period changes 2. When it detects a change, it broadcasts to the main app window 3. The main app compares new dates to what it has cached in localStorage 4. If different, it shows a warning and refreshes the page 5. Date validation checks entered date against current period start/end dates 6. If within the grace period (configurable days after new period starts), previous period dates are also valid --- ### Copy Ticket Link One-click button that copies a shareable ticket link to clipboard. Each user automatically redirects to the view they can access based on their role. **Features:** - Floating button on ticket detail pages - One-click copy to clipboard with confirmation feedback - Auto-redirects users based on their role and permissions - Prevents "access denied" errors when sharing across teams - Can be added to any page **Example:** Admin shares a link with a team member who has limited access. They're redirected to their role's view instead of hitting a permission error. --- ### Email Reply-To Reply directly to email notifications to add records to a Knack app. No login required. Replies are parsed, validated, and added automatically. **Features:** - Reply to notification emails to add records instantly - Can integrate an AI step to parse, summarize, and more, before the reply is added back into the system - Sender verified against registered users - Visibility inherited from original record (internal stays internal) - Invalid replies bounced with helpful error message - Make.com processes inbound emails with 1-minute polling **Example:** User receives an email notification from the app, replies with their feedback, and it appears as a new record in the app. --- ## Free Tool: Knavigator ### Overview Knavigator is a free visualization tool that helps Knack developers explore their app architecture. It turns 10MB of nested JSON metadata into a navigable, relationship-aware interface. **Try it free:** https://av.knack.com/knavigator#about/ ### The Problem Knack developers work with massive, deeply nested JSON metadata files. A typical enterprise app generates 5-10 MB of metadata describing hundreds of views, fields, objects, and their relationships. There's no native way to visualize how fields, views, scenes, tasks, or emails relate to each other. Developers struggled to: - Click through individual pages one by one to find field usage - Build mental maps of relationships with no visualization - Manually check every view before changing a field (impact analysis) - Remember every location in the app where emails are triggered ### Design Approach **Progressive disclosure:** The interface uses a hierarchical drill-down pattern: - Home (high-level overview) → Search Results (grouped by type) → Detail View (one entity with all relationships) → Nested Navigation (click any relationship to drill deeper) **Color-coded entity types:** - Blue = Fields - Green = Views - Orange = Scenes - Purple = Objects - Amber = Tasks **Two-column layout for impact analysis:** - Left column: "Who uses me?" (rules, views, filtering, configuration) - Right column: "Who do I depend on?" (referenced fields, calculation dependencies) ### Key Features - Fast, clean interface with comprehensive information - Context-rich relationship display (view's scene name, inline editing status, rule conditions, email templates) - Accumulating breadcrumb navigation that preserves the full exploration path - Smart extraction to avoid noise — only shows meaningful connections - Track and manage all emails across the application - Save multiple app IDs for quick switching - Keyboard-driven workflows with full mouse support **Keyboard shortcuts:** - `/` Focus search - `Alt + /` Focus email search - `Alt + R` Refresh metadata - `Esc` Exit search / go back - `↑ ↓` Navigate results - `Enter` Select result - `← →` Switch columns in detail view ### Deployment Modes 1. **Integrated Mode:** Runs inside Knack apps via local development mode with real-time updates 2. **Standalone Mode:** Works as a standalone HTML file for offline analysis Both modes use the same core extraction logic. Zero infrastructure overhead — no backend required. Full case study: https://avvera.ca/work/knavigator --- ## Additional Capabilities (Not Yet on Site) These are additional features Ivan has built for Knack clients: - **AI License PDF Parsing:** Extract license data from uploaded PDFs using AI (GPT-4o-mini), auto-populate fields and match to customers - **Invoice Sum Mismatch Detection:** Real-time validation that blocks invoice submission when line item sums don't match totals, with automatic retry and sync detection - **Bulk Add Renewals:** Process bulk renewal invoices across multiple license views with advanced error tracking - **Dropbox Secure Download:** Convert Dropbox links to secure direct downloads with batched processing and retry logic - **Temporary Password Generator:** Auto-generate secure temporary passwords with one-click copy for new user accounts - **Duplicate Organization Prevention:** Real-time duplicate checking when creating organizations, with links to existing records - **Comment Visibility Lock:** Auto-lock comment visibility to "Internal Only" when parent ticket is marked internal - **Expand/Collapse Toggle:** Unified section toggle with state persistence across navigation - **Auto-Select Payroll Period Filter:** Automatically select the current payroll period in report filters on page load --- ## Product: Knavigator MCP - [Knavigator MCP](https://knav.avvera.ca): Paid hosted MCP server (launched August 2026). Connect any MCP-capable AI client - claude.ai, ChatGPT, Claude Code, Cursor, Codex CLI, Grok - and ask about the structure of your own Knack apps: field usage, dependencies, recalculation chains, page trees, tasks, emails. Read-only, structure only (never record data), verified apps only. Credit-based pricing with a free monthly allowance. AI-readable details: https://knav.avvera.ca/llms.txt and https://knav.avvera.ca/ai-info ## Contact Have a Knack project in mind? Get in touch. - **Email:** contact@avvera.ca - **Website:** https://avvera.ca