Skip to content

EllenRocha1/MedTrack

Repository files navigation

Logo do MedTrack

MedTrack Web: Dashboard & API

Plataforma web completa para gerenciamento de medicação com dashboard adaptável e API robusta

Visão Geral

Demonstração do Dashboard

O MedTrack Web é uma plataforma completa desenvolvida para:

  • 👨‍⚕️ Administradores gerenciarem pacientes e medicamentos
  • 👤 Usuários controlarem sua própria medicação
  • 📊 Geração de relatórios e histórico completo

Funcionalidades-chave:

  • 🔐 Autenticação JWT com roles (ADMINISTRADOR/USUÁRIO)
  • 📱 Sincronização em tempo real com o app mobile
  • 📅 CRUD completo de medicamentos e usuários
  • 📈 Dashboard analítico com gráficos

✨ Destaques Técnicos

🏗️ Arquitetura do Projeto

Frontend (React)

  • React com JavaScript
  • Tailwind CSS para estilização
Diagrama Frontend

Backend (Spring Boot)

  • Java 21 com Spring Boot 3
  • Arquitetura RESTful
  • Spring Security + JWT
  • Spring Data JPA + Flyway
  • PostgreSQL como banco de dados
Diagrama Backend

📊 Dashboard Interativo

👨‍⚕️ Visão Administrador

  • Gerenciamento de todos os usuários
  • Relatórios completos de adesão à medicação
  • CRUD de medicamentos para qualquer usuário
Dashboard Admin Gerenciamento Admin

👤 Visão Usuário

  • Controle pessoal de medicamentos
  • Histórico de confirmações
  • Adição/remoção de medicamentos
Dashboard User Configurações User

🔐 Sistema de Autenticação

  • JWT (JSON Web Tokens)
  • Roles (ADMINISTRADOR/USUÁRIO)
  • Proteção de rotas no frontend e backend
@Configuration
public class SecurityConfig {

    @Bean
    public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }

    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
        return authenticationConfiguration.getAuthenticationManager();
    }

    @Bean
    public SecurityFilterChain securityFilterChain(
            HttpSecurity http,
            JwtService jwtService,
            UsuarioDetailsService usuarioDetailsService
    ) throws Exception {
        JwtAuthenticationFilter jwtAuthenticationFilter = new JwtAuthenticationFilter(jwtService, usuarioDetailsService);

        http
                .cors(Customizer.withDefaults())
                .csrf(AbstractHttpConfigurer::disable)
                .authorizeHttpRequests(auth -> auth
                        .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                        .requestMatchers("/auth/**").permitAll()
                        .requestMatchers("/usuarios/admin/**").hasRole("ADMINISTRADOR")
                        .requestMatchers("/usuarios/user/**").hasRole("PESSOAL")
                        .requestMatchers("/usuarios/**").permitAll()
                        .anyRequest().authenticated()
                )
                .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
        return http.build();
    }
}

🗃️ Banco de Dados

  • Modelo relacional com PostgreSQL:
    • Migrações controladas com Flyway
    • Relações entre usuários, medicamentos, dependentes, frequencia de uso e confirmações
Diagrama do Banco de Dados

🌐 API Endpoints

Documentação completa dos endpoints REST disponível em dois formatos:

  1. README das Rotas - Lista detalhada de todos os endpoints com:
  • Métodos HTTP
  • Parâmetros esperados
  • Exemplos de request/response
  • Status codes possíveis
  1. Coleção do Insomnia - Arquivo pronto para importar no Insomnia contendo:
  • Todas as rotas configuradas
  • Exemplos de requests pré-prontos
  • Environment configurado
  • Autenticação JWT já implementada

💡 Dica: Importe a coleção no Insomnia para testar rapidamente todas as rotas com exemplos pré-configurados!

Run in Insomnia

Rotas no Insomnia

🚀 Como Executar

Rodando com Docker (Recomendado)

O ecossistema MedTrack está completamente dockerizado. Banco de Dados, Backend e Frontend rodam de forma isolada e orquestrada via Docker Compose.

Pré-requisitos

Passo a passo

  1. Clone o repositório e navegue até a raiz do projeto.

  2. Crie o arquivo de variáveis de ambiente a partir do exemplo:

    cp .env.example .env

    Edite o .env com suas configurações (credenciais do banco, etc.).

    • Para backend local, use SPRING_PROFILES_ACTIVE=dev.
    • Em produção, defina SPRING_PROFILES_ACTIVE=prod na plataforma de deploy.
    • No frontend React, use .env em desenvolvimento e .env.production em produção.
    • Use SET_ENV_PROD=false em desenvolvimento.
    • Nas plataformas de deploy, defina SET_ENV_PROD=true.
    • Para o frontend React, use REACT_APP_SET_ENV_PROD=false em dev e REACT_APP_SET_ENV_PROD=true em produção.
  3. Na primeira execução, faça o build e suba os containers:

    docker compose up --build
  4. Nas execuções seguintes, basta:

    docker compose up
  5. Acesse os serviços:

    Serviço URL
    Frontend http://localhost:3000
    Backend http://localhost:8081

Detalhes da infraestrutura Docker

Componente Tecnologia Detalhes
Backend Spring Boot + JRE 21 Build multi-stage (Maven + JRE 21) para imagens leves e seguras
Frontend React + Node 18 Suporte a Hot-Reload no Windows via Polling
Banco de Dados PostgreSQL Volumes persistentes e Healthcheck para garantir a ordem de subida dos serviços

🚀 Rodando Localmente (sem Docker)

Pré-requisitos
  • Node.js 18+ (Frontend)
  • Java 21+ JDK (Backend)
  • PostgreSQL 15+

Frontend

cd interface-react
npm install
npm start

Backend

spring.datasource.url=jdbc:postgresql://${DB_HOST}/medtrack
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}

📱 MedTrack: Mobile

Aplicativo Complementar

O MedTrack Mobile é o aplicativo Android que se integra perfeitamente com a plataforma web:

  • 📸 Captura de medicamentos via OCR
  • 🔔 Notificações inteligentes
  • ✅ Confirmação de medicamentos que sincroniza com o dashboard web
App Mobile

Integração Mobile-Web

  • 🔄 Sincronização em tempo real dos dados de medicação
  • 🔐 Autenticação unificada JWT
  • 📩 Notificações complementares via email

🌟 Time de Contribuidores

Ellen Rocha
Ellen Rocha

Backend & Frontend
Maria Clara
Maria Clara

Frontend & Mobile
Yann Leão
Yann Leão

Backend & Mobile

🎓 Orientação

Prof. Igor Amaral
Prof. Igor Amaral

Orientador

📄 Licença

Projeto acadêmico desenvolvido para a disciplina de Projeto Interdisciplinar de Engenharia da Computação 1 (PIEC1)
Universidade Federal Rural de Pernambuco — Unidade Acadêmica de Belo Jardim (UFRPE/UABJ)

About

Parte Web do Projeto concebido para conclusão e avaliação da disciplina Projeto Interdisciplinar em Engenharia da Computação. O objetivo do projeto é oferecer uma solução simples e eficiente para a adesão ao tratamento médico, melhorando a qualidade de vida dos usuários.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors