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
| Folder | Purpose | What You'll Find There |
|---|---|---|
Server/ |
Contains the complete architecture and technical configuration for the local server, including all necessary components and operational processes | Server code, database setup |
App/ |
Includes the mobile application implementation that connects to and interacts with the server framework | Unity project, App setup |
You'll need:
✔ Computer: Windows/Mac/Linux with:
- Node.js v22.12.0 (installation guide)
- MongoDB 8.0.4 (installation guide)
✔ Phones: 2+ Android devices with:
- ARCore support (compatibility list)
- Developer mode enabled
✔ Refer to SERVER.md and APP.md for setup instructions.
- Clone the repository (download the project):
git clone https://github.com/MurilloLog/CollabAR.git- Navigate into the project folder:
cd CollabAR- Open two terminal windows and navigate both to the
Server/folder:
cd Server- In first terminal (Database-MongoDB)
-
Start MongoDB
mongod
✅ Successful confirmation
Wait for the log message: [initandlisten] Waiting for connections.
- In the second Terminal (Application - Node.js)
- Install dependencies (first time only):
npm install- Start the server:
npm start✅ Successful confirmation
Look for the message: "Wating for connections..."
-
Do not close either terminal window while using the application.
-
Closing the first terminal (mongod) will shut down the database.
-
Closing the second terminal (npm start) will stop the server.
-
To stop the servers safely: Press Ctrl + C in each terminal to terminate processes gracefully.
- Connect Devices:
- Positioning: Point all device cameras at the same flat surface (table/floor).
- Connection:
- Enter the server’s IP:PORT address manually (found in SERVER.md).
- Tap "Join" to sync devices.
- Wait for all players
- Verification:
- Check terminal logs for "Client [IP] connected" confirmation
- Start Drawing:
- Choose colors from the palette in your app
- Draw in the air – your strokes appear when you finish - others will see your drawings
- Walk around - drawings stay anchored to their physical location
🔍 System Verification
To confirm the system is operating correctly:
- Check the server terminal (where you ran npm start).
- Look for these key log messages:
- ✅ "Connecting to MongoDB..."
- ✅ "Successful connection..."
- ✅ "Waiting for connections..."
Q: Why do devices need to be close together?
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 supports theoretically unlimited 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}
}
