A privacy-focused, decentralized social networking web application that enables direct peer communication and local data storage.
- Privacy-First: All data is stored locally in your browser
- No Server Required: Runs entirely on the client side
- Location-Based Discovery: Find and connect with people nearby
- Real-Time Messaging: Chat directly with other users
- Modern UI: Built with React, TypeScript, and Tailwind CSS
- Responsive Design: Works seamlessly on desktop and mobile
- Dark Mode Support: Automatic theme detection and switching
- Frontend Framework: React 18+ with TypeScript
- Build Tool: Vite
- UI Framework: Shadcn/ui components with Tailwind CSS
- Data Storage: IndexedDB (via
idb
library) - State Management: React Context
- Peer Communication: WebRTC (planned)
- Node.js 16+
- npm or yarn
- Clone the repository:
git clone https://github.com/sydfernandes/LocalDate.git
cd LocalDate
- Install dependencies:
npm install
# or
yarn
- Start the development server:
npm run dev
# or
yarn dev
- Open http://localhost:5173 in your browser
npm run build
# or
yarn build
The build output will be in the dist
directory.
src/
├── components/ # React components
│ ├── auth/ # Authentication components
│ ├── chat/ # Messaging components
│ ├── users/ # User-related components
│ └── ui/ # Reusable UI components
├── contexts/ # React contexts
│ ├── AuthContext # Authentication state
│ ├── LocationContext# Geolocation management
│ └── MessageContext # Messaging state
├── lib/ # Utilities and services
│ ├── db.ts # IndexedDB database service
│ └── utils.ts # Helper functions
├── types/ # TypeScript type definitions
└── App.tsx # Root component
- Local, token-based authentication
- Persistent login state using IndexedDB
- No server-side authentication required
- Real-time location tracking
- Privacy-focused location sharing controls
- Nearby user discovery using Haversine formula
- Direct peer-to-peer messaging
- Real-time message updates
- Unread message indicators
- Message timestamps
- Conversation management
- All data stored locally in IndexedDB
- No third-party tracking
- Optional location sharing
- User-controlled privacy settings
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.