Public:
- /escape-rooms: Leaflet + OpenStreetMap map with marker clustering and a
searchable list, both built from a cached slim JSON feed
- /escape-rooms/{id}-{slug}: room detail with a mini-map and user reviews
(rating + title + body, login required)
- /escape-rooms/suggest: visitor submission form with click-to-drop-pin map
and reCAPTCHA v3; new rooms land as pending
Data:
- EscapeRoom / EscapeRoomReview entities (soft-delete), migration
- app:escaperooms:import-osm console command pulls leisure=escape_game from
the Overpass API, upserts by (osmType, osmId), skips locked rows;
--tiled / --area / --bbox options
Admin (new "Website Admin" area, separate from Game Admin):
- src/Website/Controller/AdminEscapeRoomController.php at /admin/escape-rooms:
status-filtered list, new/edit, publish/hide/reject, delete, review removal
- game admin sidebar extracted into a block and cross-linked
Assets: leaflet + leaflet.markercluster; escaperoom-map and escaperoom-detail
Encore entries.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
const Encore = require('@symfony/webpack-encore');
|
|
|
|
if (!Encore.isRuntimeEnvironmentConfigured()) {
|
|
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
|
|
}
|
|
|
|
Encore
|
|
// where compiled assets will be stored
|
|
.setOutputPath('public/build/')
|
|
// public path used by the web server to access the output path
|
|
.setPublicPath('/build')
|
|
// clean output before build
|
|
.cleanupOutputBeforeBuild()
|
|
// main entry for your app
|
|
.addEntry('app', './assets/app.js')
|
|
.addEntry('game1', './assets/game1.js')
|
|
.addEntry('pregame', './assets/pregame.js')
|
|
.addEntry('escaperoom-map', './assets/escaperoom-map.js')
|
|
.addEntry('escaperoom-detail', './assets/escaperoom-detail.js')
|
|
// split entry chunks for better caching
|
|
.splitEntryChunks()
|
|
// will require an extra script tag for runtime.js
|
|
.enableSingleRuntimeChunk()
|
|
// features
|
|
.enableSourceMaps(!Encore.isProduction())
|
|
.enableVersioning(Encore.isProduction())
|
|
.enableSassLoader()
|
|
// Babel config for wide browser support
|
|
.configureBabelPresetEnv((options) => {
|
|
options.useBuiltIns = 'usage';
|
|
options.corejs = 3;
|
|
options.bugfixes = true;
|
|
})
|
|
.enableBuildNotifications()
|
|
;
|
|
|
|
module.exports = Encore.getWebpackConfig();
|