A modern, collaborative wedding planning platform built with Next.js, TypeScript, Tailwind CSS, and InstantDB. Plan your wedding with your family in real-time, all in one beautiful dashboard.
ShaadiBoard provides everything you need to plan a wedding collaboratively:
- Create and organize wedding tasks
- Assign tasks to family members (bride/groom side)
- Drag-and-drop reordering to prioritize tasks
- Mark tasks complete with instant visual feedback
- Filter tasks by side (bride, groom, or both)
- Admin delete permissions
- Track estimated vs. actual expenses
- Organize budget by category (catering, photography, venue, etc.)
- Split budget between bride and groom sides
- Real-time budget calculations and summaries
- Assign payment responsibility to family members
- Visual budget cards with spending breakdowns
- Create wedding events (ceremonies, celebrations, receptions)
- Assign date, time, and venue to each event
- Organize multiple events in one wedding
- Link events to guest invitations
- Maintain a centralized guest list
- Track guest side (bride/groom)
- Link guests to specific events
- RSVP tracking (pending, attending, declined)
- Generate public RSVP link for easy guest responses
- Real-time guest status updates
- Add and compare vendors for different services
- Track quotes from multiple vendors
- Categorize by service type (catering, photography, etc.)
- Quick vendor comparison dashboard
- Invite family members to the wedding board
- Role-based access (admin, member)
- Side-based permissions (bride, groom, both)
- Real-time sync across all team members
- See who's editing in real-time (with Instant presence)
- Magic link email authentication (no passwords)
- Secure guest authentication
- Permission-based access control
- Admin-only destructive actions
- Instant real-time synchronization via InstantDB
- Offline support (continues working without internet)
- Automatic sync when connection restored
- No manual refresh needed
- Node.js 18+ and npm (or pnpm/bun)
- InstantDB account (free tier available at https://instantdb.com)
-
Clone the repository:
git clone https://github.com/yourusername/shaadi-board.git cd shaadi-board -
Install dependencies:
npm install # or pnpm install -
Create an InstantDB app:
npm run instant:init # or npx instant-cli init-without-files --title "ShaadiBoard"
-
Set up environment variables: Create a
.env.localfile:NEXT_PUBLIC_INSTANT_APP_ID=your_app_id_here INSTANT_APP_ADMIN_TOKEN=your_admin_token_here
-
Pull schema and permissions:
npm run instant:pull # or npx instant-cli pull --yes -
Start the development server:
npm run dev
-
Open in browser: Navigate to
http://localhost:3000
shaadi-board/
βββ src/
β βββ app/
β β βββ w/[weddingId]/ # Wedding dashboard pages
β β βββ join/ # Team member invitation link
β β βββ rsvp/[weddingId]/ # Public guest RSVP page
β β βββ layout.tsx
β β βββ page.tsx # Home/wedding hub
β β βββ globals.css
β βββ components/
β β βββ boards.tsx # Feature boards (Tasks, Budget, etc.)
β β βββ ui/ # Reusable UI components
β βββ lib/
β β βββ db.ts # InstantDB client initialization
β β βββ utils.ts
β βββ instant.schema.ts # InstantDB schema definition
β βββ instant.perms.ts # InstantDB permissions
βββ public/
βββ .env.local # Environment variables (git-ignored)
βββ package.json
βββ tsconfig.json
βββ tailwind.config.ts
βββ next.config.ts
βββ README.md
Entities:
$users- Authentication & user profilesweddings- Wedding events and metadatatasks- Checklist tasksbudgetItems- Budget expensesevents- Wedding events (mehendi, sangeet, etc.)guests- Guest list entriesvendors- Vendor information and quotesmembers- Team members with roles and side assignment
Relationships:
- Users β Members β Weddings
- Weddings β Tasks/Budget/Events/Guests/Vendors
- Guests β Events
- Members have roles (admin/member) and sides (bride/groom/both)
ShaadiBoard uses InstantDB for automatic real-time synchronization:
- Changes are instantly reflected across all connected devices
- Offline changes sync automatically when connection restored
- No polling or manual refresh needed
- Built-in conflict resolution
Magic link email authentication flow:
- User enters email
- Receives magic link via email
- Clicks link and logs in instantly
- No password required
- Session persists across browser sessions
| Layer | Technology |
|---|---|
| Framework | Next.js 14+ |
| Language | TypeScript 5.0+ |
| Styling | Tailwind CSS 4.0 + Custom CSS |
| UI Components | Shadcn/ui + Base UI |
| Database | InstantDB (Real-time, No Backend) |
| Auth | InstantDB Magic Links |
| Drag & Drop | dnd-kit |
| Icons | Lucide React |
| Design System | Airbnb Design System |
- Sign in with your email
- Click "Create Wedding" on the home page
- Enter wedding name, date, city
- Start adding tasks, budget items, etc.
- On your wedding dashboard, click "Invite Bride Side" or "Invite Groom Side"
- Share the generated link with family members
- They can join with their email and start collaborating
- Go to the Checklist tab
- Fill in task details (title, assignee, due date, side)
- Click "Add Task"
- Drag to reorder tasks by priority
- Click the circle to mark complete
- Go to the Budget tab
- Click "Add Expense"
- Enter category, estimated amount, responsible side
- View real-time budget totals by side
- Update actual amounts as expenses are paid
- Go to the Guests tab
- Add guests with their name and side
- Link guests to events
- Share the public RSVP link with guests
- Track RSVP responses in real-time
- Admin: Full access, can invite members, delete items
- Member: Can view, create, and edit items based on side assignment
- Bride Side: Can edit bride-side items only
- Groom Side: Can edit groom-side items only
- Both: Can edit all items (typically admin)
Permissions are enforced at:
- Database level (InstantDB rules)
- UI level (button visibility)
- API level (server-side validation)
# Push to GitHub
git push origin main
# Connect repo to Vercel
vercel
# Follow prompts and deploySet in Vercel dashboard:
NEXT_PUBLIC_INSTANT_APP_IDINSTANT_APP_ADMIN_TOKEN
Works on any platform that supports Next.js 14+:
- Netlify
- Firebase Hosting
- AWS Amplify
- Self-hosted Node.js server
ShaadiBoard is fully responsive:
- β Mobile-first design
- β Touch-friendly interface
- β Adaptive layouts
- β Works offline on mobile
Built with the Airbnb Design System:
- Clean, minimal aesthetic
- Consistent typography and spacing
- Brand color: Rausch Pink (#ff385c)
- Smooth animations and transitions
- Accessible color contrasts
Modify colors and tokens in:
src/app/globals.css- Theme variablestailwind.config.ts- Tailwind configuration
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
- Use TypeScript for type safety
- Follow existing code style (Prettier configured)
- Write descriptive commit messages
- Test on mobile before submitting PR
- Update README if adding features
This project is licensed under the MIT License - see the LICENSE file for details.
- InstantDB - Real-time database and authentication
- Next.js - React framework
- Tailwind CSS - Utility-first CSS
- Shadcn/ui - Beautiful React components
- Airbnb Design System - Design inspiration
- π InstantDB Docs
- π Next.js Documentation
- π Report a bug
- π¬ Discussions
Made with π for Indian weddings. Happy planning!
β If you find this useful, please consider giving it a star!