chore: rename the project to Dotcom Arcade
This commit is contained in:
+4
-5
@@ -1,8 +1,8 @@
|
||||
# Production Dockerfile for Flashpoint Web (single image: API + UI)
|
||||
# Production Dockerfile for Dotcom Arcade (single image: API + UI)
|
||||
#
|
||||
# The backend serves both the REST API / game content and the built React UI,
|
||||
# so this image runs a single Node process. Build from the repo root:
|
||||
# docker build -t flashpoint-web .
|
||||
# docker build -t dotcom-arcade .
|
||||
|
||||
# =============================================================================
|
||||
# Stage 1: Frontend builder - Build the React app
|
||||
@@ -54,10 +54,9 @@ FROM node:20.18.2-alpine
|
||||
|
||||
# Metadata labels
|
||||
ARG VERSION=dev
|
||||
LABEL org.opencontainers.image.title="Flashpoint Web"
|
||||
LABEL org.opencontainers.image.description="Self-hosted web app for Flashpoint Archive (API + UI)"
|
||||
LABEL org.opencontainers.image.title="Dotcom Arcade"
|
||||
LABEL org.opencontainers.image.description="Self-hosted Flash-era game portal for Flashpoint Ultimate (API + UI)"
|
||||
LABEL org.opencontainers.image.version="${VERSION}"
|
||||
LABEL org.opencontainers.image.source="https://github.com/darkraise/flashpoint-web"
|
||||
|
||||
# An ARG does not survive into the running container; the server reads this to
|
||||
# decide whether it is a released build.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "flashpoint-web-backend",
|
||||
"name": "dotcom-arcade-backend",
|
||||
"version": "1.0.0",
|
||||
"description": "Backend API for Flashpoint Archive web application",
|
||||
"main": "dist/server.js",
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
-- ===================================
|
||||
-- Migration 011: Default site name
|
||||
-- ===================================
|
||||
-- The project is now Dotcom Arcade. Installs still on the old default take the
|
||||
-- new one; a name an admin chose is left alone.
|
||||
|
||||
UPDATE system_settings
|
||||
SET
|
||||
default_value = 'Dotcom Arcade',
|
||||
value = CASE WHEN value = 'Flashpoint Web' THEN 'Dotcom Arcade' ELSE value END
|
||||
WHERE key = 'app.site_name';
|
||||
@@ -61,7 +61,7 @@ const clientErrorLogger = winston.createLogger({
|
||||
})(),
|
||||
winston.format.json()
|
||||
),
|
||||
defaultMeta: { service: 'flashpoint-web-client' },
|
||||
defaultMeta: { service: 'dotcom-arcade-client' },
|
||||
transports: [
|
||||
new winston.transports.File({
|
||||
filename: ERROR_LOG_FILE,
|
||||
|
||||
@@ -225,7 +225,7 @@ async function startServer() {
|
||||
// pre-warm can run for minutes, and a closed port shows the user a connection
|
||||
// error instead of a page that explains itself.
|
||||
const server = app.listen(config.port, config.host, () => {
|
||||
logger.info(`🚀 Flashpoint Web API server running on http://${config.host}:${config.port}`);
|
||||
logger.info(`🚀 Dotcom Arcade server running on http://${config.host}:${config.port}`);
|
||||
logger.info(`📁 Flashpoint path: ${config.flashpointPath}`);
|
||||
logger.info(`🎮 Game content: /game-proxy/* and /game-zip/* (integrated)`);
|
||||
logger.info(`🌍 Environment: ${config.nodeEnv}`);
|
||||
|
||||
@@ -17,7 +17,7 @@ import { logger } from '../utils/logger';
|
||||
* - OTEL_ENABLED: Enable/disable telemetry (true/false)
|
||||
* - OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint (e.g., http://localhost:4318)
|
||||
* - OTEL_API_KEY: API key for authentication (sent as "Authorization: Api-Key <key>")
|
||||
* - OTEL_SERVICE_NAME: Service name (default: flashpoint-web-backend)
|
||||
* - OTEL_SERVICE_NAME: Service name (default: dotcom-arcade-backend)
|
||||
* - OTEL_TRACES_ENABLED: Enable traces (default: true)
|
||||
* - OTEL_METRICS_ENABLED: Enable metrics (default: true)
|
||||
* - OTEL_METRICS_EXPORT_INTERVAL: Metrics export interval in ms (default: 60000)
|
||||
@@ -40,7 +40,7 @@ function getOtelConfig() {
|
||||
enabled: process.env.OTEL_ENABLED === 'true',
|
||||
endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318',
|
||||
apiKey: process.env.OTEL_API_KEY || '',
|
||||
serviceName: process.env.OTEL_SERVICE_NAME || 'flashpoint-web-backend',
|
||||
serviceName: process.env.OTEL_SERVICE_NAME || 'dotcom-arcade-backend',
|
||||
serviceVersion: process.env.npm_package_version || '1.0.0',
|
||||
tracesEnabled: process.env.OTEL_TRACES_ENABLED !== 'false',
|
||||
metricsEnabled: process.env.OTEL_METRICS_ENABLED !== 'false',
|
||||
|
||||
@@ -154,7 +154,7 @@ export const logger = winston.createLogger({
|
||||
otelFormat(),
|
||||
winston.format.json()
|
||||
),
|
||||
defaultMeta: { service: 'flashpoint-web-backend' },
|
||||
defaultMeta: { service: 'dotcom-arcade-backend' },
|
||||
transports,
|
||||
});
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@
|
||||
form-action 'self';
|
||||
"
|
||||
/>
|
||||
<title>Flashpoint Archive</title>
|
||||
<title>Dotcom Arcade</title>
|
||||
<!-- Blocking script to prevent FOUC (Flash of Unstyled Content) -->
|
||||
<!-- Applies theme before first paint by reading from localStorage -->
|
||||
<script>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "flashpoint-web-frontend",
|
||||
"name": "dotcom-arcade-frontend",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
|
||||
@@ -32,7 +32,7 @@ export function Header({ hideSidebarToggle = false, hideSearch = false }: Header
|
||||
const { logout } = useAuth();
|
||||
const { data: publicSettings } = usePublicSettings();
|
||||
|
||||
const siteName = publicSettings?.app?.siteName ?? 'Flashpoint Archive';
|
||||
const siteName = publicSettings?.app?.siteName ?? 'Dotcom Arcade';
|
||||
|
||||
const isMobile = typeof window !== 'undefined' && window.innerWidth < 1024;
|
||||
const effectiveCollapsed = isMobile ? false : sidebarCollapsed;
|
||||
|
||||
@@ -20,7 +20,7 @@ import { useMatureStore } from '@/store/mature';
|
||||
export const PortalHeader = forwardRef<HTMLInputElement>(function PortalHeader(_props, searchRef) {
|
||||
const navigate = useNavigate();
|
||||
const { data: publicSettings } = usePublicSettings();
|
||||
const siteName = publicSettings?.app?.siteName ?? 'Flashpoint Archive';
|
||||
const siteName = publicSettings?.app?.siteName ?? 'Dotcom Arcade';
|
||||
const tagline = publicSettings?.app?.tagline;
|
||||
const [query, setQuery] = useState('');
|
||||
|
||||
|
||||
@@ -51,14 +51,14 @@ export function AppUpdateCard() {
|
||||
if (result.lastCheckFailed) {
|
||||
showToast('Could not reach GitHub to check for updates', 'error');
|
||||
} else if (result.updateAvailable) {
|
||||
showToast(`Flashpoint Web ${result.latestVersion} is available`, 'success');
|
||||
showToast(`Dotcom Arcade ${result.latestVersion} is available`, 'success');
|
||||
} else if (result.isUnreleasedBuild) {
|
||||
showToast(
|
||||
`Update checks are off for this build (latest release: ${result.latestVersion ?? 'unknown'})`,
|
||||
'info'
|
||||
);
|
||||
} else if (versionsMatch(result.currentVersion, result.latestVersion)) {
|
||||
showToast('Flashpoint Web is up to date', 'success');
|
||||
showToast('Dotcom Arcade is up to date', 'success');
|
||||
} else {
|
||||
showToast(`Latest release: ${result.latestVersion ?? 'unknown'}`, 'info');
|
||||
}
|
||||
@@ -84,7 +84,7 @@ export function AppUpdateCard() {
|
||||
<div className="flex items-center justify-between mb-4">
|
||||
<div className="flex items-center gap-2">
|
||||
<Rocket size={24} className="text-primary" aria-hidden="true" />
|
||||
<h2 className="text-xl font-semibold">Flashpoint Web</h2>
|
||||
<h2 className="text-xl font-semibold">Dotcom Arcade</h2>
|
||||
</div>
|
||||
<Button
|
||||
variant="outline"
|
||||
|
||||
@@ -33,7 +33,7 @@ export interface SaveSyncState {
|
||||
const STATE_DB = 'flashpoint-save-sync';
|
||||
const STATE_STORE = 'games';
|
||||
|
||||
/** flashpoint-web's own storage, never part of a game's save */
|
||||
/** The app's own storage, never part of a game's save */
|
||||
const APP_DATABASES = new Set(['flashpoint-stream-saves', STATE_DB]);
|
||||
// Unity WebGL's asset cache: large and re-downloadable, not a save
|
||||
const IGNORED_DATABASES = new Set(['UnityCache']);
|
||||
@@ -170,7 +170,7 @@ async function gameDatabaseHashes(): Promise<Map<string, string>> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Notices what a running game changes. Games share flashpoint-web's origin and
|
||||
* Notices what a running game changes. Games share the app's origin and
|
||||
* Ruffle saves may use a site-wide path, so storage that changes while a game
|
||||
* runs is attributed to it rather than guessed from names.
|
||||
*/
|
||||
|
||||
Generated
+6
-6
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "flashpoint-web-app",
|
||||
"name": "dotcom-arcade",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "flashpoint-web-app",
|
||||
"name": "dotcom-arcade",
|
||||
"version": "1.0.0",
|
||||
"license": "GPL-3.0",
|
||||
"workspaces": [
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"backend": {
|
||||
"name": "flashpoint-web-backend",
|
||||
"name": "dotcom-arcade-backend",
|
||||
"version": "1.0.0",
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
@@ -2291,7 +2291,7 @@
|
||||
}
|
||||
},
|
||||
"frontend": {
|
||||
"name": "flashpoint-web-frontend",
|
||||
"name": "dotcom-arcade-frontend",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@fontsource-variable/fredoka": "^5.3.0",
|
||||
@@ -12087,11 +12087,11 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/flashpoint-web-backend": {
|
||||
"node_modules/dotcom-arcade-backend": {
|
||||
"resolved": "backend",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/flashpoint-web-frontend": {
|
||||
"node_modules/dotcom-arcade-frontend": {
|
||||
"resolved": "frontend",
|
||||
"link": true
|
||||
},
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "flashpoint-web-app",
|
||||
"name": "dotcom-arcade",
|
||||
"version": "1.0.0",
|
||||
"description": "Flashpoint Archive web application",
|
||||
"private": true,
|
||||
|
||||
@@ -11,7 +11,7 @@ const STREAM_URL = /^\/stream\/([0-9a-f]{32})(\/.*)$/;
|
||||
const HEARTBEAT_MS = 25_000;
|
||||
const MAX_BODY_BYTES = 16 * 1024 * 1024;
|
||||
|
||||
/** Internal API for flashpoint-web's backend: reports streamable games and creates sessions. */
|
||||
/** Internal API for the app's backend: reports streamable games and creates sessions. */
|
||||
export function createApiServer(sessions: SessionManager, catalog: Pick<GameCatalog, 'streamSize'>, token: string): http.Server {
|
||||
return http.createServer((req, res) => {
|
||||
handle(res, async () => {
|
||||
|
||||
Reference in New Issue
Block a user