feat(frontend): enhance API credentials system and build configuration

Add real API support in demo mode with credential checking, implement build-time version injection from package.json, and refactor update checking with 24-hour caching. Migrate landing page from Vue to Astro with comprehensive UI components including Hero, Features, Benefits, and Tech Stack sections. Update CI/CD workflow with expanded cache paths and security scanner version pinned.
This commit is contained in:
Tomas Dvorak
2026-02-10 16:25:57 +01:00
parent d27cf14110
commit b083dac3f0
95 changed files with 17610 additions and 2692 deletions
+23
View File
@@ -1,5 +1,7 @@
// Demo mode API interceptor to provide mock data instead of making real API calls
import { hasAnyCredentials, isBackendAvailable, isSearchAvailable } from './credentials';
// Check if demo mode is enabled via environment variable
export const isEnvDemoMode = (): boolean => {
const result = import.meta.env.VITE_DEMO_MODE === 'true';
@@ -13,6 +15,21 @@ export const isDemoMode = (): boolean => {
return isEnvDemoMode();
};
// Check if we should use real APIs even in demo mode
export const shouldUseRealAPIs = (): boolean => {
return hasAnyCredentials();
};
// Check if we should use real backend API
export const shouldUseRealBackend = (): boolean => {
return isBackendAvailable();
};
// Check if we should use real search APIs
export const shouldUseRealSearch = (): boolean => {
return isSearchAvailable();
};
// Clear demo mode from localStorage
export const clearDemoMode = (): void => {
localStorage.removeItem('demoMode');
@@ -181,6 +198,12 @@ const generateMockAIProviders = () => [
// Demo mode fetch interceptor
export const demoFetch = async (url: string, options?: RequestInit): Promise<Response> => {
// Check if we should use real APIs even in demo mode
if (shouldUseRealAPIs()) {
console.log('[Demo Mode] Real credentials detected, using real API for:', url);
return fetch(url, options);
}
if (!isDemoMode()) {
return fetch(url, options);
}