DevEvent is a production-ready event platform built for developer communities. Attendees can discover events, register in seconds, receive QR tickets, join waitlists, follow organizers, and add events to their calendars. Organizers get a full operating dashboard for publishing events, managing tickets, sending announcements, checking attendees in, tracking referrals, issuing refunds, and reviewing feedback.
It is designed for real-world event workflows: free RSVPs, paid ticketing, capacity limits, approvals, waitlists, promo codes, co-host access, webhooks, lifecycle emails, cron jobs, SEO, analytics, monitoring, and CI.
|
|
|
| Area | Stack |
|---|---|
| App | Next.js 16 App Router, React 19, TypeScript |
| Styling | Tailwind CSS 4, custom design system, Framer Motion, GSAP |
| Data | MongoDB Atlas, Mongoose, Upstash Redis |
| Auth | NextAuth v5, credentials auth, Google OAuth |
| Payments | Razorpay, Stripe, Stripe Connect |
| Resend transactional emails | |
| Media | Cloudinary, Next Image |
| Analytics and monitoring | PostHog, Sentry, /api/health |
| Testing and CI | Vitest, mongodb-memory-server, GitHub Actions |
| Deployment | Vercel, GitHub Actions cron workflows |
flowchart LR
A["Organizer creates event"] --> B["Draft validation"]
B --> C["Published event page"]
C --> D["Attendee registration"]
D --> E{"Capacity available?"}
E -->|Yes| F["Confirmed ticket + QR"]
E -->|No| G["Waitlist"]
G --> H["Auto-promotion when seats open"]
F --> I["Calendar + email reminders"]
I --> J["QR check-in"]
J --> K["Feedback + payout summary"]
- Node.js 24 recommended
- npm 11+
- MongoDB Atlas connection string
- Optional: Upstash Redis, Resend, Cloudinary, Razorpay, Stripe, PostHog, Sentry
git clone https://github.com/YashVarpe05/DevEvent.git
cd DevEvent
npm install
cp .env.example .env.local
npm run devOpen http://localhost:3000.
At minimum, fill these in .env.local:
MONGODB_URI=mongodb+srv://user:password@cluster.mongodb.net/devevents
NEXTAUTH_SECRET=replace-with-a-long-random-secret
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_BASE_URL=http://localhost:3000npx tsx scripts/seed-demo-data.tsDefault demo password:
Demo@1234
The seed script creates sample organizers, attendees, events, tickets, and registrations. You can override the email base:
SEED_EMAIL_BASE=you@gmail.com npx tsx scripts/seed-demo-data.tsSee .env.example for the full list. The most important values are:
| Variable | Required | Purpose |
|---|---|---|
MONGODB_URI |
Yes | MongoDB Atlas connection string with a database name |
NEXTAUTH_SECRET |
Yes | Auth and token signing secret |
NEXTAUTH_URL |
Production | Canonical auth callback URL |
NEXT_PUBLIC_BASE_URL |
Production | Canonical public site URL for emails, metadata, and calendar links |
CRON_SECRET |
Production | Protects scheduled job endpoints |
UPSTASH_REDIS_REST_URL / UPSTASH_REDIS_REST_TOKEN |
Recommended | Distributed rate limiting and caching |
RESEND_API_KEY / RESEND_FROM_EMAIL |
Transactional email delivery | |
RAZORPAY_KEY_ID / RAZORPAY_KEY_SECRET |
Paid events | India-first payment processing |
STRIPE_* |
Optional | Stripe payments, webhooks, and Connect |
CLOUDINARY_URL |
Media uploads | Image storage |
SENTRY_DSN / NEXT_PUBLIC_SENTRY_DSN |
Optional | Error monitoring |
Production boot validates critical values through instrumentation.ts. Optional integrations degrade gracefully when unset.
| Command | Purpose |
|---|---|
npm run dev |
Start the local dev server |
npm run build |
Create a production build |
npm start |
Start the production server |
npm run lint |
Run ESLint |
npm test |
Run the Vitest suite |
npm run preflight |
Check production-facing configuration without printing secrets |
npm run db:indexes |
Ensure MongoDB indexes exist |
npx tsc --noEmit |
Run TypeScript checks |
npm testThe integration suite uses mongodb-memory-server, so tests do not require a local MongoDB process. The first run may download a MongoDB binary and can take longer than later runs.
CI runs on every push and pull request:
- Install dependencies
- Typecheck
- Run tests
- Build the production app
DevEvent is deployed on Vercel.
Production:
Read the full launch runbook in docs/DEPLOYMENT.md. It covers Vercel setup, environment variables, custom domains, Google OAuth, Razorpay and Stripe webhooks, scheduled jobs, and post-deploy smoke tests.
Scheduled work is handled by GitHub Actions:
| Workflow | Purpose |
|---|---|
| .github/workflows/cron-hourly.yml | Event lifecycle reminders |
| .github/workflows/cron-daily.yml | Event cleanup and organizer payout summaries |
| .github/workflows/ci.yml | Typecheck, tests, and build |
app/ Next.js App Router pages, layouts, API routes, metadata
components/ Reusable UI and feature components
database/ Mongoose models
hooks/ Client-side React hooks
lib/ Auth, email, payments, caching, analytics, validations
scripts/ Seed, preflight, and database utility scripts
docs/ Deployment and feature documentation
__tests__/ Vitest integration and unit tests
public/ Static assets and share images
- QR tickets are signed and verified before check-in.
- Payment webhooks verify provider signatures before mutating orders.
- API inputs are validated with Zod and scoped to the authenticated user.
- Cron endpoints require
CRON_SECRET. - Rate limiting uses Upstash Redis in production and a local fallback in development.
- Secrets belong in
.env.local, Vercel environment variables, or GitHub Secrets. Never commit real credentials.
- Public organizer verification badges
- Event collections and curated city pages
- Mobile-first check-in operator mode
- Better attendee recommendations
- Admin analytics for platform health
- Native calendar subscription improvements
Contributions are welcome. A good local loop is:
npm install
npm run preflight
npx tsc --noEmit
npm test
npm run buildKeep changes focused, add tests for risky behavior, and update docs when workflows or environment requirements change.
No license file is currently committed. Add a LICENSE file before accepting external reuse or distribution.
