TimeSync is a modern scheduling application built with Next.js that allows users to manage their availability, create events, and book meetings seamlessly. It integrates with Google Calendar for automatic event synchronization and uses Clerk for secure user authentication.
- User Authentication: Secure sign-in and sign-up using Clerk
- Availability Management: Set your weekly availability with customizable time slots
- Event Creation: Create public or private events with specified durations
- Meeting Booking: Book meetings with other users through their event pages
- Dashboard: View your upcoming bookings and events
- Google Calendar Integration: Automatic synchronization of booked meetings
- Responsive Design: Modern UI built with Tailwind CSS and Radix UI components
- Frontend: Next.js 15, React 19, Tailwind CSS
- Backend: Next.js API routes
- Database: PostgreSQL with Prisma ORM
- Authentication: Clerk
- UI Components: Radix UI, Lucide React icons
- Forms: React Hook Form with Zod validation
- Calendar: React Day Picker
- Deployment: Vercel (recommended)
Before running this application, make sure you have the following installed:
- Node.js 18+ and npm/yarn/pnpm
- PostgreSQL database
- Google Cloud Console account (for Calendar integration)
- Clerk account (for authentication)
-
Clone the repository:
git clone https://github.com/gauravnetes/TimeSync.git cd TimeSync -
Install dependencies:
npm install # or yarn install # or pnpm install
-
Set up environment variables: Create a
.env.localfile in the root directory with the following variables:DATABASE_URL="postgresql://username:password@localhost:5432/timesync" NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key CLERK_SECRET_KEY=your_clerk_secret_key NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/ NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/ GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret
-
Set up the database:
# Generate Prisma client npm run db:generate # Run database migrations npm run db:migrate
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser.
-
Sign up or sign in to start using TimeSync.
- After signing in, set your username and basic information.
- Configure your availability by selecting days and time ranges when you're available for meetings.
- Navigate to the Events page.
- Click "Create Event" and fill in the details:
- Event title and description
- Duration in minutes
- Privacy setting (public/private)
- Visit another user's profile page (e.g.,
/[username]). - Select an available event.
- Choose a date and time from the calendar.
- Fill in your details and any additional information.
- Confirm the booking.
- Use the Dashboard to view upcoming bookings and events.
- Access the Meetings page to see all your scheduled meetings.
- Cancel meetings if needed through the meeting details.
To enable Google Calendar synchronization:
- Create a project in Google Cloud Console.
- Enable the Google Calendar API.
- Create OAuth 2.0 credentials.
- Add the client ID and secret to your environment variables.
- Users will need to authorize the app to access their Google Calendar during booking.
npm run build
npm run startnpm run lint- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes and commit:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature-name - Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions, please open an issue on GitHub or contact the maintainers.