2025-06-18 07:46:59 -04:00
|
|
|
export const metaData = {
|
|
|
|
|
baseUrl: "https://codey.lol/",
|
|
|
|
|
title: "CODEY STUFF",
|
|
|
|
|
name: "codey.lol",
|
|
|
|
|
owner: "codey",
|
2025-11-26 14:42:57 -05:00
|
|
|
ogImage: "/images/favicon.png",
|
|
|
|
|
description: "CODEY STUFF!",
|
|
|
|
|
shareTitle: "CODEY STUFF",
|
|
|
|
|
shareDescription: "CODEY STUFF!",
|
2025-12-02 10:05:43 -05:00
|
|
|
// alt text for the share/OG image (descriptive; not a filename)
|
|
|
|
|
shareImageAlt: "CODEY STUFF logo",
|
|
|
|
|
// default favicon / site icon used when no per-subsite override is provided
|
|
|
|
|
favicon: "/images/favicon.png",
|
|
|
|
|
// additional icons array (optional) for multi-icon support
|
|
|
|
|
icons: [
|
|
|
|
|
{ rel: 'icon', href: '/images/favicon.png' },
|
|
|
|
|
],
|
2025-06-18 07:46:59 -04:00
|
|
|
};
|
|
|
|
|
|
2025-07-25 10:06:39 -04:00
|
|
|
export const API_URL = "https://api.codey.lol";
|
2025-10-02 13:14:13 -04:00
|
|
|
export const RADIO_API_URL = "https://radio-api.codey.lol";
|
|
|
|
|
|
2025-06-18 07:46:59 -04:00
|
|
|
export const socialLinks = {
|
|
|
|
|
};
|
2025-07-19 22:57:35 -04:00
|
|
|
|
2025-12-05 14:21:52 -05:00
|
|
|
export const MAJOR_VERSION = "0.5"
|
2025-08-20 15:57:59 -04:00
|
|
|
export const RELEASE_FLAG = null;
|
2025-11-28 09:07:55 -05:00
|
|
|
export const ENVIRONMENT = import.meta.env.DEV ? "Dev" : "Prod";
|
|
|
|
|
|
|
|
|
|
// Whitelabel overrides
|
|
|
|
|
export const WHITELABELS = {
|
|
|
|
|
'req.boatson.boats': {
|
|
|
|
|
title: 'Request Media',
|
|
|
|
|
name: 'REQ',
|
2025-12-02 10:05:43 -05:00
|
|
|
brandColor: '', // inherit
|
2025-11-28 09:07:55 -05:00
|
|
|
siteTitle: 'Request Media',
|
|
|
|
|
logoText: 'Request Media',
|
2025-12-02 10:05:43 -05:00
|
|
|
// optional meta overrides for whitelabel/subsite
|
|
|
|
|
shareTitle: 'Request Media',
|
|
|
|
|
shareDescription: 'Request Media',
|
|
|
|
|
ogImage: '/images/req.png',
|
|
|
|
|
shareImageAlt: 'Request Media logo',
|
|
|
|
|
favicon: '/images/req.png',
|
|
|
|
|
// optional canonical/base url for this subsite (useful when host-forcing or in prod)
|
|
|
|
|
baseUrl: 'https://req.boatson.boats',
|
|
|
|
|
// human-readable site name for social meta
|
|
|
|
|
siteName: 'Request Media'
|
2025-11-28 09:07:55 -05:00
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Subsite mapping: host -> site path
|
|
|
|
|
export const SUBSITES = {
|
|
|
|
|
'req.boatson.boats': '/subsites/req',
|
2025-12-05 14:21:52 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Protected routes configuration
|
|
|
|
|
// Routes listed here require authentication - middleware will redirect to /login if not authenticated
|
|
|
|
|
// Can be a string (just auth required) or object with roles array for role-based access
|
2025-12-17 13:33:31 -05:00
|
|
|
// Use 'exclude' array to exempt specific sub-paths from protection
|
2025-12-05 14:21:52 -05:00
|
|
|
export const PROTECTED_ROUTES = [
|
|
|
|
|
'/radio',
|
|
|
|
|
{ path: '/lighting', roles: ['lighting'] },
|
|
|
|
|
{ path: '/discord-logs', roles: ['discord'] },
|
2025-12-17 13:33:31 -05:00
|
|
|
{ path: '/api/discord', roles: ['discord'], exclude: ['/api/discord/cached-image'] },
|
2025-12-05 14:21:52 -05:00
|
|
|
'/TRip',
|
|
|
|
|
'/TRip/requests',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
// Routes that should skip auth check entirely (public routes)
|
|
|
|
|
export const PUBLIC_ROUTES = [
|
|
|
|
|
'/',
|
|
|
|
|
'/login',
|
|
|
|
|
'/api/',
|
|
|
|
|
];
|