Skip to content

gauravnetes/TimeSync

Repository files navigation

TimeSync

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.

Features

  • 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

Tech Stack

  • 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)

Prerequisites

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)

Installation

  1. Clone the repository:

    git clone https://github.com/gauravnetes/TimeSync.git
    cd TimeSync
  2. Install dependencies:

    npm install
    # or
    yarn install
    # or
    pnpm install
  3. Set up environment variables: Create a .env.local file 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
  4. Set up the database:

    # Generate Prisma client
    npm run db:generate
    
    # Run database migrations
    npm run db:migrate

Running the Application

  1. Start the development server:

    npm run dev
  2. Open http://localhost:3000 in your browser.

  3. Sign up or sign in to start using TimeSync.

Usage

Setting Up Your Profile

  1. After signing in, set your username and basic information.
  2. Configure your availability by selecting days and time ranges when you're available for meetings.

Creating Events

  1. Navigate to the Events page.
  2. Click "Create Event" and fill in the details:
    • Event title and description
    • Duration in minutes
    • Privacy setting (public/private)

Booking Meetings

  1. Visit another user's profile page (e.g., /[username]).
  2. Select an available event.
  3. Choose a date and time from the calendar.
  4. Fill in your details and any additional information.
  5. Confirm the booking.

Managing Your Schedule

  • 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.

Google Calendar Integration

To enable Google Calendar synchronization:

  1. Create a project in Google Cloud Console.
  2. Enable the Google Calendar API.
  3. Create OAuth 2.0 credentials.
  4. Add the client ID and secret to your environment variables.
  5. Users will need to authorize the app to access their Google Calendar during booking.

Building for Production

npm run build
npm run start

Linting

npm run lint

Contributing

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Make your changes and commit: git commit -m 'Add some feature'
  4. Push to the branch: git push origin feature/your-feature-name
  5. Open a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you encounter any issues or have questions, please open an issue on GitHub or contact the maintainers.

About

A day to day meeting scheduler software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors