Plataforma web completa para gerenciamento de medicação com dashboard adaptável e API robusta
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
- React com JavaScript
- Tailwind CSS para estilização
- Java 21 com Spring Boot 3
- Arquitetura RESTful
- Spring Security + JWT
- Spring Data JPA + Flyway
- PostgreSQL como banco de dados
👨⚕️ Visão Administrador
- Gerenciamento de todos os usuários
- Relatórios completos de adesão à medicação
- CRUD de medicamentos para qualquer usuário
👤 Visão Usuário
- Controle pessoal de medicamentos
- Histórico de confirmações
- Adição/remoção de medicamentos
- 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();
}
}- Modelo relacional com PostgreSQL:
- Migrações controladas com Flyway
- Relações entre usuários, medicamentos, dependentes, frequencia de uso e confirmações
Documentação completa dos endpoints REST disponível em dois formatos:
- README das Rotas - Lista detalhada de todos os endpoints com:
- Métodos HTTP
- Parâmetros esperados
- Exemplos de request/response
- Status codes possíveis
- 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!
O ecossistema MedTrack está completamente dockerizado. Banco de Dados, Backend e Frontend rodam de forma isolada e orquestrada via Docker Compose.
- Docker Desktop instalado e em execução
-
Clone o repositório e navegue até a raiz do projeto.
-
Crie o arquivo de variáveis de ambiente a partir do exemplo:
cp .env.example .env
Edite o
.envcom suas configurações (credenciais do banco, etc.).- Para backend local, use
SPRING_PROFILES_ACTIVE=dev. - Em produção, defina
SPRING_PROFILES_ACTIVE=prodna plataforma de deploy. - No frontend React, use
.envem desenvolvimento e.env.productionem produção. - Use
SET_ENV_PROD=falseem desenvolvimento. - Nas plataformas de deploy, defina
SET_ENV_PROD=true. - Para o frontend React, use
REACT_APP_SET_ENV_PROD=falseem dev eREACT_APP_SET_ENV_PROD=trueem produção.
- Para backend local, use
-
Na primeira execução, faça o build e suba os containers:
docker compose up --build
-
Nas execuções seguintes, basta:
docker compose up
-
Acesse os serviços:
Serviço URL Frontend http://localhost:3000 Backend http://localhost:8081
| 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 |
- Node.js 18+ (Frontend)
- Java 21+ JDK (Backend)
- PostgreSQL 15+
cd interface-react
npm install
npm startspring.datasource.url=jdbc:postgresql://${DB_HOST}/medtrack
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}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
- 🔄 Sincronização em tempo real dos dados de medicação
- 🔐 Autenticação unificada JWT
- 📩 Notificações complementares via email
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)














