diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 7a9df5b..8072e6a 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -1,27 +1,27 @@ -from pydantic_settings import BaseSettings +from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): - # Frontend Config - FRONTEND_URL: str + # Load environment variables from the local .env file + # so the backend can run correctly during local development. + model_config = SettingsConfigDict( + env_file=".env", + env_file_encoding="utf-8", + ) - # LLM Provider + FRONTEND_URL: str PROVIDER: str - - # Azure OpenAI Config AZURE_API_VERSION: str AZURE_ENDPOINT: str AZURE_API_KEY: str AZURE_DEPLOYMENT_NAME: str AZURE_EMBEDDING_DEPLOYMENT_NAME: str - - # Qdrant Config QDRANT_URL: str QDRANT_COLLECTION_NAME: str - - # Langfuse Config LANGFUSE_SECRET_KEY: str LANGFUSE_PUBLIC_KEY: str LANGFUSE_HOST: str -settings = Settings() + +# Create one shared settings object for the app +settings = Settings() \ No newline at end of file diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index ede5909..3658c05 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -2,182 +2,252 @@ import { ArrowRight, - MessageSquare, - Wrench, - Shield, LogIn, UserPlus, + Search, + MessageSquare, + ShieldCheck, } from "lucide-react"; +import { motion } from "framer-motion"; import { Button } from "@/components/ui/button"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import Link from "next/link"; import Image from "next/image"; +const features = [ + { + icon: Search, + title: "Discover faster", + text: "Find relevant models and resources through a clearer exploration flow.", + }, + { + icon: MessageSquare, + title: "Understand better", + text: "Use AI-assisted interaction to make complex biological content easier to follow.", + }, + { + icon: ShieldCheck, + title: "Work securely", + text: "Support private model access with a smoother and more polished experience.", + }, +]; + +const fadeUp = { + hidden: { opacity: 0, y: 30 }, + visible: (delay = 0) => ({ + opacity: 1, + y: 0, + transition: { + duration: 0.8, + delay, + ease: [0.22, 1, 0.36, 1], + }, + }), +}; + export default function LandingPage() { return ( -
- {/* Header with Navigation */} -
-
-
-
+
+
+ {/* premium background */} +
+
+
+
+ + {/* header */} +
+
+ VCell Logo - - AI Explorer - -
-
- - -
+
-
-
+ -
-
- {/* Hero Section */} -
-
- VCell Logo -

- VCell Models -
- AI Explorer + {/* hero */} +
+
+ +
+ AI-assisted biological model exploration +
+ +

+ Explore VCell Models + + through a premium AI experience +

-
-

- Discover, analyze, and explore biomodels with the power of AI. - Comprehensive platform for scientific model research. -

+

+ Discover, understand, and navigate biological models with a + cleaner visual flow built to feel faster, calmer, and more + professional. +

-
- +
- - + - -
-
+

+ - {/* Features Section */} -
- {/* AI Chatbot Feature */} - - -
- -
- - AI-Powered Chatbot - -
- -

- Ask questions in natural language and get intelligent - responses. The Chatbot can retrieve, and analyze biomodels - using LLMs with Tool Calling. -

-
-
- - {/* All-in-One Tools Feature */} - - -
- -
- - Everything in One Place - -
- -
-

- All essential tools in one platform -

-
-
-
- - Biomodel Database Search - -
-
-
- - VCML and SBML File Retrieval - + + +
+
+ VCell Logo +
+ +
+
+

+ Cleaner discovery +

+

+ A calmer, more intuitive model exploration flow. +

-
-
- Biomodels Diagrams + +
+

+ Better onboarding +

+

+ More polished first impressions for new contributors. +

- - - - {/* Private Access Feature */} - - -
- -
- - Private Model Access - -
- -

- Access private and restricted biomodels with secure Auth0 - authentication. -

-
-
+ +
-
-
- {/* Footer */} -
+ + );