appfolio-performance-tuning

Featured

Optimize AppFolio API performance with caching and batch operations. Trigger: "appfolio performance".

AI & Automation 2,266 stars 315 forks Updated today MIT

Install

View on GitHub

Quality Score: 99/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# AppFolio Performance Tuning ## Overview AppFolio's property management API handles bulk tenant queries, property portfolio pagination, and work order batch processing. Large portfolios with thousands of units generate heavy read traffic on listing endpoints. Optimizing cache lifetimes for slow-changing property data, batching work order updates, and pooling HTTP connections reduces API call volume by 60-80% and cuts dashboard load times from seconds to sub-second. ## Caching Strategy ```typescript const cache = new Map<string, { data: any; expiry: number }>(); const TTL = { properties: 300_000, tenants: 120_000, units: 300_000, workOrders: 60_000 }; async function cached(key: string, ttlKey: keyof typeof TTL, fn: () => Promise<any>) { const entry = cache.get(key); if (entry && entry.expiry > Date.now()) return entry.data; const data = await fn(); cache.set(key, { data, expiry: Date.now() + TTL[ttlKey] }); return data; } ``` ## Batch Operations ```typescript async function batchWorkOrders(client: any, ids: string[], batchSize = 25) { const results = []; for (let i = 0; i < ids.length; i += batchSize) { const batch = ids.slice(i, i + batchSize); const res = await Promise.all(batch.map(id => client.http.get(`/work_orders/${id}`))); results.push(...res.map(r => r.data)); if (i + batchSize < ids.length) await new Promise(r => setTimeout(r, 200)); } return results; } ``` ## Connection Pooling ```typescript import { Agent } from 'https'; con...

Details

Author
jeremylongshore
Repository
jeremylongshore/claude-code-plugins-plus-skills
Created
7 months ago
Last Updated
today
Language
Python
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category