{"id":30692852,"url":"https://github.com/joschonarth/ignite-call","last_synced_at":"2026-04-09T12:05:12.599Z","repository":{"id":306353135,"uuid":"1017017732","full_name":"joschonarth/ignite-call","owner":"joschonarth","description":"📅 A scheduling web app to manage availability and book appointments via Google Calendar, built with Next.js, TypeScript, and a custom Design System.","archived":false,"fork":false,"pushed_at":"2025-07-25T01:52:12.000Z","size":504,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-25T07:04:13.119Z","etag":null,"topics":["calendar","dayjs","design-system","google-calendar","googleapis","ignite-ui","next-seo","nextauth","nextjs","postgresql","prisma","react","react-hook-fo","react-query","reactjs","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joschonarth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-09T22:35:03.000Z","updated_at":"2025-07-25T01:57:56.000Z","dependencies_parsed_at":"2025-07-25T07:04:24.067Z","dependency_job_id":"ec556df4-1344-4944-9839-a0c7800ead24","html_url":"https://github.com/joschonarth/ignite-call","commit_stats":null,"previous_names":["joschonarth/ignite-call"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/joschonarth/ignite-call","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joschonarth%2Fignite-call","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joschonarth%2Fignite-call/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joschonarth%2Fignite-call/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joschonarth%2Fignite-call/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joschonarth","download_url":"https://codeload.github.com/joschonarth/ignite-call/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joschonarth%2Fignite-call/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273233235,"owners_count":25068731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","dayjs","design-system","google-calendar","googleapis","ignite-ui","next-seo","nextauth","nextjs","postgresql","prisma","react","react-hook-fo","react-query","reactjs","typescript","zod"],"created_at":"2025-09-02T05:05:13.923Z","updated_at":"2025-12-30T21:32:19.085Z","avatar_url":"https://github.com/joschonarth.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\u003cimg src=\"./public/icon.svg\" width=\"22\" /\u003e Ignite Call \u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003ci\u003eAgendamentos descomplicados com integração ao Google Calendar. Conecte seu calendário, defina sua disponibilidade e agende com facilidade.\u003c/i\u003e\n  \u003cbr/\u003e\u003cbr/\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/joschonarth/ignite-call?style=for-the-badge\u0026color=1F8459\u0026labelColor=1C1E26\" alt=\"last-commit\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/languages/top/joschonarth/ignite-call?style=for-the-badge\u0026color=1F8459\u0026labelColor=1C1E26\" alt=\"top-language\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/languages/count/joschonarth/ignite-call?style=for-the-badge\u0026color=1F8459\u0026labelColor=1C1E26\" alt=\"languages-count\"\u003e\n\u003c/p\u003e\n\n\u003cimg width=\"1365\" height=\"767\" alt=\"home\" src=\"https://github.com/user-attachments/assets/10062adf-32e7-4fb4-952c-05a7328b1e48\" /\u003e\n\n## 📖 Visão Geral\n\n**Ignite Call** é uma aplicação web desenvolvida com **Next.js** para facilitar o agendamento de compromissos. Os usuários podem conectar seu **Google Calendar**, definir horários disponíveis e permitir que outras pessoas reservem horários de forma automática e organizada.\n\n## 🛠️ Tecnologias Utilizadas\n\n- ⚙️ **Next.js** – Framework React com suporte a SSR e SSG.\n- 🟦 **TypeScript** – Superset do JavaScript com tipagem estática.\n- 🔐 **NextAuth** – Autenticação via Google OAuth.\n- 🗓️ **Google APIs** – Integração com o Google Calendar.\n- 🧬 **Prisma** – ORM moderno e flexível com suporte a banco de dados SQL.\n- 🐘 **PostgreSQL** - Banco de dados relacional.\n- 💎 **Zod** - Biblioteca de validação de dados.\n- 💡 **React Hook Form** – Formulários com validação robusta.\n- 🌐 **React Query** – Gerenciamento eficiente de estado assíncrono.\n- 🗓️ **Day.js** – Manipulação de datas com timezone e formato.\n- 💅 **@ignite-ui/react** – Design System com componentes estilizados.\n- 🧠 **Next SEO** – SEO otimizado com metadados dinâmicos.\n- 🧹 **ESLint** – Linter para manter a qualidade e consistência do código.\n\n## ⚙️ Funcionalidades\n\n- 🔐 **Login com Google**: autenticação segura com OAuth 2.0.\n- 🗓️ **Definição de disponibilidade**: configure dias e horários livres.\n- 📅 **Integração com Google Calendar**: eventos criados diretamente no seu calendário.\n\n## 🚀 Como Executar o Projeto\n\n### 📋 Pré-requisitos\n\n- 🟩 [Node.js 20+](https://nodejs.org/)\n- 📦 [npm 10+](https://www.npmjs.com/)\n- 🐳 [Docker + Docker Compose](https://www.docker.com/)\n\n### 🔧 Instalação\n\n1. Clone o repositório:\n\n    ```bash\n    git clone https://github.com/joschonarth/ignite-call.git\n    ```\n\n2. Acesse a pasta do projeto:\n\n    ```bash\n    cd ignite-call\n    ```\n\n3. Instale as dependências:\n\n    ```bash\n    npm install\n    ```\n\n4. Configure as variáveis de ambiente:\n\n    ```bash\n    cp .env.example .env  \n    ```\n\n### ▶️ Execução\n\n1. Inicie o banco de dados PostgreSQL utilizando o Docker:\n\n    ```bash\n    docker-compose up -d\n    ```\n\n2. Execute as migrações do banco de dados:\n\n    ```bash\n    npx prisma migrate dev\n    ```\n\n3. Inicie o servidor de desenvolvimento:\n\n    ```bash\n    npm run dev\n    ```\n\nA aplicação estará disponível em: [http://localhost:3000](http://localhost:3000)\n\n## 🔐 Como obter as credenciais do Google OAuth\n\nPara que o login e a integração com o Google Calendar funcionem corretamente, você precisará criar um projeto no Google Cloud Console e configurar as credenciais OAuth 2.0.\n\n### 📌 Passos para configurar\n\n1. Acesse o [Google Cloud Console](https://console.cloud.google.com/).\n2. Crie um novo projeto ou selecione um existente.\n3. No menu lateral, vá até **APIs e serviços \u003e Tela de consentimento OAuth**:\n   - Escolha o tipo **Externo**.\n   - Preencha as informações básicas da tela de consentimento (nome do app, email de suporte, etc).\n   - Adicione os escopos:\n     - `.../auth/calendar`\n     - `.../auth/calendar.events`\n     - `.../auth/userinfo.email`\n     - `.../auth/userinfo.profile`\n\n4. Vá para **APIs e serviços \u003e Credenciais** e clique em **Criar credencial \u003e ID do cliente OAuth**.\n5. Escolha **Aplicativo da Web** e configure os dados:\n   - **URIs autorizados de redirecionamento**:\n     - Em ambiente local: `http://localhost:3000/api/auth/callback/google`\n\n6. Após a criação, copie os valores gerados e insira no seu `.env.local`:\n\n```env\nGOOGLE_CLIENT_ID=seu_client_id\nGOOGLE_CLIENT_SECRET=sua_client_secret\n```\n\n## 🤝 Contribuições\n\nContribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests com melhorias ou correções. 💡\n\n## ⭐ Apoie este Projeto\n\nSe curtiu o projeto, deixe uma ⭐ aqui no GitHub!\n\n## 📞 Contato\n\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/joschonarth/)\n[![Gmail](https://img.shields.io/badge/Gmail-D14836?style=for-the-badge\u0026logo=gmail\u0026logoColor=white)](mailto:joschonarth@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoschonarth%2Fignite-call","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoschonarth%2Fignite-call","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoschonarth%2Fignite-call/lists"}