Schedules é um sistema backend desenvolvido em PHP (Laravel 12.x) para agendamento de serviços gerais, como barbeiros, tatuadores e outros profissionais. Ele oferece um sistema robusto de permissões baseado em flags dinâmicas, com um fluxo de cadastro dividido em etapas e integração com ferramentas externas como o Google Calendar.
O sistema permite que usuários se cadastrem como:
- Customer – usuários que contratam serviços
- ServiceProvider – usuários que oferecem serviços
- Enterprise - empresas
Essa definição é feita por meio de um sistema de flags, que são atribuídas progressivamente conforme o usuário avança nas etapas do cadastro.
O processo de cadastro é dividido em três níveis de tarefa, cada um associado a uma flag específica. Essas flags também controlam o acesso a funcionalidades do sistema.
- O usuário escolhe se será um
CustomerouServiceProvider. - Flags atribuídas:
Customer→ recebeCanContractServicesServiceProvider→ recebeCanCreateService
- O usuário preenche dados como nome público, nome do negócio (caso prestador), biografia e avatar.
- Ao concluir, recebe automaticamente a flag
AccountTaskLevel2.
- O usuário informa pelo menos um endereço. Isso permitirá futuramente a recomendação de serviços com base em localização (cidade/estado).
Ao concluir todas as etapas, o usuário recebe a flag final: AccountCompletedTasks.
As flags são utilizadas amplamente no sistema para:
- Identificar o tipo de conta
- Controlar permissões de acesso
- Indicar progresso no cadastro
- Definir preferências do usuário
- Liberar funcionalidades específicas
Esse sistema substitui modelos tradicionais de controle de acesso por um mecanismo mais flexível e extensível.
- Google Calendar – sincronização de agendamentos
- Notificações – via e-mail e pela própria plataforma
- Estatísticas e relatórios – para prestadores de serviço
- Recomendações por região – serviços exibidos conforme a localização do usuário
| Tecnologia | Descrição |
|---|---|
| PHP | Linguagem principal |
| Laravel 12.x | Framework backend |
| PostgreSQL | Banco de dados |
| IDs estilo Snowflake | Geração distribuída de IDs ordenados por tempo |
| Flags dinâmicas | Controle de permissões e progresso |
Painel administrativo para gerenciamento de flags
Suporte a múltiplas regiões
Listagem pública de serviços
Agendamentos por disponibilidade (calendário)
Sistema avançado de notificações (e-mail, in-app, push)