Skip to content

memosapp/website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 Memos - Official Website

The official landing page for Memos, an AI-powered chat history management system with intelligent semantic search capabilities.

🌐 About This Website

This is a modern, responsive landing page built with Next.js 15 that showcases the Memos project - a revolutionary chat history storage and management system that combines traditional keyword search with AI-powered semantic similarity for intelligent conversational data retrieval.

✨ Website Features

🎨 Design & UI

  • Clean, Minimal Design - Professional landing page with modern aesthetics
  • Responsive Layout - Mobile-first design that works on all devices
  • Dark Mode Support - Automatic theme switching based on user preference
  • Gradient Backgrounds - Beautiful visual effects with CSS gradients
  • Smooth Animations - Subtle hover effects and transitions

🌍 Internationalization (i18n)

  • Professional i18n Setup - Built with next-intl for scalable multilingual support
  • Multi-Language Support - English and Chinese (Simplified) with easy extensibility
  • SEO-Friendly URLs - Clean URLs with locale prefixes (/en, /zh)
  • Dropdown Language Switcher - Professional dropdown menu with flags and language names
  • Static Site Generation - Optimized SSG for all locales with generateStaticParams
  • Type-Safe Translations - Full TypeScript support with structured message files
  • Advanced Routing - Centralized routing configuration with next-intl navigation APIs

πŸ“‹ Page Sections

  • Navigation Header - Logo, dropdown language switcher, and GitHub link
  • Hero Section - Compelling headline with primary call-to-action
  • Features Grid - Three key features of the Memos system:
    • πŸ” Hybrid Search (keyword + semantic)
    • πŸ€– AI-Powered (Google Gemini embeddings)
    • ⚑ Real-time capabilities
  • Footer - Clean footer with copyright information

🎯 User Experience

  • Fast loading times with Next.js optimization
  • Clean typography using Geist fonts
  • Intuitive navigation and layout
  • Professional color scheme with consistent branding

πŸ› οΈ Tech Stack

  • Framework: Next.js 15.4.2 with React 19
  • Internationalization: next-intl 4.3.4 with official App Router support
  • Styling: Tailwind CSS 4 with custom design tokens
  • UI Components: Radix UI primitives (dropdown menu, button)
  • Icons: Lucide React for interface icons
  • Typography: Geist Sans and Geist Mono fonts
  • Development: TypeScript with ESLint and path mapping

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Installation

  1. Clone the repository

    git clone <repository-url>
    cd website
  2. Install dependencies

    pnpm install
    # or
    npm install
  3. Start the development server

    pnpm dev
    # or
    npm run dev
  4. Access the website

    Navigate to one of the following URLs:

Available Scripts

  • pnpm dev - Start development server with Turbopack
  • pnpm build - Build the application for production
  • pnpm start - Start the production server
  • pnpm lint - Run ESLint for code quality

πŸ“ Project Structure

website/
β”œβ”€β”€ messages/                   # Translation files
β”‚   β”œβ”€β”€ en.json                # English translations
β”‚   └── zh.json                # Chinese translations
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   └── [locale]/          # Next.js 15 app directory with i18n routing
β”‚   β”‚       β”œβ”€β”€ layout.tsx     # Root layout with locale support
β”‚   β”‚       β”œβ”€β”€ page.tsx       # Main landing page component
β”‚   β”‚       β”œβ”€β”€ not-found.tsx  # Custom 404 page
β”‚   β”‚       └── globals.css    # Global styles & Tailwind CSS
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── ui/                # UI component library
β”‚   β”‚       β”œβ”€β”€ button.tsx     # Button component with variants
β”‚   β”‚       β”œβ”€β”€ dropdown-menu.tsx # Dropdown menu components
β”‚   β”‚       └── language-dropdown.tsx # Language switcher dropdown
β”‚   β”œβ”€β”€ i18n/                  # Internationalization configuration
β”‚   β”‚   β”œβ”€β”€ routing.ts         # Routing configuration
β”‚   β”‚   β”œβ”€β”€ navigation.ts      # Navigation API wrappers
β”‚   β”‚   └── request.ts         # Server-side i18n config
β”‚   β”œβ”€β”€ lib/                   # Utility libraries
β”‚   β”‚   └── utils.ts          # Utility functions (cn helper)
β”‚   └── middleware.ts          # Next.js middleware for locale detection
β”œβ”€β”€ public/                    # Static assets
β”œβ”€β”€ package.json              # Dependencies and scripts
β”œβ”€β”€ next.config.ts            # Next.js configuration with next-intl
β”œβ”€β”€ tailwind.config.js        # Tailwind CSS configuration
β”œβ”€β”€ tsconfig.json            # TypeScript configuration
└── README.md                # This file

πŸ“ Recent Changes

Latest Updates

  • βœ… Official next-intl Implementation - Professional i18n setup following official documentation
  • βœ… Structured Message Files - JSON-based translation management in messages/ folder
  • βœ… Advanced Routing - Centralized routing configuration with routing.ts
  • βœ… Navigation APIs - Type-safe navigation wrappers with locale awareness
  • βœ… Static Site Generation - Optimized SSG with generateStaticParams and setRequestLocale
  • βœ… Professional Dropdown - Enhanced language switcher with next-intl navigation
  • βœ… Server Components - Using getTranslations for optimal performance
  • βœ… Middleware Integration - Automatic locale detection and routing
  • βœ… TypeScript Support - Full type safety with path mapping to src/ folder

Architecture Improvements

  • src/ Folder Structure - Clean separation of source code
  • Type-Safe Translations - Structured message keys with IntelliSense
  • Centralized Configuration - Single source of truth for routing and locales
  • Performance Optimized - Static rendering with locale-aware navigation
  • Scalable Design - Easy addition of new languages and routes

🌍 Internationalization Details

Supported Languages

  • English (en) - Default language with full content
  • Chinese Simplified (zh) - Complete translation available

Advanced Features

  • URL-based Routing - Clean URLs with locale prefixes (/en, /zh)
  • Professional Dropdown - Language switcher with country flags and next-intl navigation
  • Static Site Generation - Pre-rendered pages for all locales
  • Type-Safe Navigation - Locale-aware Link, redirect, useRouter, and usePathname
  • Automatic Locale Detection - Middleware handles browser language preferences
  • Fallback Support - Graceful fallback to default locale

Translation Architecture

The application uses next-intl's structured approach:

  1. Message Files - JSON files in messages/ folder
  2. Routing Configuration - Centralized in src/i18n/routing.ts
  3. Navigation APIs - Wrapped Next.js navigation in src/i18n/navigation.ts
  4. Request Configuration - Server-side setup in src/i18n/request.ts
  5. Middleware - Automatic locale detection in src/middleware.ts

Current Translations

The website includes structured translations for:

  • Navigation elements and GitHub links
  • Complete hero section (title, subtitle, description)
  • Feature cards with detailed descriptions
  • Call-to-action buttons and footer content
  • Error pages (404 not found)

Adding New Languages

To add a new language (e.g., French):

  1. Add message file

    # Create messages/fr.json with translations
    touch messages/fr.json
  2. Update routing configuration

    // src/i18n/routing.ts
    export const routing = defineRouting({
      locales: ["en", "zh", "fr"],
      defaultLocale: "en",
    });
  3. Update language dropdown

    // src/components/ui/language-dropdown.tsx
    const languages = {
      en: { label: "English", flag: "πŸ‡ΊπŸ‡Έ" },
      zh: { label: "δΈ­ζ–‡", flag: "πŸ‡¨πŸ‡³" },
      fr: { label: "FranΓ§ais", flag: "πŸ‡«πŸ‡·" },
    };
  4. Create translations

    // messages/fr.json
    {
      "HomePage": {
        "title": "Stockage Intelligent pour les DonnΓ©es Conversationnelles",
        "description": "..."
      }
    }

The system will automatically:

  • Generate static pages for the new locale
  • Handle routing and navigation
  • Provide type-safe translation functions
  • Support locale detection and switching

🎨 Design Tokens

The website uses a carefully crafted design system built on top of Tailwind CSS:

  • Colors: Custom color palette with semantic naming
  • Typography: Geist font family for modern readability
  • Spacing: Consistent spacing scale throughout
  • Shadows: Subtle shadows for depth and hierarchy
  • Borders: Rounded corners for friendly, modern feel

🌐 About Memos Project

Memos is a full-stack application designed to revolutionize how we store and retrieve conversational data. It combines traditional keyword search with AI-powered semantic similarity, providing an intelligent system for managing chat histories, conversations, and memory-based interactions.

Key Technologies in Memos

  • Backend: Node.js + Express.js with TypeScript
  • Database: Supabase PostgreSQL with pgvector extension
  • AI: Google Gemini AI (gemini-embedding-001)
  • Frontend: Next.js 15+ with React 19
  • MCP: Model Context Protocol for AI tool integration

πŸš€ Deployment

Recommended Deployment Platforms

  1. Vercel (Recommended)

    # Deploy to Vercel with automatic i18n support
    npx vercel --prod
  2. Netlify

    # Build and deploy
    pnpm build
    # Upload .next folder to Netlify
  3. Docker

    FROM node:18-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    RUN npm run build
    EXPOSE 3000
    CMD ["npm", "start"]

🀝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes following the established patterns
  4. Update translations in messages/ folder if you modify text content
  5. Test all language routes (/en, /zh)
  6. Update this README for any structural changes
  7. Commit your changes (git commit -m 'Add some amazing feature')
  8. Push to the branch (git push origin feature/amazing-feature)
  9. Open a Pull Request

Translation Contributions

  • Follow the established JSON structure in messages/ folder
  • Ensure all translation keys are present in all language files
  • Test the dropdown language switcher functionality
  • Verify static site generation works for new locales

Development Guidelines

  • Use getTranslations for server components
  • Use useTranslations for client components
  • Always add setRequestLocale(locale) in pages and layouts for static rendering
  • Use next-intl's navigation APIs (Link, useRouter, etc.) for locale-aware routing

πŸ“„ License

This project is licensed under the ISC License - see the main Memos project for details.

πŸ”— Links


Built with ❀️ using Next.js 15 and next-intl for the global Memos community

Releases

No releases published

Packages

No packages published