mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 04:09:06 +00:00
* docker-compose for production frontend * fix: Remove external Redis port mapping for Coolify compatibility Redis should only be accessible within the internal Docker network in Coolify deployments to avoid port conflicts with other applications. * fix: Remove external port mapping for web service in Coolify Coolify handles port exposure through its proxy (Traefik), so services should not expose ports directly in the docker-compose file. * server side client envs * missing vars * nextjs experimental * fix claude 'fix' * remove build env vars compose * docker * remove ports for coolify * review * cleanup --------- Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import {
|
|
FEATURE_BROWSE_ENV_NAME,
|
|
FEATURE_PRIVACY_ENV_NAME,
|
|
FEATURE_REQUIRE_LOGIN_ENV_NAME,
|
|
FEATURE_ROOMS_ENV_NAME,
|
|
FEATURE_SEND_TO_ZULIP_ENV_NAME,
|
|
} from "./clientEnv";
|
|
|
|
export const FEATURES = [
|
|
"requireLogin",
|
|
"privacy",
|
|
"browse",
|
|
"sendToZulip",
|
|
"rooms",
|
|
] as const;
|
|
|
|
export type FeatureName = (typeof FEATURES)[number];
|
|
|
|
export type Features = Readonly<Record<FeatureName, boolean>>;
|
|
|
|
export const DEFAULT_FEATURES: Features = {
|
|
requireLogin: true,
|
|
privacy: true,
|
|
browse: true,
|
|
sendToZulip: true,
|
|
rooms: true,
|
|
} as const;
|
|
|
|
function parseBooleanEnv(
|
|
value: string | undefined,
|
|
defaultValue: boolean = false,
|
|
): boolean {
|
|
if (!value) return defaultValue;
|
|
return value.toLowerCase() === "true";
|
|
}
|
|
|
|
const features: Features = {
|
|
requireLogin: parseBooleanEnv(
|
|
process.env[FEATURE_REQUIRE_LOGIN_ENV_NAME],
|
|
DEFAULT_FEATURES.requireLogin,
|
|
),
|
|
privacy: parseBooleanEnv(
|
|
process.env[FEATURE_PRIVACY_ENV_NAME],
|
|
DEFAULT_FEATURES.privacy,
|
|
),
|
|
browse: parseBooleanEnv(
|
|
process.env[FEATURE_BROWSE_ENV_NAME],
|
|
DEFAULT_FEATURES.browse,
|
|
),
|
|
sendToZulip: parseBooleanEnv(
|
|
process.env[FEATURE_SEND_TO_ZULIP_ENV_NAME],
|
|
DEFAULT_FEATURES.sendToZulip,
|
|
),
|
|
rooms: parseBooleanEnv(
|
|
process.env[FEATURE_ROOMS_ENV_NAME],
|
|
DEFAULT_FEATURES.rooms,
|
|
),
|
|
};
|
|
|
|
export const featureEnabled = (featureName: FeatureName): boolean => {
|
|
return features[featureName];
|
|
};
|