A full-stack scheduling app to simplify your time management.
Introducing Meetly β your intelligent, modern-day meeting scheduling solution! Inspired by Calendly, this clone brings seamless, efficient scheduling to life. Crafted with a robust MERN-ish stack: Node.js, TypeORM, PostgreSQL, and React.js, Meetly empowers users to book, manage, and sync meetings β all in a clean, responsive interface.
π§ Smart availability logic, timezone-aware booking, and elegant UI make Meetly the ultimate productivity ally.
- π Secure Auth β Effortless JWT-based sign-up & login
- ποΈ Event Creation β Private or public events at your fingertips
- π Sharable Links β Share custom booking links, book instantly!
- β³ Availability Control β Define time slots, prevent double-booking
- π Timezone Support β Auto-detection for global coordination
- ποΈ Custom Calendar UI β Built from scratch, no plugins
- π Google Calendar Integration β Sync with Google Meet & Calendar
- β Meeting Dashboard β Track upcoming, past & canceled meetings
- π§ Time Format Toggle β Choose between 12h & 24h display
- π₯ Email Notifications β Stay in the loop with meeting alerts
- π§Ή Modular Codebase β Scalable and maintainable architecture
- π» Tech Stack β Node.js β’ TypeORM β’ PostgreSQL β’ React.js
- π¨ Modern UI β Styled with TailwindCSS v4 & Shadcn UI
Meetly brings together the best of modern web development:
| π» Backend | π Frontend | π οΈ Dev Tools | π Integration |
|---|---|---|---|
| Node.js | React.js | Vite.js | Google Calendar API |
| TypeORM | TailwindCSS v4 | TypeScript | OAuth 2.0 |
| PostgreSQL | Shadcn UI | JWT Authentication | Google Meet Integration |
Spin up your own instance of Meetly in just a few steps:
git clone https://github.com/BernieTv/Calendly-Clone.git
cd Calendly-CloneNavigate to the backend directory and create a .env file:
cd backend
touch .envAdd the following configuration:
PORT=8000
NODE_ENV=development
DATABASE_URL="postgresql://<USER>:<PASSWORD>@<HOST>:<PORT>/<DB_NAME>"
JWT_SECRET="your_jwt_secret"
JWT_EXPIRES_IN="1d"
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI="http://localhost:8000/api/integration/google/callback"
FRONTEND_ORIGIN=http://localhost:5173
FRONTEND_INTEGRATION_URL=http://localhost:5173/app/integrationsπ‘οΈ These settings configure the server, database, authentication, and Google integrations.
Move into the /frontend folder and create a .env file:
cd ../frontend
touch .envThen add:
VITE_APP_ORIGIN="http://localhost:5173"
VITE_API_BASE_URL="http://localhost:8000/api"βοΈ This enables the frontend to properly interact with the backend API.
Install dependencies for both backend and frontend:
# Backend
cd ../backend
npm install
# Frontend
cd ../frontend
npm install# Start backend server
cd ../backend
npm run dev
# Start frontend server
cd ../frontend
npm run dev- π― Backend API available at:
http://localhost:8000 - π» Frontend app running at:
http://localhost:5173
- β API tested using Postman with secured endpoints
- π‘οΈ Strong schema validation with TypeORM decorators and DB constraints
backend/src
βββ @types
βββ config
βββ controllers
βββ database
βββ enums
βββ middlewares
βββ routes
βββ services
βββ utils
βββ index.tsfrontend/src
βββ assets
βββ components
βββ context
βββ hooks
βββ layout
βββ lib
βββ pages
βββ routes
βββ store
βββ types
βββ App.tsx
βββ index.css
βββ main.tsx
βββ vite-env.d.ts- π Email & SMS notifications via Nodemailer/Twilio
- π Analytics dashboard for user scheduling trends
- π₯ Team scheduling with round-robin support
- π§Ή Third-party webhooks & Zapier integration
- π± Improved mobile responsiveness and PWA support