Inspiration
What it does
Inspiration
Every family has the same problem: birthdays get forgotten, gatherings go unplanned, and group chats become chaos. We wanted a private, invite-only space where a family could manage their own events without relying on public social platforms or messy spreadsheets.
What It Does
KinEvents is a full-stack family event management platform with:
- Access control — Admins approve/reject join requests; users get JWT tokens on approval
- Events — Create, RSVP, and manage custom or birthday events with image and online link support
- Birthdays — Automatic birthday tracking, upcoming previews, and reminder notifications
- Notifications — In-app and email notifications for events, RSVPs, birthdays, and access changes
- Family chat — Paginated group messaging with read receipts and soft-delete
- Admin dashboard — User management, role promotion, site content editing, email logs, and data cleanup
- Email system — Transactional emails via Gmail/Resend with templated HTML layouts and retry support
How We Built It
Backend (Node.js / TypeScript):
- Express app deployed as an AWS Lambda function via SAM
- MongoDB single-document datastore with in-memory fallback for local dev
- JWT authentication with live DB role verification on every request (
withAuthmiddleware) - Zod input validation on all routes
- Modular service layer:
authService,eventService,birthdayService,notificationService,emailService - 100+ Jest tests covering middleware, handlers, services, and integration flows
Frontend (React / TypeScript):
- Vite + Tailwind CSS v4 with a warm coral/mint design system
- TanStack Query for server state, Zustand for auth persistence
- React Router v6 with protected and admin-only route guards
- Mobile-first layout with a bottom nav, collapsible sidebar, and smooth Framer Motion transitions
- Silent re-authentication on token expiry with automatic redirect on hard failures
Challenges
- JWT staleness — We needed live DB lookups on every authenticated request so that role changes take effect immediately without requiring a new token. This meant the
withAuthmiddleware always cross-checks the JWT payload against the database. - Single-document MongoDB — Storing all app data in one document simplifies queries but required careful serialization, upsert logic, and a write queue to avoid race conditions across Lambda invocations.
- Route ordering in Express — Static paths like
/api/users/promotehad to be registered before dynamic ones like/api/users/:id, which required explicit ordering inapp.ts. - Email reliability — Building a transport-agnostic email layer that supports Gmail app passwords, Resend, graceful degradation, retry tracking, and templated HTML without a dedicated email service was a significant undertaking.
What We Learned
- Designing auth middleware that enforces live role changes without sacrificing performance
- Building a full transactional email system with templates, logs, and retries from scratch
- Making a serverless app feel stateful through careful DB initialization and persistence strategies
- The value of integration tests that exercise the full API against real data
What's Next
- Push notification support (Web Push / Expo)
- Password-based login option
- Real-time chat with WebSockets
- Photo album / memory sharing per event
- Mobile app (React Native) ## How I built it
Challenges I ran into
Accomplishments that I'm proud of
What I learned
What's next for kinEvents
Built With
- aws-lambda
- express.js
- framer-motion
- jwt
- mongodb
- node.js
- nodemailer
- react
- sendgrid
- tailwind-css
- tanstack-query
- typescript
- vercel
- zod
- zustand
Log in or sign up for Devpost to join the conversation.