feat: Bulk Import Workflow | Multi-Language Support | Feature Toggles UI#309
Merged
Conversation
|
@0xElyte Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #269
Closes #260
Closes #254
feat: Bulk Import, Multi-language Support & Feature Toggles
Summary
Three interconnected platform capabilities delivered in a single branch: a CSV/JSON bulk data importer, a full internationalization (i18n) system with RTL support, and a feature flag admin panel with percentage rollouts and targeting rules.
Changes
1. Bulk Import Workflow
Enables admins and instructors to import large datasets (courses, users, questions) from CSV or JSON files without writing code.
ImportJob,ImportRow,FieldMapping,ValidationResult)BulkImporteradded to shared component barrel2. Multi-language Support (i18n)
Full internationalization infrastructure supporting 4 languages at launch (EN, ES, AR, FR) with correct LTR/RTL rendering server-side to avoid hydration flash.
src/lib/i18n/config.ts—i18nextsingleton; static locale loading for EN/ES/AR/FR;getHtmlDir()for RTL detection;loadLocale()for dynamic importsrc/lib/i18n/index.ts— Public barrel; re-exportsuseTranslationandTransfromreact-i18nextsrc/locales/fr.json— French translations (3rd full locale alongside ES and AR)i18n:languagecookie server-side; sets<html lang dir>before hydration<I18nextProvider>; passes SSR locale to<I18nProvider>document.documentElement.dirt();DynamicLanguageSwitcheradded to desktop and mobile menusi18next ^24.0.0andreact-i18next ^15.0.03. Feature Toggles UI
Admin panel for managing feature flags with percentage rollouts and attribute-based targeting — no code deploys needed to toggle features.
FeatureFlag,TargetingRule,AuditEntry,RolloutStrategy); in-processflagStoreMap;evaluateFlag()with deterministic hash bucketing for percentage rollouts;auditLogcapped at 500 entriesuseFeatureFlag(id, context)anduseAllFeatureFlags()React hooksGET(list all),POST(create); rate-limitedGET,PUT(update/toggle),DELETE; audit entry on every mutationGET ?id=&<context>— evaluates a flag for an arbitrary user contextGET ?flagId=&limit=&offset=— paginated audit logTesting
FeatureFlagProviderandQRCodeadditions resolved during cherry-pick rebaseChecklist
dark:variants)x-admin-userheader used as audit actor (consistent with existing auth pattern)