Privacy-First Real-Time Location Sharing
LocShare is a simple, elegant, and privacy-focused application that allows you to share your real-time location with friends and family using a simple passkey. No accounts, no tracking, no footprints.
This app is hosted and live on Render: https://locshare-xj5k.onrender.com/
- π Real-Time Sharing: Powered by WebSockets (Socket.io) for instant location updates across all devices.
- π‘οΈ Privacy First:
- No user accounts or passwords required.
- No personal data or location history stored.
- Stop Sharing toggle to instantly hide your location while staying in the room.
- Ephemeral sessions that disappear when you're done.
- οΏ½ Smart Pairing:
- Link & QR Sharing: Effortlessly invite friends via direct links or scannable QR codes.
- Optional Passkey: Create custom group passkeys or leave it blank to auto-generate a unique 6-character key.
- Auto-Join: Share links include the session code for instant one-click joining.
- πΊοΈ Interactive Maps: High-performance vector maps powered by Mapbox GL JS with support for multiple styles (Streets, Navigation, Dark, Satellite) and a one-click Compass to reset bearing to North.
- π§ Smart Navigation: One-tap navigation shortcuts for Google Maps, Apple Maps, and Waze.
- π Distance Tracking: Real-time distance calculation between you and other group members.
- π‘ Live Addresses: Integrated reverse-geocoding displays the nearest street address for all members.
- π¨ Personalized Pins: Customize your profile with a range of colors and icons.
- π Server Health Dashboard: Password-protected real-time monitoring of active users and sessions.
- π Internationalization: Multi-language support for English, Spanish, French, German, Italian, and Portuguese.
- React 18 + TypeScript
- Vite for blazing fast builds
- Tailwind CSS + shadcn/ui for premium aesthetics
- Framer Motion for smooth animations
- Zustand for lightweight state management
- Mapbox GL JS for advanced map rendering
- qrcode.react for session QR code generation
- i18next for multi-language support
- Node.js + Express
- Socket.io for real-time bidirectional communication
- Tailwind-styled Health Dashboard for system monitoring
- Node.js (v18 or later)
- npm or pnpm
-
Clone the repository:
git clone https://github.com/Panos1221/LocShare.git cd group-share -
Install dependencies:
npm install
To run the full stack, you need to start both the frontend and the backend server.
npm run start:server
The server will run on http://localhost:3000. You can view the health dashboard at http://localhost:3000/health.
npm run dev
The app will be available at the URL shown in your terminal (usually http://localhost:8080).
LocShare requires a Mapbox Access Token to display maps.
- You will be prompted to enter your token within the app if it's not detected.
- You can get a free token by creating an account at mapbox.com.
Create a .env file in the root directory with the following structure:
# Backend Server Configuration PORT=3000 HEALTH_PASSWORD=your_secure_password_here # Frontend Configuration (Vite) # Optional: WebSocket server URL (defaults to localhost:3000 in dev, window.location.origin in prod) VITE_WS_URL=http://localhost:3000 # Mapbox Access Token (can also be set via localStorage in the app) VITE_MAPBOX_TOKEN=your_mapbox_token_here
βββ src/
β βββ components/ # UI components (shadcn + custom)
β β βββ color/ # Color picker components
β β βββ landing/ # Landing page sections
β β βββ layout/ # Layout components (Header, Footer, NavLink)
β β βββ map/ # Map-related components
β β βββ session/ # Session management components
β β βββ ui/ # shadcn/ui components
β βββ lib/ # Utilities, stores, and configuration
β βββ pages/ # Main application views
β βββ hooks/ # Custom React hooks
βββ public/ # Static assets
βββ server/ # Backend server
β βββ index.js # Socket.io backend implementation
βββ tailwind.config.ts # Visual theme configuration
This project is licensed under the MIT License.
Built for privacy and real-time connectivity.