Quick Start Guide
Overview
This guide shows you in 5 steps how to set up a functioning wayfinding system for your shopping center.
Step 1: Prepare SVG Floor Plan
Option A: Use Example SVG
# Copy an example SVG
cp docs/wayfinding/examples/example-mall-single-floor.svg my-mall.svg
Option B: Create Your Own SVG
- Open Adobe Illustrator, Inkscape, or Figma
- Create layers with the following IDs:
shops(for shop areas)services(for services like restrooms, info)facilities(for elevators, stairs)entrances(for entrances)
- Name each element uniquely (e.g.,
shop-1,service-info) - Add
data-nameattributes for names - Export as SVG
Option C: Hybrid / AI raster plan (without vector SVG)
- Create the plan as PNG/JPEG (e.g. with AI Master Prompt + architect floor plan as reference)
- In the dashboard: Center Plans → SVG Center Plan → PNG → Hybrid SVG
- Assign polygons → Shop Mapping — Details: Hybrid Center Plan
Detailed Guide: SVG Structure & Wayfinding
Step 2: Upload SVG
In the Dashboard:
1. Go to: Dashboard → Center Plans → New Center Plan (or Edit Floor)
2. Click "Upload SVG" or drag and drop the file
3. Wait for automatic analysis
4. Check recognized elements in the preview
For Graphic Only / Without Wayfinding Labels (Optional):
If you want to save the SVG only as a site plan with no labeled shop/service areas, enable "Graphic Only / Schema Check Relaxation" during upload. This way, you won't encounter the error "No elements in SVG," and you can still save the plan and later add a complete SVG or supplement it in mapping.
What Happens:
- The system analyzes SVG structure
- Extracts shops, services, facilities
- Displays a preview with all recognized elements
- Creates a MapFloor entry in the database
Expected Result:
6 shops recognized
4 services recognized
4 facilities recognized
3 entrances recognized
5 waypoints recognized
Step 3: Create Floor in Database
Automatically (Recommended):
The SVG upload automatically creates a MapFloor entry.
Manually (If Needed):
// API-Call
POST /api/wayfinding/floors
{
"centerId": "center-uuid",
"floorNumber": 0,
"name": "Ground Floor",
"mapImage": "/uploads/wayfinding/svg/my-mall.svg",
"mapSvg": "<svg>...</svg>",
"isDefault": true
}
Check:
Dashboard → Center Plans
→ Should display new Floor
Step 4: Map Shops & Services
In the Dashboard:
1. Go to: Dashboard → Center Plans → Mapping (or Edit Floor → Mapping Tab)
2. Select Center (top right)
3. Select Floor (Tabs)
4. You should see:
- On the left: Unmapped Shops/Services
- On the right: Interactive SVG Map
Perform Mapping:
1. Click on an area in the SVG map (right)
2. A modal opens with the list of available shops/services
3. Select the shop from the list
4. The shop is placed at the clicked position
5. Repeat for all shops/services
Tips
- Zoom: Mouse wheel or zoom buttons
- Pan: Hold left mouse button + drag
- Delete: Click on mapped shop → Trash icon
- Auto-Save: Mappings are saved automatically
Step 5: Test & Verify
1. Check Mapping Status:
Dashboard → Center Plans → Mapping
→ Statistics at the top: "X of Y Shops Mapped"
2. Test 3D Preview:
Dashboard → Center Plans
→ Click on Floor Map
→ 3D Viewer should open
3. Test API:
# Fetch all Floors
curl http://localhost:3000/api/wayfinding/floors?centerId=YOUR_CENTER_ID
# Fetch all MapLocations
curl http://localhost:3000/api/wayfinding/locations?floorId=YOUR_FLOOR_ID
4. Test Frontend:
Frontend App → Center Website → Center Plan
→ Should display interactive map
Expected Final Result
After completing all steps, you should have:
Database:
- MapFloor entry with SVG
- MapLocation entries for each shop/service
- Coordinates (x, y) for each location
Dashboard:
- SVG map visible in mapping interface
- All shops/services mapped
- 3D preview works
Frontend:
- Interactive map on center website
- Shops clickable
- Navigation works
Troubleshooting
Problem: SVG is not recognized
Symptom: "No shops found"
Solution:
- Check layer IDs in SVG:
<g id="shops"> <!-- Must contain "shops" or "shop" --><rect id="shop-1" ... /></g>
- Check element IDs: Must be unique
- Check size: Min. 40x30px for shops
Test:
# Analyze SVG structure
cat my-mall.svg | grep -E 'id="(shop|service|facility)"'
Problem: Modal does not open on click
Symptom: Click on map shows no shop selection
Solution:
- Check browser console for errors
- Ensure the floor is selected
- Check if SVG is loaded
- For small areas: Click "Hide Names" so text elements don't intercept clicks
- Try browser refresh (Cmd+R / Ctrl+R)
Problem: Shops are not saved
Symptom: Mappings are gone after refresh
Solution:
- Check API response in Network tab
- Check database:
SELECT * FROM "MapLocation" WHERE "floorId" = 'YOUR_FLOOR_ID';
- Check permissions (User must have center access)
Test:
# Test API directly
curl -X POST http://localhost:3000/api/shop-mapping \
-H "Content-Type: application/json" \
-d '{
"shopId": "shop-uuid",
"floorId": "floor-uuid",
"coordinates": {"x": 100, "y": 200}
}'
Problem: Multi-Floor does not work
Symptom: Only one floor is recognized
Solution:
- Check SVG structure:
<g id="floor-eg"> <!-- Must contain "floor" --><g id="shops-floor-eg"><rect id="shop-eg-1" ... /></g></g>
- Each floor needs its own group
- Shops must be within the floor group
Test:
# Find floor groups
cat my-mall.svg | grep -E 'id="floor-'
Additional Resources
- SVG Guide: SVG Structure & Wayfinding
- Example SVGs: examples/
- API Documentation: ../api/wayfinding.md
- Database Schema: ../../packages/database/schema.prisma
🎓 Next Steps
After the basic setup, you can:
- Add waypoints for navigation
- Upload 3D models (GLB/GLTF)
- Define routes between locations
- Integrate digital signage
- Generate QR codes for locations
Best Practices
SVG Creation:
- Use meaningful IDs (
shop-aldiinstead ofrect-1) - Add
data-nameattributes - Keep structure consistent across all floors
- Use standard colors (see SVG Structure)
Mapping:
- Map larger shops first (anchor tenants)
- Then small shops
- Lastly services & facilities
- Regularly check mappings
Testing:
- Test on different browsers
- Test mobile view
- Test with real shop data
- Test navigation between floors
Support
For questions or problems:
- GitHub Issues: github.com/your-repo/issues
- Documentation: Center Plans
- Slack: #wayfinding-support
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /en/centerplan/quick-start