Skip to content

Repository files navigation

Agenda Flow — SaaS Full Stack de Agendamentos

Sistema completo de gestão de agendamentos desenvolvido para portfólio, com frontend React, backend Java Spring Boot e PostgreSQL.

O projeto demonstra uma aplicação de negócio real: painel administrativo, clientes, serviços, profissionais, disponibilidade, prevenção de conflitos de horário e uma jornada pública de reserva.

Visão geral

Frontend React/Vite
        ↓ REST/JSON
Backend Java/Spring Boot
        ↓ JPA/Flyway
PostgreSQL ou H2

Principais funcionalidades

Frontend

  • dashboard com indicadores de agenda, clientes, receita e confirmação;
  • agenda organizada por dia;
  • filtros por data, profissional e status;
  • alteração de status do atendimento;
  • cadastro e busca de clientes;
  • catálogo de serviços e profissionais;
  • modal para criação de agendamento;
  • consulta de horários disponíveis;
  • página pública de reserva;
  • modo demonstração com dados no navegador;
  • layout responsivo.

Backend

  • CRUD de clientes;
  • cadastro e listagem de serviços;
  • cadastro e listagem de profissionais;
  • criação, busca e filtros de agendamentos;
  • cálculo de disponibilidade;
  • prevenção de sobreposição de horários;
  • validações de negócio;
  • respostas de erro padronizadas;
  • documentação Swagger/OpenAPI;
  • migrations Flyway;
  • perfis H2 e PostgreSQL;
  • testes unitários e de integração.

Tecnologias

Frontend

  • React 18;
  • Vite;
  • CSS responsivo;
  • Fetch API;
  • LocalStorage para o modo demonstração.

Backend

  • Java 21;
  • Spring Boot 3.5;
  • Spring Web;
  • Spring Data JPA;
  • Bean Validation;
  • Flyway;
  • H2;
  • PostgreSQL;
  • springdoc-openapi;
  • JUnit e Mockito.

Infraestrutura

  • Docker;
  • Docker Compose;
  • Nginx;
  • GitHub Actions.

Estrutura

api-agendamentos/
├── frontend/                  # aplicação React/Vite
├── src/main/java/             # backend Spring Boot
├── src/main/resources/        # configurações e migrations
├── src/test/                  # testes
├── docs/                      # vitrine estática do projeto
├── compose.yml
├── Dockerfile
└── pom.xml

Executar sem Docker

1. Backend

Requisitos: Java 21 e Maven.

mvn spring-boot:run

A API ficará em:

http://localhost:8080

Swagger:

http://localhost:8080/swagger

2. Frontend

cd frontend
npm install
cp .env.example .env
npm run dev

A aplicação ficará em:

http://localhost:5173

Conteúdo do .env:

VITE_API_URL=http://localhost:8080

Executar com Docker Compose

docker compose up --build

Serviços:

Frontend:   http://localhost:3000
Backend:    http://localhost:8080
Swagger:    http://localhost:8080/swagger
PostgreSQL: localhost:5432

Modo demonstração

O frontend pode funcionar sem o backend. Quando VITE_API_URL não está configurada ou a API está indisponível, ele utiliza dados demonstrativos armazenados no localStorage.

Isso permite publicar a interface separadamente e demonstrar o fluxo completo no portfólio.

Endpoints principais

GET    /api/v1/clientes
POST   /api/v1/clientes
PUT    /api/v1/clientes/{id}
DELETE /api/v1/clientes/{id}

GET  /api/v1/servicos
POST /api/v1/servicos

GET  /api/v1/profissionais
POST /api/v1/profissionais

GET   /api/v1/agendamentos
POST  /api/v1/agendamentos
GET   /api/v1/agendamentos/{id}
PATCH /api/v1/agendamentos/{id}/status

GET /api/v1/disponibilidade

Decisões de projeto

  • O frontend não depende da API para a apresentação demonstrativa.
  • A regra de conflito de horário permanece no backend.
  • A disponibilidade é calculada com base na duração do serviço e na agenda do profissional.
  • Os valores monetários usam BigDecimal no backend.
  • O banco é versionado com Flyway.
  • O CORS é configurável por variável de ambiente.

Projeto demonstrativo

Este projeto foi desenvolvido como estudo de caso para portfólio e demonstra práticas de desenvolvimento full stack. Os dados, clientes, serviços e profissionais são fictícios.

Desenvolvido por Fernanda Fregulha.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages