Reading Time: 2 minutes

🌍 Language Mode: Single vs. Multi-Language Support

  • Added configurable language mode via AppConfig (single or dual language)
  • Adapted all key views:
    • Conversations
    • Translator
    • Sentences & Words
    • Lu Pronunciation Coach
  • Introduced language toggle flag in conversation view (visible in multi-language mode)

📚 Smarter Dictionary

  • Now shows:
    • Word meaning
    • Explanation of usage in context
    • Translation (if multi-language enabled)
    • Example sentences
  • Added caching layer for faster reloading
  • Improved Markdown-to-HTML rendering for:
    • Line breaks
    • Numbered lists

🧩 Multitenancy & White Labeling Foundations

  • Introduced AppConfig system to enable per-app customization
  • Fully functional multi-tenant support:
    • App-specific routing via subdomain or param
    • Separate login and registration flows per app
    • UI and language behavior controlled by app config
  • Added alias support to allow multiple app names per configuration

Multi-App User Authentication

LingoStand now supports multiple applications with shared infrastructure but separate user contexts. The system has been modified to allow users to register and log in with the same credentials (email, login) across different applications identified by appConfigId.

Key Features

  • Users can register with the same email/login across different applications
  • Each application has its own isolated user management context
  • User uniqueness is enforced per application, not globally
  • Authentication is scoped to the specific application context

Authentication Model

  • User credentials (email and login) are now unique per appConfigId rather than globally
  • Each User entity is linked to a Profile entity which references the AppConfig entity
  • Authentication and registration flows require an appConfigId parameter
  • The system checks uniqueness of credentials at the application level through Profile -> AppConfig associations

Database Schema Changes

The following changes were made to the database schema:

  • Removed unique constraints from jhi_user.login and jhi_user.email columns
  • Dropped unique indexes idx_user_login and idx_user_email from the jhi_user table
  • Uniqueness is now enforced at the application layer based on the appConfigId associated with the user’s profile

These changes allow the same email or login to exist multiple times in the database, as long as they belong to different application contexts.

Migration Notes

For existing deployments upgrading to this multi-app model:

  1. Run the Liquibase migration to remove unique constraints on user login/email
  2. All existing users will be associated with their current application context
  3. No manual data migration is required for existing users
  4. The DomainUserDetailsService now extracts appConfigId from request URIs during authentication

🔁 Backend PR

  • 🔗 PR 1176
  • 📁 Files changed: 66
  • ➕➖ Lines: +2,500 / −88

🖥️ Frontend PR

  • PR 874
  • 📁 Files changed: 33
  • ➕➖ Lines: +573 / −263