-
-
Notifications
You must be signed in to change notification settings - Fork 64
04. Full Config Explanation
Clayton Burlison edited this page Nov 16, 2023
·
12 revisions
- Below is the full
default.json
file and explanations for all of the values.
General Rule:
- If an item is an object, indicated by curly brackets
{}
, then the options are limited to what's in this document. - If the item is an array, indicated by square brackets
[]
, then you can add unlimited number of items to it. - Copying and pasting from this Wiki does not guarantee comma placement is correct for your json!
{
// Interface that ReactMap is hosted on
"interface": "0.0.0.0",
// Port that ReactMap is being hosted on
"port": 8080,
// "git" / "docker"
"packageSource": "git"
}
{
"devOptions": {
// Enables extra logging for development
"enabled": false,
// Enables 'http://interface:port/graphql' for debugging
"graphiql": false,
// Enables query debug statements
"queryDebug": false,
// Sets a custom client path
"clientPath": "../../dist",
// Log client side errors
"clientErrors": false
}
}
{
"api": {
// Session secret, changing this forces all of your users to logout
"sessionSecret": "98ki^e72~!@#(85o3kXLI*#c9wu5l!Z",
// React Map Secret used for accessing API endpoints
"reactMapSecret": "You Should Change Me",
// Show your schema information, including passwords, when accessing the config API
"showSchemasInConfigApi": false,
// Show your authentication strategies, including tokens, when accessing the config API
"showStrategiesInConfigApi": false,
// # of active sessions your users can each have at once
"maxSessions": 5,
// How often should the server check for expired sessions (ms)
"sessionCheckIntervalMs": 900000,
// # of days until the cookie expires for each client session
"cookieAgeDays": 7,
"rateLimit": {
// Time in seconds that sets the rate limit period
"time": 60,
// # of requests allowed within that rate limit period
"requests": 1000
},
// How often the client should poll for an update in seconds
"polling": {
"devices": 10,
"gyms": 10,
"nests": 300,
"pokemon": 20,
"pokestops": 300,
"portals": 300,
"scanAreas": 10000,
"scanCells": 10,
"submissionCells": 500,
"weather": 30
},
// which categories are enabled for searching on the client
"searchable": {
"quests": true,
"pokestops": true,
"raids": true,
"gyms": true,
"portals": true,
"nests": true,
"pokemon": true
},
// How often ReactMap's Event Manager should update what Pokemon, Quests, Raids, and Nests are available
"queryUpdateHours": {
"pokemon": 0.5,
"quests": 1,
"raids": 0.5,
"nests": 3,
"historicalRarity": 6
},
// Setting these to true will result in the safest experience for your users, since what's available will always be fetched on session init, but it will result in a much slower startup time
"queryOnSessionInit": {
"pokemon": false,
"quests": false,
"raids": true,
"nests": false
},
// If you want to limit how many items can be queried from your DB to save on response times
"queryLimits": {
"pokemon": 10000,
// Pvp results are ran separately due to the complexity
"pokemonPvp": 25000,
"pokestops": 5000,
"gyms": 5000,
"portals": 5000,
"spawnpoints": 10000,
"nests": 2500,
"scanCells": 5000
},
"pvp": {
// Leagues you would like displayed
// And parsed if ReactMap is calculating PVP
"leagues": [
{
"name": "little",
"cp": 500,
// Follows Little Cup Specific Rules
"littleCupRules": false
}
{
"name": "great",
"cp": 1500
},
{
"name": "ultra",
"cp": 2500
}
],
// Levels that you would like parsed
// Only valid if using Chuck or reactMapHandlesPvp
"levels": [50, 51],
// uses internal PVP engine when set to true
"reactMapHandlesPvp": false,
// Only necessary if using RDM for PVP
"minCp": {
"great": 1400,
"ultra": 2400
}
},
// Number of days used to filter out old portals
"portalUpdateLimit": 30,
// Number of days used to filter out unscanned weather cells
"weatherCellLimit": 3,
// Number of search results to return when using the global search
"searchResultsLimit": 15,
// Used to fetch nest lists
"nestHemisphere": "north",
// Hide gyms older than 30 days
"gymValidDataLimit": 30,
// If set to false, gyms are just greyed out instead of hidden
"hideOldGyms": false,
// Same for Pokestops
"stopValidDataLimit": 30,
"hideOldPokestops": false,
// Timeout for server side fetches in milliseconds
"fetchTimeout": 3000,
// Various endpoints to fetch external data from
// If you change these, the format must still be the same!
// Make sure you know what you're doing
"pogoApiEndpoints": {
"invasions": "https://raw.githubusercontent.com/WatWowMap/event-info/main/grunts/formatted.json",
"masterfile": "https://raw.githubusercontent.com/WatWowMap/Masterfile-Generator/master/master-latest-react-map.json",
"translations": "https://raw.githubusercontent.com/WatWowMap/pogo-translations/master"
}
}
}
{
// Keys are set to the full host of the domain you wish to customize.
// Any properties from the below "map" obj can be added to this.
"multiDomains": []
}
{
"map": {
"general": {
// Map Title
"title": "ReactMap",
// Browser Title
"headerTitle": "ReactMap",
// Map start latitude
"startLat": 0,
// Map start longitude
"startLon": 0,
// Map start zoom
"startZoom": 12,
// Map min zoom (zooming out)
"minZoom": 10,
// Map max zoom (zooming in)
"maxZoom": 18,
// Min zoom to activate interaction ranges
"interactionRangeZoom": 15,
// Zoom to fly to when going clicking on a scan area
"scanAreasZoom": 12,
// Min zoom to active scan cells
"scanCellsZoom": 13,
// Min zoom to activate submission cells
"submissionZoom": 15,
// Min zoom to show the active weather icon in the top right corner
"activeWeatherZoom": 13,
// geojson file name, placed in the same folder as your local.json
"geoJsonFileName": "areas.json",
// Prefix for the map tile attribution
"attributionPrefix": "<a href='https://github.com/WatWowMap/ReactMap' target='_blank' rel='noreferrer'>ReactMap</a>",
// The order that the main drawer will display its various categories
"menuOrder": [
"gyms",
"nests",
"pokestops",
"pokemon",
"wayfarer",
"scanAreas",
"weather",
"admin",
"settings"
]
},
// Frontend locales available to your users
"localeSelection": [
"en",
"de",
"es",
"fr",
"hi",
"id",
"it",
"ja",
"ko",
"nl",
"pl",
"ru",
"sv",
"th"
"th",
"tr"
],
// Used for multidomains when setting up custom authentication strategies
"customRoutes": {
// custom discord route
"discordAuthUrl": "/auth/discord/callback",
// custom telegram route
"telegramAuthUrl": "/auth/telegram/callback",
// The name of your telegram bot
"telegramBotName": "",
// custom local route
"localAuthUrl": "/auth/local/callback"
},
"links": {
// Discord invite link, shows on the login screen
"discordInvite": "",
// Feedback link, if you would like to add a feedback form for your users
"feedbackLink": "",
// Stats page link, if you would like to add a stats page for your users
"statsLink": "",
// Custom name for the roles button on the profile page
"rolesLinkName": "Role Upgrading Info",
// Link for the roles button on the profile page
"rolesLink": ""
},
// Various holiday CSS/JS effects on certain holidays
"holidayEffects": [
{
// Purely a label for internal config viewing
"name": "New Years",
// Kill switch if you want to maintain it in your config
"enabled": true,
// array of image URLs, can be local images hosted in `public/images/custom` as well
"images": [],
// Can be `snow` or `fireworks` to use some custom CSS affects
"css": "snow",
// The day the effects should start
"startDay": 31,
// The month the effects should start
"startMonth": 12,
// The day the effects should end
"endDay": 1,
// The month the effects should end
"endMonth": 1
}
],
"misc": {
// Enables the advanced MapJS filtering system
"enableMapJsFilter": true,
// Fetches latest invasions during session init
"fetchLatestInvasions": true,
// How long to cache the latest invasions for before fetching again
"invasionCacheHrs": 1,
// How long to to cache the masterfile before fetching again
"masterfileCacheHrs": 6,
// How long to cache webhook settings before fetching again
"webhookCacheHrs": 1,
// Set a custom Has AR/Does not have AR indicator for quests
"questMessage": "",
// Navigation control style "react"/"leaflet"
"navigationControls": "react",
// Enables a floating profile button on the main map screen
"enableFloatingProfileButton": false,
// Makes first time users view the tutorial
"forceTutorial": true,
// Enables/disables the tutorial entirely
"enableTutorial": true,
// Enables the user profile
"enableUserProfile": true,
// Enables the Has AR/Does not have AR/both quest filter
// Probably best to only set to true if you scan both sets of quests
"enableQuestSetSelector": false,
// Disable polygon overlay for your geojson
"noScanAreaOverlay": false,
// If you want to set custom, git-friendly images for the permissions profile page
"permImageDir": "images/perms",
// If you want to use images for the perms that are arrays
// Area Restrictions and Webhooks currently
"permArrayImages": false,
// How many minutes before the client sessions go into standby mode if the tab/window is inactive
"clientTimeoutMinutes": 30,
// Unit used for client side searching to display distance (km/mi)
"distanceUnit": "km"
},
// Customize the map's main colors
"theme": {
"primary": "#ff5722",
"secondary": "#00b0ff",
},
// Sets clustering settings
"clustering": {
"gyms": {
// Zoom level to enable clustering
"zoomLevel": 13,
// Number of items before clustering is forced
"forcedLimit": 2500
},
"pokestops": {
"zoomLevel": 14,
"forcedLimit": 2500
},
"pokemon": {
"zoomLevel": 15,
"forcedLimit": 3000
},
"portals": {
"zoomLevel": 14,
"forcedLimit": 3000
},
"spawnpoints": {
"zoomLevel": 12,
"forcedLimit": 5000
}
},
// Message of the Day, Donation, and Long page settings:
// See https://github.com/WatWowMap/ReactMap/wiki/08.-Additional-Info#custom-pages
// Shows a motd for your users at beginning of the session
"messageOfTheDay": {
"index": 0,
"settings": {
"parentSpacing": 0,
"parentAlignItems": "center",
"parentJustifyContent": "center",
"parentStyle": {},
"permanent": false,
"freeloaderOnly": false,
"donorOnly": false
},
"titles": [],
"components": [],
"footerButtons": []
},
// Customize a donation page, there is no default donation page
"donationPage": {
"showOnMap": false,
"showToDonors": false,
"fabIcon": "card",
"settings": {
"parentSpacing": 0,
"parentAlignItems": "center",
"parentJustifyContent": "center",
"parentStyle": {}
},
"titles": [],
"components": [],
"footerButtons": []
},
// Customize the login page
"loginPage": {
"settings": {
"parentSpacing": 0,
"parentAlignItems": "center",
"parentJustifyContent": "center",
"parentStyle": {}
},
"components": []
}
},
{
"clientSideOptions": {
"admin": {
// Sets the device path color (RDM Only)
"devicePathColor": "#ff1744"
},
"gyms": {
// Clustering for Gyms
"clustering": true,
// Shows all raid timers
"raidTimers": false,
// Interaction range circles for gyms
"interactionRanges": false
// Show EX Badge on eligible gyms on the map
"showExBadge": false,
// Show AR badge on eligible gyms on the map
"showArBadge": false,
// Show raid level badge on gyms with raids
"raidLevelBadges": false,
// Toggles showing gym badge diamonds for gyms with set badges
"gymBadgeDiamonds": true
},
"pokestops": {
// Clustering for pokestops
"clustering": true,
// Shows all invasion timers
"invasionTimers": false,
// Shows all lure timers
"lureTimers": false,
// Shows all timers for special event pokestops
"eventStopTimers": false,
// Interaction range circles for pokestops
"interactionRanges": false,
// Lure range circles
"lureRange": false,
// Shows native quest text (MAD only)
"madQuestText": false,
// Pokestop will be alternative color if uicons repo supports it
"hasQuestIndicator": true,
// Show AR badge on eligible Pokestops on the map
"showArBadge": false
},
"pokemon": {
// Clustering for pokemon
"clustering": true,
// Sets legacy MapJS String Filter to be on by default
"legacyFilter": false,
// Shows IV badges on pokemon
"ivCircles": false,
// Min IV to show an IV badge
"minIvCircle": 90,
// Dex # instead of pokemon image in popup
"showDexNumInPopup": false,
// Mega PVP Stats
"pvpMega": false,
// Interaction range circles for pokemon
"interactionRanges": false,
// Show weather boost indicator
"weatherIndicator": false,
// Link global & Advanced menus, requiring pokemon to be selected in adv in order to show
"linkGlobalAndAdvanced": false,
// Show XXS/XXL etc size indicator on the leaflet marker
"showSizeIndicator": false,
// Unlimited number of glow rules can be added to this array
// See https://github.com/WatWowMap/ReactMap/wiki/08.-Additional-Info#glow-options
"glow": [
{"name": "Hundo", "perm": "iv", "num": 100, "value": "#ff1744", "op": "=" },
{"name": "Top 3 Ranks", "perm": "pvp", "num": 3, "value": "#0000ff", "op": "<=" },
// Rule that applies if multiple glow rules are satisfied, do not remove but feel free to customize the color
{"name": "Multiple", "perm": "pvp", "value": "#800080" }
]
},
"wayfarer": {
// Clustering for portals
"clustering": true,
// Color for portals imported > 24 hours ago
"oldPortals": "#0000ff",
// Color for portals imported < 24 hours ago
"newPortals": "#16b819",
// Various other color settings used with Wayfarer cells and POIs
"twoStopsTillNext": "#ffa500",
"oneStopTillNext": "#ff0000",
"noMoreGyms": "#000000",
"lightMapBorder": "#000000",
"darkMapBorder": "#ff0000",
"cellBlocked": "#000000",
"poiColor": "#03ffff"
},
"weather": {
// Zoomed in weather icon is clickable to display info
"clickableIcon": false,
// Border for weather cells when dark themed map tiles are used
"darkMapBorder": "#ff0000",
// same but for light map tiles
"lightMapBorder": "#246377"
}
},
}
{
"defaultFilters": {
"devices": {
"enabled": false
},
"gyms": {
// Enables gyms being displayed
"enabled": true,
// Enables all teams being selected in the adv menu
"allGyms": true,
// Power Up Levels default (1/2/3/"all")
"levels": "all",
// Enables global ex eligible gyms
"exEligible": false,
// Enables global gyms that are in battle
"inBattle": false,
// Enables raids globally
"raids": true,
// Enables all raid eggs in the adv menu
"eggs": true,
// Enables all raid bosses in the adv menu
"pokemon": true,
// Enables gym badges
"gymBadges": false,
// Base Raid tiers that will always be displayed
// Others will be added depending on what's in your database.
// If you want tier 7 to always be displayed, just add it to this array.
"baseRaidTiers": [
1,
3,
5,
6
],
// Don't touch this unless you know what you're doing
// Exists in case other teams are ever added to the game and I'm dead
"baseTeamIds": [
0,
1,
2,
3
],
// Don't touch this unless you know what you're doing
// Exists in case the gym system changes and I'm dead
"baseGymSlotAmounts": [
1,
2,
3,
4,
5,
6
]
},
"nests": {
// Nest polygons
"polygons": false,
// Nest Pokemon
"pokemon": false,
// All Pokemon in the adv nest menu
"allPokemon": true,
// Sets the default and the limits of the avg spawn / hr slider
"avgFilter": [0, 100],
// Sets the step for the avg spawn / hr slider
"avgSliderStep": 1
},
"pokestops": {
// All Pokestops
"enabled": false,
// Global Lures
"lures": true,
// Global Quests
"quests": true,
// Event stops
"eventStops": false,
// Sets the default questSelection
// Leave both if you only scan one set
// "both/with_ar/without_ar"
"questSet": "both",
// Item rewards in the adv menu
"items": true,
// Mega Energy Rewards in the adv menu
"megaEnergy": true,
// Candy rewards in the adv menu
"candy": true,
// Pokemon rewards in the adv menu
"pokemon": true,
// Global invasions
"invasions": false,
// All invasions in the adv menu
"allInvasions": true,
// Reward types in the adv menu
"rewardTypes": false,
// Mega Energy amounts to always show
// Others will be added based on what's in your database
"baseMegaEnergyAmounts": [
10,
20
],
// Base lures to show
// Others will be added based on what's in your database
"baseLureIds": [
501,
502,
503,
504,
505
],
// Base stardust amounts to show
// Others will be added based on what's in your database
"stardust": {
// Lowest amount
"min": 100,
// Max amount
"max": 2000,
// Adds an entry every...
"interval": 100,
// Stardust filters enabled in adv menu by default
"enabled": true
},
"xp": {
// same as above but for XP rewards
"min": 100,
"max": 1000,
"interval": 100,
"enabled": true
}
},
"pokemon": {
// Global Pokemon
"enabled": false,
// Enables all Pokemon in adv menu
// Recommended to leave false
"allPokemon": false,
// xs rats
"xsRat": false,
// xl karps
"xlKarp": false,
// Global slider default values
"globalValues": {
"iv": [80, 100],
"level": [1, 35],
"atk_iv": [0, 15],
"def_iv": [0, 15],
"sta_iv": [0, 15],
"pvp": [1, 10],
"gender": 0,
"cp": [
10,
5000
],
"xxs": false,
"xxl": false
}
},
"portals": {
"enabled": false
},
"scanAreas": {
// Geojson overaly enabled
"enabled": false
},
"scanCells": {
"enabled": false
},
"spawnpoints": {
"enabled": false
},
"submissionCells": {
"enabled": false,
// Show POIs
"rings": true,
// Show S17 cells
"s17Cells": true,
// Show S14 cells
"s14Cells": true
},
"weather": {
"enabled": true
}
}
}
{
"database": {
"settings": {
// User table name
"userTableName": "users",
// Gym badge table name
"gymBadgeTableName": "gymBadges",
// Session table name
"sessionTableName": "session",
// Knex migration table name
"migrationTableName": "knex_migrations",
// Only set to true if your gym table and gym badge table are in the same db
// Slight performance upgrade when true
"joinGymBadgeTable": false,
// only necessary for MAD, hides expired quests
"hideOldQuests": false,
// max number of db connections
"maxConnections": 10,
// See this PR https://github.com/WatWowMap/ReactMap/pull/579
"extraUserFields": [
"paypal_name",
{
"name": "paypal",
"en": "paypal",
"es": "spanish_paypal",
"database": "paypal_ish"
}
]
},
// You can add an UNLIMITED numbers of schemas here
// They can even be a mix of mad and rdm, the type will automatically be detected
// the gym badge table will be wherever "user" is at
"schemas": [
// Your Scanner database
{
"host": "127.0.0.1",
"port": 3306,
"username": "user",
"password": "pass123!",
"database": "scanner_db",
"useFor": [
"device",
"gym",
"pokemon",
"pokestop",
"scanCell",
"spawnpoint",
"weather"
]
},
// Your ReactMap database
{
"host": "127.0.0.1",
"port": 3306,
"username": "user",
"password": "pass123!",
"database": "reactmap_db",
"useFor": ["session", "user"]
}
// Your manual database
{
"host": "127.0.0.1",
"port": 3306,
"username": "user",
"password": "pass123!",
"database": "manual_db",
"useFor": ["nest", "portal"]
}
// Your Golbat In-Memory Endpoint
{
"type": "golbat",
"endpoint": "http://127.0.0.1:9001",
"secret": "golbat_api_secret",
"useFor": [
"pokemon"
]
},
]
}
}
"scanner": {
"backendConfig": {
// scanner backend type
"platform": "rdm/mad/custom",
// scanner API endpoint
"apiEndpoint": "http://ip:port/api",
// authorized API user credentials
"apiUsername": "username",
"apiPassword": "password",
// Minimum interval to request queue from scanner
"queueRefreshInterval": 5
},
"scanNext": {
// to enable the scanNext floating button and feature
"enabled": false,
// Show number of scan request in popup
"showScanCount": false,
// Show current queue in popup
"showScanQueue": false,
// the scanner instance to which the requests will be made (RDM)
"scanNextInstance": "scanNext",
// the scanner device to which the requests will be made (MAD)
"scanNextDevice": "Device01",
// MAD sleeptime option
"scanNextSleeptime": 5,
// allowed areas for the scans (needs a valid areas.json with name matching)
"scanNextAreaRestriction": [],
// Discord roles that will be allowed to use scanNext
"discordRoles": [],
// Telegram group that will be allowed to use scanNext
"telegramGroups": []
},
"scanZone": {
// to enable the scanZone floating button and feature (RDM only)
"enabled": false,
// Show number of scan request in popup
"showScanCount": false,
// Show current queue in popup
"showScanQueue": false,
// the maximum size allowed for the scan zone area
"scanZoneMaxSize": 10,
// enables advanced options in popup (spacing and radius)
"advancedScanZoneOptions": false,
// default circle sizes
"scanZoneRadius": { "pokemon": 70, "gym": 750 },
// default spacing coefficient
"scanZoneSpacing": 1,
// the scanner instance to which the requests will be made
"scanZoneInstance": "scanZone",
// allowed areas for the scans (needs a valid areas.json with name matching)
"scanZoneAreaRestriction": [],
// Discord roles that will be allowed to use scanZone
"discordRoles": [],
// Telegram group that will be allowed to use scanZone
"telegramGroups": []
}
},
For Dragonite. Use this option if ReactMap is on the same network as Dragonite.
"scanner": {
"backendConfig": {
"platform": "custom",
"apiEndpoint": "http://{drago_ip}/scout",
},
For Dragonite Admin. Use this option if ReactMap is on a different network from Dragonite. This will proxy the request through Dragonite Admin to Dragonite utilizing the api_secret value.
"scanner": {
"backendConfig": {
"platform": "custom",
"apiEndpoint": "http://{d_admin_ip}/api/scout",
"headers": [
{ "key": "X-Dragonite-Admin-Secret", "value": "your_api_secret_set_in_admin_config" }
],
},
{
"authentication": {
// You can add an unlimited number of strategies here
"strategies": [
{
// The name of the strategy for your reference
"name": "discord",
// The type of strategy to interact with backend strategies
"type": "discord",
// whether to enable it or not
"enabled": false,
// Discord log channel ID, must have message writing perms
"logChannelId": "",
// Discord scanNext log channel ID
"scanNextLogChannelId": "",
// Discord scanZone log channel ID
"scanZoneLogChannelId": "",
// Discord bot presence
"presence": "Map Status: Online",
// Discord bot presence type
"presenceType": 3,
// Discord bot token
"botToken": "",
// Discord client id
"clientId": "",
// Discord client secret
"clientSecret": "",
// Discord redirect uri, must add to bot in the Discord developer panel
"redirectUri": "http://localhost:8080/auth/discord/callback",
// Allowed guilds "1231419501"
"allowedGuilds": [],
// Blocked guilds "12341415213"
"blockedGuilds": [],
// Users that will always have all perms "1235325321431"
"allowedUsers": [],
// Thumbnail image used in scanNext/scanZone log channels, must be https
"thumbnailUrl": "https://user-images.githubusercontent.com/58572875/167069223-745a139d-f485-45e3-a25c-93ec4d09779c.png"
},
{
"name": "telegram",
"type": "telegram",
"enabled": false,
// Telegram bot token
"botToken": "",
// All groups that will have some perms
"groups": []
},
{
// Local authentication, mostly meant for custom strategies
"name": "local",
"type": "local",
"enabled": false
}
],
// Area restrictions, add an unlimited numbers of rules
"areaRestrictions": [],
// {
// Discord Roles and Telegram Groups or "local"
// "roles": [],
// Areas that the above roles will be allowed to view
// "areas": []
// },
// Perms to exclude from the tutorial/profile page
"excludeFromTutorial": [],
// Perms that are always enabled for everyone
"alwaysEnabledPerms": [],
"perms": {
// View the map
"map": {
// Hide from everyone if enabled = false
"enabled": true,
// Array of Discord role IDs, Telegram Groups, or "local"
// Must be strings, not numbers!
"roles": []
},
// Basic Pokemon without any IVs
"pokemon": {
"enabled": true,
"roles": []
},
// Pokemon IVs
"iv": {
"enabled": true,
"roles": []
},
// Pokemon PVP stats
"pvp": {
"enabled": true,
"roles": []
},
// Gym details
"gyms": {
"enabled": true,
"roles": []
},
// Raids
"raids": {
"enabled": true,
"roles": []
},
// Stop locations
"pokestops": {
"enabled": true,
"roles": []
},
// Quests
"quests": {
"enabled": true,
"roles": []
},
// Lures
"lures": {
"enabled": true,
"roles": []
},
// Portals
"portals": {
"enabled": true,
"roles": []
},
// Submission cells
"submissionCells": {
"enabled": true,
"roles": []
},
// Invasions
"invasions": {
"enabled": true,
"roles": []
},
// Nests
"nests": {
"enabled": true,
"roles": []
},
// Scan Areas from the geojson
"scanAreas": {
"enabled": true,
"roles": []
},
// Weather
"weather": {
"enabled": true,
"roles": []
},
// Spawnpoints
"spawnpoints": {
"enabled": true,
"roles": []
},
// Scancells
"scanCells": {
"enabled": true,
"roles": []
},
// Devices
"devices": {
"enabled": true,
"roles": []
},
// Indicates whether a user is a donor or not
// for use with the custom donation page and MotD
"donor": {
"enabled": true,
"roles": []
},
// Access to gym badge features
"gymBadges": {
"enabled": true,
"roles": []
}
}
}
}
"webhooks": [],
{
// You can add an unlimited number of tileservers as well
"tileServers": [
{
// Auto tileserver to show dark tiles at night and light during the day
// Users the first tileserver in this array for light
// Same for dark
// First tileserver will be the default
"name": "auto"
},
// You can add custom tileservers like so, with custom variations for day/night/dawn/dusk
{
"name": "Pogo",
"attribution": "NPlumb",
"url": "https://your_custom_tileserver/tile/pogo_day/{z}/{x}/{y}/2/png",
"day": "https://your_custom_tileserver/tile/pogo_day/{z}/{x}/{y}/2/png",
"night": "https://your_custom_tileserver/tile/pogo_night/{z}/{x}/{y}/2/png",
"dawn": "https://your_custom_tileserver/tile/pogo_dawn/{z}/{x}/{y}/2/png",
"dusk": "https://your_custom_tileserver/tile/pogo_dusk/{z}/{x}/{y}/2/png"
},
{
"name": "Carto",
"attribution": "Map tiles by Carto, under CC BY 3.0. Data by <a href='https://www.openstreetmap.org/'>OpenStreetMap</a>, under ODbL.",
"url": "https://{s}.basemaps.cartocdn.com/rastertiles/voyager_labels_under/{z}/{x}/{y}{r}.png",
"style": "light"
},
{
"name": "OSM",
"attribution": "Map data © <a href='https://www.openstreetmap.org'>OpenStreetMap</a> contributors",
"url": "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
"style": "light"
},
{
"name": "Dark Matter",
"attribution": "© <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors © <a href='https://carto.com/attributions'>CARTO</a>",
"url": "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png",
"style": "dark"
},
{
"name": "Satellite",
"attribution": "© Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community",
"url": "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
"style": "dark"
},
// Paid
{
"name": "AlidadeSmoothDark",
"attribution": "© <a href='https://stadiamaps.com/'>Stadia Maps</a>, © <a href='https://openmaptiles.org/'>OpenMapTiles</a> © <a href='http://openstreetmap.org'>OpenStreetMap</a> contributors",
"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png",
"style": "dark"
},
// Paid
{
"name": "ThunderForest",
"attribution": "© <a href='http://www.thunderforest.com/'>Thunderforest</a>, © <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors",
"url": "https://{s}.tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png",
"style": "dark"
}
]
}
{
// Navigation options, first item will be default, you can add more
"navigation": [
{
// Name to display, not translated
"name": "Google Maps",
// Url format for nav
"url": "https://www.google.com/maps/place/{x},{y}"
},
{
"name": "Apple Maps",
"url": "https://maps.apple.com/maps?daddr={x},{y}"
},
{
"name": "Waze",
"url": "https://www.waze.com/ul?ll={x},{y}"
},
{
"name": "Intel",
"url": "https://intel.ingress.com/intel?pll={x},{y}"
}
]
}
{
// Set these if you don't want to use the default found in server/src/data/defaultRarity.json
// You must generate the masterfile after updating these - yarn run generate
// Supports Pokemon ID #s
"rarity": {
// Set percentage tiers when the database is querying for setting rarity dynamically
"percents": {
"uncommon": 0.25,
"rare": 0.1,
"ultraRare": 0.01
},
"common": [],
"uncommon": [],
"rare": [],
"ultraRare": [],
"regional": [],
"event": []
}
}
// Manual Areas to display in the selectable menu in the sidebar if you have too many in your Areas.json
{
"manualAreas": [
{
// Display Name
"name": "New York",
"lat": 40.7481666,
"lon": -74.0174788,
// Zoom level to set when jumping to it
"zoom": 20,
// Border Color
"color": "blue",
// Background Color
"fillColor": "orange"
},
{
"name": "Manhatten",
"lat": 40.7481666,
"lon": -74.0174788,
"zoom": 20,
// Sets it as a child of "New York"
// Having a "New York" object, like the one above this entry, is optional
// If omitted, the New York button will be visible, but not interactive
"parent": "New York",
"color": "teal",
"fillColor": "yellow"
},
]
}