Skip to content

Mnpezz/plektos

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Plektos

About Plektos

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.

Features

Event Management

  • 🎯 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

Privacy & Security

  • πŸ›‘οΈ Decentralized data storage through Nostr
  • πŸ”’ User-controlled data and privacy settings
  • 🎭 Optional anonymous participation

Technical Features

  • πŸš€ 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

Tech Stack

  • 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

Getting Started

Prerequisites

  • Node.js 18.x or later
  • npm or yarn package manager

Installation

  1. Clone the repository:

    git clone https://github.com/derekross/plektos.git
    cd plektos
  2. Install dependencies:

    npm install
    # or
    yarn install
  3. Start the development server:

    npm run dev
    # or
    yarn dev
  4. Open your browser and navigate to http://localhost:5173

Development

Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run preview - Preview production build
  • npm run test - Run tests
  • npm run lint - Run linter
  • npm run format - Format code with Prettier

Project Structure

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

Location Features

Map View

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:

  1. Navigate to the home page
  2. Click the "Map" toggle button (alongside Grid and Calendar views)
  3. Click on any marker to see event details
  4. Click "Click for details β†’" in the popup to view the full event

Location-Based Filtering

Find events near you with distance-based sorting:

  1. Open the filters panel on the home page
  2. Use the "Filter by Location" search
  3. Type an address, city, or landmark (e.g., "Times Square, New York" or "Eiffel Tower, Paris")
  4. Select a location from the dropdown
  5. Events will automatically sort by distance from your selected location
  6. Distance badges appear on event cards (e.g., "5.2km away")

Smart Address Search

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

Geolocation Data Format

Events store location data following the Nostr NIP-52 standard:

  • Geohash (g tag): 9-character encoded coordinates (~4.8m precision)
  • Raw coordinates (lat/lon tags): Stored for backward compatibility
  • Human-readable address (location tag): Display text for users

Recurring Events System

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

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

Plektos is a decentralized meetup, events, and calendar platform built on Nostr.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.9%
  • JavaScript 1.1%
  • Other 1.0%