Skip to content

GabrielLuZz/exam-max

Repository files navigation

🏥 Exam Max - Aplicação de Agendamento de Exames

Docker Compose Next.js NestJS Tailwind CSS TypeORM Shadcn UI PostgreSQL

📅 Aplicação completa para gerenciamento de agendamentos de exames médicos, construída com tecnologias modernas para oferecer desempenho e escalabilidade.


🚀 Tecnologias Utilizadas

🖥️ Frontend

⚙️ Backend

  • Framework: Nest.js
  • Banco de Dados: TypeORM com suporte a múltiplos bancos de dados.

🛢️ Database

  • PostgreSQL: Sistema de banco de dados relacional.

🖌️ Design no Figma

📂 Veja o protótipo do design no Figma.

Exemplo de imagem

📦 Serviços

  1. Frontend:

    • Criado com Next.js para renderização híbrida (SSR e CSR).
    • Estilizado com Tailwind CSS para um design moderno e responsivo.
    • Permite aos usuários agendar, visualizar e gerenciar consultas de exames médicos.
  2. Backend:

  3. Database:

    • Banco de dados configurado com PostgreSQL.
    • Gerenciado pelo ORM TypeORM no backend.

🛠️ Como Rodar a Aplicação com Docker

🔧 Pré-requisitos

🌀 Subindo os Serviços

  1. Clone este repositório:

    git clone https://github.com/GabrielLuZz/exam-max
    cd exam-max
  2. Configure os arquivos .env na pasta raiz, na front e na back:

    • Crie um arquivo .env onde tiver um .env.example e insira as variáveis de ambiente necessárias. Exemplo:
      DATABASE_URL=postgres://user:password@database:5432/exams_db
      JWT_SECRET=super_secret_key
  3. Execute o comando para iniciar os serviços:

    docker-compose up --build
  4. Acesse os serviços:


🗂️ Estrutura do Projeto

.
├── docker-compose.yml                  # Configurações do Docker Compose
├── front/                                           # Código do Frontend em Next.js
├── back/                                           # Código do Backend em Nest.js
└── .env.example                               # Modelo do arquivo de variáveis de ambiente

📝 Variáveis de Ambiente

As principais variáveis que devem ser configuradas no arquivo .env incluem:

  • Raiz da aplicação:

    • APP_ENV: Ambiente da aplicação (valores possíveis: development | production).
    • POSTGRES_USER: Usuário do banco de dados.
    • POSTGRES_PASSWORD: Senha do usuário do banco de dados.
    • POSTGRES_DB: Nome do banco de dados.
  • Backend:

    • DB_HOST: host do banco de dados (rodado localmente é o nome do serviço docker, padrão: database).
    • DB_PORT: porta em que o banco de dados está rodando. (por padrão 5432)
    • DB_DATABASE: Nome do banco de dados configurado na variável POSTGRES_DB.
    • DB_USERNAME: Nome do usuário configurado na variável POSTGRES_USER.
    • DB_PASSWORD: Senha do usuário configurado na variável POSTGRES_PASSWORD.
    • CLIENTS_URLS: Urls permitidas de acessar a aplicação em produção (ex.: http://front:3001,http://localhost:3001).
  • Frontend:

    • Não possui variáveis de ambiente

📝 Comandos Úteis

🐳 Comandos Docker

  • Subir os containers:

    docker-compose up
  • Derrubar os containers:

    docker-compose down
  • Remover volumes e containers para um reset completo:

    docker-compose down --volumes
  • Reconstruir a aplicação:

    docker-compose up --build
  • Reconstruir a aplicação sem cache:

    docker-compose build --no-cache
  • Inspecionar logs:

    docker-compose logs -f

🧹 Limpar Docker

  • Remover containers parados:
    docker system prune
  • Limpar volumes não utilizados:
    docker volume prune

🌟 Funcionalidades

✅ Agendamento de exames médicos com horários e datas pre estabelecido por uma entidade administradora.
✅ listagem de exames e agendamentos.
✅ Deleção de agendamentos.
✅ Integração com banco de dados para armazenar e consultar informações.


🤝 Contribuições

Contribuições são muito bem-vindas!

  1. Faça um fork do repositório.
  2. Crie uma branch para sua feature ou correção:
    git checkout -b minha-nova-feature
  3. Envie suas alterações:
    git commit -m "Minha nova feature"
    git push origin minha-nova-feature

Feito com ❤️ por Gabriel Luz 🚀

About

Exam Max is a full-stack medical exam scheduling platform built with Next.js, NestJS, PostgreSQL, and Docker Compose. It allows users to book, view, and manage exam appointments through a modern, responsive interface, while the backend ensures secure data handling and scalable API architecture.

Topics

Resources

Stars

Watchers

Forks

Contributors