Skip to content

πŸ“… Ignite Call is a scheduling app built with Next.js and TypeScript. It offers real-time availability updates, smart scheduling, Google Calendar integration, a sleek UI, custom Design System, and secure OAuth authentication for a smooth and efficient booking experience.

Notifications You must be signed in to change notification settings

rafaumeu/ignitecall-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

78 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⏰ Ignite Call

A modern scheduling system built with Next.js and TypeScript, featuring Google Calendar integration, Google Meet automation, and advanced scheduling capabilities.

TypeScript Next.js Prisma Ignite UI NextAuth.js Google API


πŸ“– Table of Contents

Features Tech Stack Development Tools
Prerequisites Setup Environment Variables
Project Structure Docker Setup Contributing

πŸš€ Features

Google Integration

  • Google Meet Integration:

    • Automated Google Meet creation for scheduled meetings
    • Direct integration with Google Calendar API
    • Secure OAuth token management and refresh
    • Attendee management and conference data handling
  • Google Calendar Integration:

    • Seamless calendar synchronization
    • OAuth 2.0 authentication with offline access
    • Automatic token refresh mechanism
    • Event creation and management
    • Calendar scope authorization

Scheduling System

  • Advanced Scheduling:
    • Interactive calendar interface with blocked dates
    • Dynamic time slots based on user availability
    • Conflict detection and prevention
    • Past dates blocking
    • Real-time availability updates
    • Multi-step scheduling form with confirmation

User Management

  • Profile System:
    • Custom user profiles with bio
    • Username-based routing
    • Profile customization options
    • Cascade relationship configuration
    • Session management with NextAuth.js

Time Management

  • Availability Control:
    • Flexible weekly schedule configuration
    • Custom time intervals for each day
    • Automated availability calculation
    • Time zone support with Day.js
    • Conflict prevention system

Data Handling

  • Efficient Data Management:
    • React Query for efficient data fetching
    • Optimistic updates
    • Error boundary handling
    • Form validation with Zod
    • Real-time data synchronization

⚑ Tech Stack

Next.js TypeScript Prisma React Hook Form Axios NextAuth.js React Query Day.js


πŸ›  Development Tools

Biome Zod Yarn


πŸ“¦ Prerequisites

  • Node.js 20+ (LTS version)
  • Yarn package manager
  • Docker and Docker Compose
  • Google Cloud Platform account with Calendar and Meet APIs enabled
  • PostgreSQL (production) / SQLite (development)

πŸ› οΈ Setup

  1. Clone the repository:
git clone https://github.com/yourusername/ignite-call.git
cd ignite-call
  1. Install dependencies:
yarn install
  1. Set up environment variables:
cp .env.example .env
  1. Configure Google OAuth:

    • Enable Calendar and Meet APIs in Google Cloud Console
    • Set up OAuth consent screen with required scopes
    • Create OAuth credentials and add redirect URIs
    • Add credentials to .env file
  2. Start the development environment:

docker-compose up -d  # Start PostgreSQL
yarn prisma migrate dev  # Run database migrations
yarn dev  # Start development server

🐳 Docker Setup

The project uses Docker to provide a complete development environment (approximately 300MB). With a single command, you get both the application and database running:

# docker-compose.yml
version: '3'

services:
  postgres:
    image: postgres
    container_name: ignitecall-postgres
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=docker
      - POSTGRES_DB=ignitecall
    volumes:
      - pgdata:/var/lib/postgresql/data

  app:
    build: .
    container_name: ignitecall-app
    ports:
      - 3000:3000
    depends_on:
      - postgres
    environment:
      - DATABASE_URL=postgresql://postgres:docker@postgres:5432/ignitecall

volumes:
  pgdata:

Quick Start with Docker:

# Start the entire application
docker-compose up -d

# The application will be available at http://localhost:3000
# PostgreSQL will be available at postgresql://postgres:docker@localhost:5432/ignitecall

Features of this setup:

  • Complete development environment in a single command
  • PostgreSQL database with persistent data
  • Optimized production-ready Node.js image
  • Automatic database connection
  • Hot reload for development
  • Total size: ~300MB

πŸ”§ Environment Variables

# Database
DATABASE_URL="postgresql://postgres:docker@localhost:5432/ignitecall"

# Google OAuth
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"

# NextAuth.js
NEXTAUTH_SECRET="your-nextauth-secret"
NEXTAUTH_URL="http://localhost:3000"

πŸ—οΈ Project Structure

ignite-call/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ @types/
β”‚   β”‚   └── next-auth.d.ts
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”œβ”€β”€ users/
β”‚   β”‚   β”‚   └── schedule/
β”‚   β”‚   β”œβ”€β”€ schedule/
β”‚   β”‚   └── register/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Calendar/
β”‚   β”‚   β”œβ”€β”€ ScheduleForm/
β”‚   β”‚   └── TimeIntervals/
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ google/
β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   └── prisma.ts
β”‚   └── styles/
β”‚       └── globals.ts
β”œβ”€β”€ prisma/
β”‚   β”œβ”€β”€ migrations/
β”‚   └── schema.prisma
└── biome.json

πŸ“± Components

To be documented based on project implementation.

πŸ“š Documentation

To be added based on project implementation.

πŸ›‘οΈ License

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

🀝 Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: add some amazing feature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Made with ❀️ by Rafael Dias Zendron

LinkedIn GitHub

About

πŸ“… Ignite Call is a scheduling app built with Next.js and TypeScript. It offers real-time availability updates, smart scheduling, Google Calendar integration, a sleek UI, custom Design System, and secure OAuth authentication for a smooth and efficient booking experience.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published