Files
altstack-data/data/schema/types.ts
2026-02-25 22:36:27 +05:30

67 lines
1.9 KiB
TypeScript

export interface DeploymentConfig {
image: string;
port: number;
env?: { key: string; value: string }[];
volumes?: string[];
command?: string;
local_path?: string;
type?: 'docker-compose' | 'dockerfile';
}
export interface Tool {
slug: string;
name: string;
category: string;
is_open_source: boolean;
description: string;
website: string;
github_repo?: string;
stars?: number;
description_long?: string;
pros?: string[];
cons?: string[];
min_cost?: number;
avg_monthly_cost?: number; // Estimated self-hosting or SaaS cost
pricing_model?: 'Free' | 'Freemium' | 'Paid' | 'Paid (Subscription)' | 'Paid (One-time)';
has_free_trial?: boolean;
self_hostable?: boolean;
license?: string;
language?: string;
tags?: string[];
alternatives?: string[];
last_commit?: string;
logo_url?: string;
affiliate_url?: string;
referral_url?: string; // New field for specific referral links
deployment?: DeploymentConfig;
hardware_req?: string; // e.g., "16GB VRAM", "CPU only", "Cloud API"
hosting_type?: 'cloud' | 'self-hosted' | 'both'; // How the tool/model is accessed
ai_metadata?: {
vram_inference_gb?: number; // Recommended VRAM for inference (FP16/BF16)
context_window_tokens?: number; // Max sequence length
parameters_total_b?: number; // Billion parameters
parameters_active_b?: number; // For MoE models
is_multimodal?: boolean;
};
}
export interface Stack {
id: string;
name: string;
emoji: string;
tagline: string;
description: string;
monthlySaved: number;
// Ordered list of tools with specific roles in this stack
tools: {
category: string; // e.g. "The Database", "Authentication"
toolSlug: string;
}[];
// SEO
seo_title?: string;
seo_description?: string;
}