A modern, responsive Progressive Web App for discovering and creating developer events, meetups, and conferences worldwide.
Production URL: https://gatherio.netlify.app
- Event Discovery - Browse upcoming developer events with advanced filtering
- Event Creation - Comprehensive event creation with image upload
- PWA Support - Installable app with offline functionality
- Real-time Search - Search events by title, description, and tags
- Multi-view Layout - Grid and list views for events
- Responsive Design - Mobile-first design that works on all devices
- Next.js 16 - App Router with Server-Side Rendering
- TypeScript - Fully typed for better development experience
- MongoDB Atlas - Cloud database with optimized queries
- Cloudinary - Image upload and optimization
- PWA - Service worker, offline support, and app-like experience
- Modern UI - Tailwind CSS with custom design system
- Next.js 16 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- Heroicons - Beautiful SVG icons
- OGL - WebGL background effects
- Next.js API Routes - Serverless functions
- MongoDB Atlas - Cloud database
- Mongoose - MongoDB object modeling
- Cloudinary - Image and media management
- Netlify - Hosting and continuous deployment
- MongoDB Atlas - Database hosting
- Cloudinary - CDN for images
- Node.js 18+
- MongoDB Atlas account
- Cloudinary account
- Clone the repository
git clone https://github.com/pborade90/gatherio.git
cd gatherio- Install dependencies
npm install- Environment Setup
cp .env.example .env.local- Configure Environment Variables
# MongoDB
MONGODB_URI=your_mongodb_atlas_connection_string
# Next.js
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret
# Base URL
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# Cloudinary
CLOUDINARY_URL=cloudinary://key:secret@cloud_name
# PostHog (Optional)
NEXT_PUBLIC_POSTHOG_KEY=your_posthog_key
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com- Run the development server
npm run devOpen http://localhost:3000 in your browser.
gatherio/
βββ app/ # Next.js 14 App Router
β βββ api/ # API routes
β β βββ events/ # Events CRUD operations
β β βββ upload/ # Image upload handling
β βββ events/ # Events pages
β βββ create-event/ # Event creation page
β βββ layout.tsx # Root layout
βββ components/ # Reusable React components
β βββ EventCard.tsx # Event card component
β βββ EventDetails.tsx # Event details page
β βββ CreateEventForm.tsx # Event creation form
β βββ Navbar.tsx # Navigation component
β βββ LightRays.tsx # Background animation
βββ database/ # Database models and types
β βββ event.model.ts # Mongoose event model
β βββ index.ts # Database connection
βββ lib/ # Utility libraries
β βββ actions/ # Server actions
β βββ constants.ts # Application constants
β βββ utils.ts # Helper functions
β βββ mongodb.ts # MongoDB connection
βββ public/ # Static files
β βββ icons/ # PWA icons
β βββ manifest.json # PWA manifest
β βββ sw.js # Service worker
βββ types/ # TypeScript type definitions
-
Connect Repository
- Fork this repository
- Connect your GitHub repo to Netlify
-
Environment Variables
- Set all environment variables in Netlify dashboard
Site settingsβEnvironment variables
-
Build Settings
- Build command:
npm run build - Publish directory:
.next
- Build command:
-
Deploy
- Netlify will auto-deploy on git push
- Or trigger manual deploy from Netlify dashboard
MONGODB_URI=your_production_mongodb_uri
NEXT_PUBLIC_BASE_URL=https://your-domain.netlify.app
CLOUDINARY_URL=your_cloudinary_url
# ... other variables same as development- Installable - Add to home screen on mobile and desktop
- Offline Support - Basic functionality works offline
- Fast Loading - Service worker caching for performance
- App-like Experience - Full-screen mode on mobile
# Build and test PWA locally
npm run build
npm start
# Test with Lighthouse
# Open Chrome DevTools β Lighthouse β Run PWA auditinterface IEvent {
_id: ObjectId;
title: string;
slug: string;
description: string;
overview: string;
image: string;
venue: string;
location: string;
date: string;
time: string;
mode: 'online' | 'offline' | 'hybrid';
audience: string;
organizer: string;
tags: string[];
agenda: string[];
price?: number;
capacity?: number;
registrationUrl?: string;
createdAt: Date;
updatedAt: Date;
}GET /api/events- Get events with pagination and filteringGET /api/events/[slug]- Get single event by slugPOST /api/events- Create new eventPOST /api/upload- Handle image uploads
- Colors: Custom gradient system with primary and accent colors
- Typography: Inter font family
- Spacing: 8px base unit system
- Components: Reusable card, button, and form components
EventCard- Event listing cardCreateEventForm- Multi-step event creationLightRays- Animated WebGL backgroundBookEvent- Event registration form
This project is only for educational purpose
- TypeScript strict mode enabled
- ESLint and Prettier configuration
- Component-driven development
- Mobile-first responsive design
Event details 404 on Netlify
- Check MongoDB Atlas network access
- Verify environment variables in Netlify
- Test API endpoints directly
Image upload failures
- Verify Cloudinary configuration
- Check file size and format restrictions
- Review Cloudinary dashboard for errors
PWA installation issues
- Ensure manifest.json is accessible
- Check service worker registration
- Verify HTTPS in production
- Next.js Team - Amazing React framework
- Tailwind CSS - Utility-first CSS framework
- MongoDB - Database solution
- Cloudinary - Image management platform
For support, please open an issue in the GitHub repository.
Built with β€οΈ for the developer community