| |
| import { apps as appStoreApps } from "@midday/app-store"; |
|
|
| export interface WebsiteApp { |
| id: string; |
| name: string; |
| slug: string; |
| category: string; |
| active: boolean; |
| beta?: boolean; |
| short_description: string; |
| description: string | null; |
| features: string[]; |
| installUrl?: string; |
| } |
|
|
| |
| const appExtensions: Record< |
| string, |
| { slug: string; features: string[]; installUrl?: string } |
| > = { |
| gmail: { |
| slug: "gmail", |
| features: [ |
| "Continuous inbox monitoring", |
| "Automatic PDF extraction", |
| "Smart transaction matching", |
| "Secure OAuth authentication", |
| ], |
| }, |
| outlook: { |
| slug: "outlook", |
| features: [ |
| "Continuous inbox monitoring", |
| "Automatic PDF extraction", |
| "Smart transaction matching", |
| "Secure OAuth authentication", |
| ], |
| }, |
| slack: { |
| slug: "slack", |
| features: [ |
| "Real-time transaction notifications", |
| "Direct receipt upload from Slack", |
| "Smart document matching", |
| "One-click approve or decline", |
| ], |
| }, |
| whatsapp: { |
| slug: "whatsapp", |
| features: [ |
| "QR code setup - no app needed", |
| "Forward receipts on the go", |
| "Smart document matching", |
| "One-tap approve or decline", |
| ], |
| }, |
| xero: { |
| slug: "xero", |
| features: [ |
| "Manual transaction export", |
| "Receipt & invoice attachments", |
| "Smart categorization mapping", |
| "Faster book closing", |
| ], |
| }, |
| quickbooks: { |
| slug: "quickbooks", |
| features: [ |
| "Export as purchases and sales receipts", |
| "Automatic document attachment", |
| "Smart account mapping", |
| "Efficient bookkeeping", |
| ], |
| }, |
| fortnox: { |
| slug: "fortnox", |
| features: [ |
| "Export transactions as vouchers", |
| "Automatic attachments", |
| "Swedish BAS account mapping", |
| "Compliance-ready exports", |
| ], |
| }, |
| raycast: { |
| slug: "raycast", |
| features: [ |
| "Start/stop timers instantly", |
| "Project selection", |
| "Create new projects", |
| "Keyboard-first workflow", |
| ], |
| }, |
| "stripe-payments": { |
| slug: "stripe-payments", |
| features: [ |
| "Accept credit cards on invoices", |
| "Apple Pay & Google Pay support", |
| "Automatic status updates", |
| "Secure Stripe processing", |
| ], |
| }, |
| stripe: { |
| slug: "stripe", |
| features: [ |
| "Sync payments automatically", |
| "Revenue data import", |
| "Transaction matching", |
| "Real-time updates", |
| ], |
| }, |
| "midday-desktop": { |
| slug: "midday-desktop", |
| features: [ |
| "One-click access to finances", |
| "Track time from menu bar", |
| "Manage invoices", |
| "Native Mac experience", |
| ], |
| installUrl: "https://midday.ai/download", |
| }, |
| "google-drive": { |
| slug: "google-drive", |
| features: [ |
| "Automatic file sync", |
| "Document organization", |
| "Seamless backup", |
| "Easy file access", |
| ], |
| }, |
| dropbox: { |
| slug: "dropbox", |
| features: [ |
| "Automatic file sync", |
| "Document organization", |
| "Seamless backup", |
| "Easy file access", |
| ], |
| }, |
| polar: { |
| slug: "polar", |
| features: [ |
| "Sync subscription payments", |
| "Revenue tracking", |
| "Customer insights", |
| "Automated reconciliation", |
| ], |
| }, |
| deel: { |
| slug: "deel", |
| features: [ |
| "Sync contractor payments", |
| "Payroll integration", |
| "Compliance tracking", |
| "Global workforce support", |
| ], |
| }, |
| "e-invoice": { |
| slug: "e-invoice", |
| features: [ |
| "Peppol network support", |
| "European compliance", |
| "Send & receive e-invoices", |
| "Automated processing", |
| ], |
| }, |
| "cursor-mcp": { |
| slug: "cursor-mcp", |
| features: [ |
| "Financial context in your editor", |
| "Query transactions while coding", |
| "One-click install via deeplink", |
| "27 tools for financial data", |
| ], |
| installUrl: "https://midday.ai/mcp/cursor", |
| }, |
| "claude-mcp": { |
| slug: "claude-mcp", |
| features: [ |
| "Conversations with real numbers", |
| "Works with Claude Code & Desktop", |
| "Query invoices and reports", |
| "Granular permission controls", |
| ], |
| installUrl: "https://midday.ai/mcp/claude", |
| }, |
| "perplexity-mcp": { |
| slug: "perplexity-mcp", |
| features: [ |
| "AI search with your real data", |
| "Works with Perplexity Mac app", |
| "Query transactions and reports", |
| "Natural language questions", |
| ], |
| installUrl: "https://midday.ai/mcp/perplexity", |
| }, |
| "raycast-mcp": { |
| slug: "raycast-mcp", |
| features: [ |
| "Financial tools at your fingertips", |
| "Keyboard-first access", |
| "One-click install via deeplink", |
| "@-mention in Raycast AI", |
| ], |
| installUrl: "https://midday.ai/mcp/raycast", |
| }, |
| "chatgpt-mcp": { |
| slug: "chatgpt-mcp", |
| features: [ |
| "Build with the MCP SDK", |
| "Custom integrations", |
| "Programmatic data access", |
| "TypeScript support", |
| ], |
| installUrl: "https://midday.ai/mcp/chatgpt", |
| }, |
| "opencode-mcp": { |
| slug: "opencode-mcp", |
| features: [ |
| "Track time for clients while coding", |
| "Start/stop timers from terminal", |
| "Query finances from any editor", |
| "Open source AI coding agent", |
| ], |
| installUrl: "https://midday.ai/mcp/opencode", |
| }, |
| "zapier-mcp": { |
| slug: "zapier-mcp", |
| features: [ |
| "Connect to 7,000+ apps", |
| "Automate reports and alerts", |
| "No-code workflow builder", |
| "Sync data across tools", |
| ], |
| installUrl: "https://midday.ai/mcp/zapier", |
| }, |
| "copilot-mcp": { |
| slug: "copilot-mcp", |
| features: [ |
| "Query data from Microsoft 365", |
| "Works with Word, Excel, Outlook", |
| "Build custom Copilot agents", |
| "Enterprise-ready integration", |
| ], |
| installUrl: "https://midday.ai/mcp/copilot", |
| }, |
| "n8n-mcp": { |
| slug: "n8n-mcp", |
| features: [ |
| "Build automated financial workflows", |
| "AI agents with Midday tools", |
| "Connect to 400+ apps via n8n", |
| "MCP Client & Server support", |
| ], |
| installUrl: "https://midday.ai/mcp/n8n", |
| }, |
| "make-mcp": { |
| slug: "make-mcp", |
| features: [ |
| "Visual scenario builder", |
| "Connect to 1,500+ apps", |
| "MCP Client module support", |
| "No-code workflow automation", |
| ], |
| installUrl: "https://midday.ai/mcp/make", |
| }, |
| }; |
|
|
| |
| export const apps: WebsiteApp[] = appStoreApps |
| .map((app): WebsiteApp | null => { |
| const extension = appExtensions[app.id]; |
| if (!extension) return null; |
|
|
| const appWithCategory = app as { |
| category?: string; |
| beta?: boolean; |
| installUrl?: string; |
| }; |
|
|
| return { |
| id: app.id, |
| name: app.name, |
| slug: extension.slug, |
| category: appWithCategory.category || "Other", |
| active: app.active, |
| beta: appWithCategory.beta, |
| short_description: app.short_description || "", |
| description: app.description || null, |
| features: extension.features, |
| installUrl: extension.installUrl || appWithCategory.installUrl, |
| }; |
| }) |
| .filter((app): app is WebsiteApp => app !== null); |
|
|
| export const categories = [ |
| { id: "all", name: "All" }, |
| { id: "capture", name: "Capture" }, |
| { id: "accounting", name: "Accounting" }, |
| { id: "payments", name: "Payments" }, |
| { id: "storage", name: "Storage" }, |
| { id: "apps", name: "Apps" }, |
| { id: "ai-automation", name: "AI & Automation" }, |
| ]; |
|
|
| export function getAppBySlug(slug: string): WebsiteApp | undefined { |
| return apps.find((app) => app.slug === slug); |
| } |
|
|
| export function getAppsByCategory(category: string): WebsiteApp[] { |
| if (category === "all") return apps; |
| return apps.filter((app) => app.category === category); |
| } |
|
|
| export function getCategoryName(categoryId: string): string { |
| const category = categories.find((c) => c.id === categoryId); |
| return category?.name || categoryId; |
| } |
|
|
| export function getAllSlugs(): string[] { |
| return apps.map((app) => app.slug); |
| } |
|
|