https://github.com/bribinha/barberguide-api
Backend robusto para uma SPA de agendamentos. API RESTful com Laravel 10, lógica de agendamento avançada e autenticação via Sanctum. 100% testado com PHPUnit.
https://github.com/bribinha/barberguide-api
cors laravel phpunit restful-api sanctum spa
Last synced: 21 days ago
JSON representation
Backend robusto para uma SPA de agendamentos. API RESTful com Laravel 10, lógica de agendamento avançada e autenticação via Sanctum. 100% testado com PHPUnit.
- Host: GitHub
- URL: https://github.com/bribinha/barberguide-api
- Owner: bribinha
- Created: 2025-10-02T16:08:27.000Z (25 days ago)
- Default Branch: main
- Last Pushed: 2025-10-06T15:50:35.000Z (21 days ago)
- Last Synced: 2025-10-06T17:43:06.976Z (21 days ago)
- Topics: cors, laravel, phpunit, restful-api, sanctum, spa
- Language: PHP
- Homepage:
- Size: 85 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BarberGuide API (Laravel)
API RESTful robusta desenvolvida com Laravel 10 para servir como backend de uma aplicação de agendamentos de barbearias
e cabeleleiros. Este projeto demonstra uma arquitetura de API limpa, lógica de negócio complexa e uma base sólida para
funcionalidades avançadas como autenticação e notificações.




---
### 📋 Tabela de Conteúdos
1. [Sobre o Projeto](#-sobre-o-projeto)
2. [Principais Habilidades Demonstradas](#-principais-habilidades-demonstradas)
3. [Tech Stack](#-tech-stack)
4. [Como Executar Localmente](#-como-executar-localmente)
5. [Rodando os Testes](#-rodando-os-testes)
6. [Endpoints da API](#-endpoints-da-api)
7. [Próximos Passos](#-próximos-passos)
---
### ✨ Sobre o Projeto
Este backend foi construído para gerenciar toda a lógica de um sistema de agendamentos, fornecendo endpoints seguros e
eficientes para uma interface de frontend (SPA). O foco foi em escrever um código limpo, testável e escalável.
### 🚀 Principais Habilidades Demonstradas
* **Arquitetura de API RESTful:** Design de endpoints seguindo as melhores práticas, utilizando Resources e Form
Requests do Laravel.
* **Lógica de Negócio Complexa:** Implementação do algoritmo de cálculo de horários disponíveis, considerando o
expediente do profissional e os agendamentos já existentes.
* **Autenticação para SPAs:** Configuração completa do **Laravel Sanctum** e **CORS** para garantir a comunicação segura
com um frontend desacoplado.
* **Testes de Funcionalidade (TDD):** Cobertura de testes para os endpoints críticos da aplicação usando **PHPUnit**,
garantindo a confiabilidade e facilitando a manutenção.
* **Manipulação de Banco de Dados:** Uso do Eloquent ORM com relacionamentos, migrations e seeders para um gerenciamento
de dados eficiente e consistente com PostgreSQL.
### 🛠️ Tech Stack
* **PHP 8.1+**
* **Laravel 10**
* **PostgreSQL 15**
* **Laravel Sanctum** (Autenticação)
* **PHPUnit** (Testes)
### ⚙️ Como Executar Localmente
**Pré-requisitos:**
* PHP >= 8.1
* Composer
* PostgreSQL
**Passos:**
1. Clone o repositório: `git clone https://github.com/bribinha/barberguide-api`
2. Navegue até a pasta: `cd barberguide-api`
3. Instale as dependências: `composer install`
4. Copie o arquivo de ambiente: `cp .env.example .env`
5. Gere a chave da aplicação: `php artisan key:generate`
6. Configure suas credenciais do PostgreSQL no arquivo `.env`.
7. Execute as migrações e popule o banco: `php artisan migrate --seed`
8. Inicie o servidor de desenvolvimento: `php artisan serve`
* A API estará disponível em `http://127.0.0.1:8000/api`
### 🧪 Rodando os Testes
Para executar a suíte de testes de funcionalidade, rode:
```bash
php artisan test
```
### Endpoints da API
| Método | Endpoint | Descrição |
| :----- | :--------------------------------------------------- | :--------------------------------------------------------- |
| `GET` | `/api/professionals` | Retorna uma lista de todos os usuários profissionais. |
| `GET` | `/api/professionals/{id}` | Retorna os detalhes de um profissional específico. |
| `GET` | `/api/professionals/{id}/availability?date=Y-m-d` | Retorna os horários disponíveis para um profissional em uma data. |
| `POST` | `/api/appointments` | Cria um novo agendamento. |
### 🔮 Próximos Passos
* **[ ] Implementação das rotas de login, register e logout.**
* **[ ] Sistema de Roles/Permissions (Cliente vs. Profissional).**
* **[ ] Notificações por e-mail para agendamentos.**
* **[ ] Implementação de cache com Redis para otimizar queries.**
* **[ ] Arquitetura Multi-tenancy para escalar o sistema.**