https://github.com/rafaumeu/ignitecall-app
📅 Scheduling app with Google Calendar OAuth, Prisma ORM, Design System and Next.js SSR. Full-stack appointment management.
https://github.com/rafaumeu/ignitecall-app
api-rest appointment-booking authentication biomejs calendar google-calendar ignit-ui nextjs prisma react-hook-form scheduling scheduling-system typescript zod
Last synced: 2 months ago
JSON representation
📅 Scheduling app with Google Calendar OAuth, Prisma ORM, Design System and Next.js SSR. Full-stack appointment management.
- Host: GitHub
- URL: https://github.com/rafaumeu/ignitecall-app
- Owner: rafaumeu
- Created: 2025-01-27T20:08:59.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-04-22T23:55:11.000Z (2 months ago)
- Last Synced: 2026-04-23T01:29:47.490Z (2 months ago)
- Topics: api-rest, appointment-booking, authentication, biomejs, calendar, google-calendar, ignit-ui, nextjs, prisma, react-hook-form, scheduling, scheduling-system, typescript, zod
- Language: TypeScript
- Homepage: https://ignitecall-app.vercel.app
- Size: 705 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- Security: SECURITY.md
Awesome Lists containing this project
README
# ⏰ Ignite Call
A modern scheduling system built with Next.js and TypeScript, featuring Google Calendar integration, Google Meet automation, and advanced scheduling capabilities.
[](https://www.typescriptlang.org/)
[](https://nextjs.org/)
[](https://www.prisma.io/)
[](https://github.com/rocketseat/ignite-ui)
[](https://next-auth.js.org/)
[](https://developers.google.com/apis)
[](https://codecov.io/gh/rafaumeu/ignitecall-app)
[](https://codecov.io/gh/rafaumeu/ignitecall-app)
[](https://github.com/rafaumeu/ignitecall-app/actions/workflows/ci.yml)
**🌐 [Live Demo](https://ignitecall-app.vercel.app)** • **📸 [Screenshots](#-screenshots)**
---
## 📖 Table of Contents
| [Features](#-features) | [Tech Stack](#-tech-stack) | [Development Tools](#-development-tools) |
|----------------------|---------------------------|------------------------------------------|
| [Prerequisites](#-prerequisites) | [Setup](#️-setup) | [Environment Variables](#-environment-variables) |
| [Project Structure](#️-project-structure) | [Docker Setup](#-docker-setup) | [Contributing](#-contributing) |
---
## 📸 Screenshots
| Scheduling | Calendar | Profile |
|:---:|:---:|:---:|
| *Scheduling form with date/time selection* | *Interactive calendar with availability* | *User profile with bio* |
## 🚀 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








---
## 🛠 Development Tools



---
## 🔄 CI/CD Pipeline
### Continuous Integration
Our CI pipeline automatically runs on every push and pull request:
- **Code Quality Checks**:
- TypeScript type checking
- ESLint for code style
- Biome formatting validation
- Super-linter for additional checks
- **Testing Strategy**:
- Unit tests with Vitest
- Multi-node version testing (16, 18, 20)
- Automated test runs on pull requests
### Automated Workflows
- **Project Board Automation**:
- Automatic issue/PR tracking
- Status updates (Todo → In Progress → Done)
- Integration with GitHub Projects
- **Pull Request Management**:
- Automated PR labeling
- Code review enforcement
- Branch protection rules
### Workflow Files
- `ci.yml`: Main CI pipeline
- `code-review.yml`: Code quality checks
- `project-automation.yml`: Project board automation
- `labeler.yml`: PR labeling automation
To view the workflow runs, visit the [Actions tab](https://github.com/rafaumeu/ignitecall-app/actions) in the repository.
---
## 📦 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:
```bash
git clone https://github.com/rafaumeu/ignitecall-app.git
cd ignitecall-app
```
2. Install dependencies:
```bash
yarn install
```
3. Set up environment variables:
```bash
cp .env.example .env
```
4. 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
5. Start the development environment:
```bash
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:
```yaml
# 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:
```bash
# 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
```env
# 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
```bash
ignitecall-app/
├── 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](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
[](https://www.linkedin.com/in/rafael-dias-zendron-528290132/)
[](https://github.com/rafaumeu)