Plektos is a decentralized meetup platform built on Nostr. It enables users to create, join, and manage event. As a decentralized application, Plektos gives users full control over their data and event management without relying on centralized services.
- π― Create and manage events with detailed information
- π Schedule and organize meetups
- π Location-based event discovery with smart address search
- π Advanced Recurring Events - Create recurring event series with flexible patterns
- Daily, weekly, and monthly recurrence options
- Advanced monthly patterns (e.g., "3rd Thursday of every month")
- Custom repeat intervals and occurrence limits
- Visual preview of generated events
- πΊοΈ Interactive map view to visualize events geographically
- π Distance-based sorting to find events near you
- β‘ Use Zaps to pay for event tickets
- π Real-time notifications for RSVPs, comments, and zaps
- π± Enhanced Calendar Integration - Direct calendar app integration with multiple providers
- π‘οΈ Decentralized data storage through Nostr
- π User-controlled data and privacy settings
- π Optional anonymous participation
- π Built with React 18 and Vite for optimal performance
- π¨ Modern UI components using shadcn/ui and TailwindCSS
- π± Responsive design for all devices
- π Dark mode support
- π Real-time updates
- π Advanced search and filtering capabilities
- π Geolocation support with geohash encoding (NIP-52)
- πΊοΈ Interactive maps powered by Leaflet and OpenStreetMap
- π Smart location search using Nominatim geocoding API
- Frontend Framework: React 18.x
- Styling: TailwindCSS 3.x
- Build Tool: Vite
- UI Components: shadcn/ui
- Nostr Integration: Nostrify
- State Management: TanStack Query
- Routing: React Router
- Type Safety: TypeScript
- Maps & Geolocation: Leaflet, React Leaflet, OpenStreetMap
- Geocoding: Nominatim API
- Node.js 18.x or later
- npm or yarn package manager
-
Clone the repository:
git clone https://github.com/derekross/plektos.git cd plektos -
Install dependencies:
npm install # or yarn install -
Start the development server:
npm run dev # or yarn dev -
Open your browser and navigate to
http://localhost:5173
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run test- Run testsnpm run lint- Run linternpm run format- Format code with Prettier
plektos/
βββ src/
β βββ components/ # UI components
β β βββ MapView.tsx # Interactive map component
β β βββ LocationSearch.tsx # Location search with geocoding
β βββ hooks/ # Custom React hooks
β βββ pages/ # Page components
β βββ lib/ # Utility functions
β β βββ geolocation.ts # Distance calc, geohash encoding
β β βββ nominatim.ts # Location search API
β βββ main.tsx # Application entry point
βββ public/ # Static assets
βββ package.json # Project dependencies
Plektos includes an interactive map powered by Leaflet that displays all events with geographic coordinates. The map automatically:
- Shows event markers with clickable popups containing event details
- Fits bounds to display all visible events
- Displays event status (live events, in-person events)
- Links directly to event detail pages
To use the map view:
- Navigate to the home page
- Click the "Map" toggle button (alongside Grid and Calendar views)
- Click on any marker to see event details
- Click "Click for details β" in the popup to view the full event
Find events near you with distance-based sorting:
- Open the filters panel on the home page
- Use the "Filter by Location" search
- Type an address, city, or landmark (e.g., "Times Square, New York" or "Eiffel Tower, Paris")
- Select a location from the dropdown
- Events will automatically sort by distance from your selected location
- Distance badges appear on event cards (e.g., "5.2km away")
When creating or editing events, the location search provides:
- Global coverage: Search for any address worldwide
- Accurate geocoding: Uses OpenStreetMap's Nominatim API
- Automatic coordinate storage: Saves latitude/longitude as geohash (NIP-52 standard)
- Intelligent debouncing: Reduces API calls while typing
Tips for best results:
- Be specific: Include street numbers, city, and state/country
- Use full addresses when possible
- Try different formats if one doesn't work (e.g., "NYC" vs "New York City")
- Minimum 2 characters required to search
Events store location data following the Nostr NIP-52 standard:
- Geohash (
gtag): 9-character encoded coordinates (~4.8m precision) - Raw coordinates (
lat/lontags): Stored for backward compatibility - Human-readable address (
locationtag): Display text for users
Plektos now features a comprehensive recurring events system inspired by Eventbrite's professional event management:
-
π Flexible Recurrence Patterns
- Daily events (every N days)
- Weekly events (specific days of the week)
- Monthly events (same day or advanced patterns like "3rd Thursday")
-
π Advanced Monthly Patterns
- Same day of month (e.g., "15th of every month")
- Same weekday of month (e.g., "3rd Thursday of every month")
- Last weekday of month (e.g., "Last Friday of every month")
-
π Visual Event Preview
- See exactly what events will be created before submission
- Preview shows dates, times, and locations for each occurrence
- Easy editing of individual events after creation
- 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.
- Nostr Protocol
- shadcn/ui
- TailwindCSS
- Vite
- React
- Leaflet - Interactive map library
- OpenStreetMap - Map tiles and geocoding data