This repository presents a framework designed to streamline the deployment and configuration of colocated collaborative augmented reality (AR) experiences for mobile devices (currently supporting ARCore-compatible devices). The solution employs a centralized client-server architecture, where a dedicated local server (PC) manages real-time data communication and synchronization across connected devices. This approach eliminates reliance on cloud anchor services or third-party platforms, which often impose restrictive limitations.
Perfect for:
- Prototyping multi-user AR experiences
- Collaborative projects
- AR education tools
📁 CollabAR/
├── App/ # Includes the mobile application implementation that connects to and interacts with the server framework
├── Assets/ # Images and resources used in documentation
├── Server/ # Contains the complete architecture and technical configuration for the local server, including all necessary components and operational processes
└── README.md # This documentation file
Before proceeding with the setup steps below, ensure you have the following tools installed and ready on your system. While newer versions may work, we recommend using the exact version specified to ensure full compatibility. If you choose a different version, please verify it doesn't introduce breaking changes.
Computer: Windows*/Mac/Linux with:
- Node.js v24.14.1 (Installation guide)
- MongoDB Community Edition v8.2.6 (Installation guide)
- Git (Installation guide)
Phones: 2+ Android devices with:
- ARCore support (Compatibility list)
- Developer mode enabled (Developer mode)
Note: All setup instructions and commands in this guide were tested in Windows 11 (25H2) using Command Prompt (cmd). If you're using another operating system or shell, please adapt the commands accordingly.
Clone the repository as:
git clone https://github.com/MurilloLog/CollabAR.gitIf you prefer downloading the project as a ZIP file: Extract the contents and verify the folder structure matches the Project structure shown above.
Before starting the server, ensure you have properly configured it and have the applications ready on your devices.
- Open two Command Prompts and navigate both to the
Server/folder:
cd CollabAR
cd Server- In first terminal (Database-MongoDB) start MongoDB service as:
mongodAnd make sure avoiding to close the command prompt. You can verify MongoDB service is working when you receive the log message: "ctx":"initandlisten","msg":"mongod startup complete".
- In the second Terminal (Application-Node.js) start the server as:
npm startAnd look for the message: "Wating for connections..." to check that the server app is running without errors.
- Do not close either terminal window while using the application.
- Closing the first terminal
mongodwill shut down the database. - Closing the second terminal
npm startwill stop the server. - To stop the servers safely: Press
Ctrl + Cin each terminal to terminate processes gracefully.
Initial Positioning: Before launching the app, place all devices side by side, pointing their cameras toward the same flat surface (table or floor). This initial alignment is critical. Any offset at the start will cause spatial synchronization mismatches between devices throughout the entire experience.
-
Enter the server address: Input the IP address of the computer running the server (the machine where you executed npm start). The default port is 8080. Note: These parameters can be modified or automated-refer to Server.md for configuration details.
-
Tap "Join": This initiates the connection. The experience will not begin until at least two devices are connected.
-
Wait for synchronization: While waiting for the second device, the app displays a loading screen (Loading players) and drawing controls remain disabled. Once the second device joins:
-
The loading screen disappears
-
A new Drawing button appears
Ensure your device has completed spatial mapping:
-
You'll see a circular cursor appearing on detected planes
-
Small anchor points will overlay on recognized surfaces
-
Only when these visual indicators appear, tap "Draw" button to begin
💡 Tip: Spatial mapping is dynamic. As you walk around, new anchor points will continuously register, improving spatial awareness and drawing accuracy across the environment.
- Choose colors from the palette in your app
- Draw in the air - strokes appear when you finish; all connected devices see your drawings in real time
- Walk around - drawings remain anchored to their physical locations as you move
To confirm devices are properly connected:
-
Check the server terminal logs for messages like:
- "Connecting to MongoDB..."
- "Successful connection..."
- "Waiting for connections..."
Q: Why do devices need to be close together at the begining?
A: Devices need to be close to share the same AR space and use a common reference point from the starting position for accurate synchronization
Q: Can I use iPhones?
A: Currently Android-only (ARCore requirement), but iOS support could be added
Q: How many users can join simultaneously?
A. The system was tested with 5 simultaneous connections, but practical performance depends on:
- The PC specifications (CPU/RAM)
- Network conditions (latency and stability)
- Drawing complexity (size/detail of shared AR content)
@inproceedings{10.1145/3722564.3728390,
author = {Murillo Gutierrez, Gustavo Adolfo and Jin, Rong and Ramirez Paredes, Juan Pablo Ignacio and Hernandez Belmonte, Uriel Haile},
title = {A Framework for Collaborative Augmented Reality Applications},
year = {2025},
isbn = {9798400718335},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3722564.3728390},
doi = {10.1145/3722564.3728390},
series = {I3D Companion '25}
}


