Aplicação Full Stack para catalogar filmes e séries, acompanhar o progresso de episódios e visualizar estatísticas através de um dashboard moderno.
O Minha Biblioteca é um sistema full-stack desenvolvido para gerenciamento de filmes e séries.
A aplicação permite organizar uma biblioteca pessoal, acompanhar episódios assistidos, importar conteúdos automaticamente através da API do TMDB e visualizar estatísticas de consumo em um dashboard.
O projeto foi desenvolvido com foco em:
- Arquitetura Full Stack
- APIs REST
- Autenticação e autorização
- Integração com APIs externas
- Persistência de dados
- Gerenciamento de estado
- Containerização
- Experiência de usuário
- Cadastro manual de filmes e séries
- Importação automática através do TMDB
- Busca por título
- Filtros por gênero, ano e tipo
- Paginação
- Marcação de filmes como assistidos
- Controle individual de episódios
- Controle de temporadas
- Cálculo automático de progresso
- Acompanhamento de conteúdos em andamento
O dashboard apresenta informações como:
- 🎬 Filmes cadastrados
- 📺 Séries cadastradas
- ⏱️ Horas assistidas
- 🎞️ Episódios assistidos
- 📈 Progresso geral
- 🎭 Distribuição por gênero
▶️ Conteúdos para continuar assistindo
- Cadastro de usuários
- Login
- Autenticação JWT
- Perfil do usuário
- Controle de permissões
- Roles de acesso
Área administrativa para gerenciamento de:
- Filmes
- Séries
- Temporadas
- Episódios
- Usuários
| Tecnologia | Utilização |
|---|---|
| Java 17 | Linguagem principal |
| Spring Boot 3 | Framework backend |
| Spring Security | Autenticação e autorização |
| Spring Data JPA | Persistência de dados |
| Hibernate | ORM |
| PostgreSQL | Banco de dados |
| JWT | Autenticação stateless |
| Maven | Gerenciamento de dependências |
| Tecnologia | Utilização |
|---|---|
| React 18 | Interface de usuário |
| TypeScript | Tipagem estática |
| Vite | Build e desenvolvimento |
| React Router | Roteamento |
| Recharts | Gráficos e visualizações |
- Docker
- Docker Compose
A aplicação é dividida em duas principais camadas:
┌─────────────────┐
│ Frontend │
│ React + TS │
└────────┬────────┘
│
│ HTTP / REST
▼
┌─────────────────┐
│ Backend │
│ Spring Boot │
└────────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│PostgreSQL│ │ TMDB │ │ JWT │
│ │ │ API │ │ Security │
└──────────┘ └──────────┘ └──────────┘
.
├── backend/
│ ├── src/
│ ├── pom.xml
│ └── Dockerfile
│
├── frontend/
│ ├── src/
│ ├── package.json
│ └── Dockerfile
│
├── docker-compose.yml
└── README.md
A forma recomendada para executar o projeto é utilizando Docker Compose.
docker compose up --buildApós a inicialização:
| Serviço | URL |
|---|---|
| Frontend | http://localhost:5173 |
| API | http://localhost:8080 |
| Swagger | http://localhost:8080/swagger-ui.html |
Execute uma instância do PostgreSQL utilizando Docker:
docker run --name biblioteca-postgres \
-e POSTGRES_DB=biblioteca \
-e POSTGRES_USER=biblioteca \
-e POSTGRES_PASSWORD=biblioteca \
-p 5432:5432 \
-d postgres:16-alpineEntre no diretório do backend:
cd backendExecute a aplicação:
mvn spring-boot:runA API estará disponível em:
http://localhost:8080
Entre no diretório do frontend:
cd frontendInstale as dependências:
npm installExecute o projeto:
npm run devO frontend estará disponível em:
http://localhost:5173
Crie um arquivo .env ou configure as variáveis no ambiente de execução.
TMDB_API_KEY=sua_chaveA integração com o TMDB é opcional.
Sem a chave configurada, o cadastro manual de filmes e séries continua funcionando normalmente.
🔒 Nunca versione chaves de API, senhas ou outros dados sensíveis no repositório.
O sistema possui integração com a API do TMDB, permitindo importar informações automaticamente.
Entre os dados disponíveis estão:
- 🖼️ Poster
- 📝 Sinopse
- 🎭 Gêneros
- 📅 Ano de lançamento
- 📺 Temporadas
- 🎞️ Episódios
Fluxo simplificado:
Usuário
│
▼
Busca título
│
▼
API TMDB
│
▼
Informações do conteúdo
│
▼
Backend
│
▼
PostgreSQL
│
▼
Biblioteca do usuário
Todos os usuários são criados inicialmente com a role:
USER
Para promover um usuário para administrador:
UPDATE usuarios
SET role = 'ADMIN'
WHERE email = 'usuario@email.com';O nome da tabela e dos campos deve corresponder à implementação real do banco de dados.
POST /api/auth/register
POST /api/auth/loginGET /api/users/me
PUT /api/users/meGET /api/catalog
POST /api/catalog
PUT /api/catalog/{id}
DELETE /api/catalog/{id}GET /api/dashboardGET /api/tmdb/search
POST /api/tmdb/importA documentação completa da API pode ser acessada através do Swagger/OpenAPI:
http://localhost:8080/swagger-ui.html
A estrutura do projeto pode ser expandida com testes automatizados para backend e frontend.
mvn testnpm run testAdicione estes comandos ao README somente se os respectivos frameworks de teste estiverem configurados no projeto.
- Login com JWT
- Dashboard
- Controle de episódios
- CRUD de filmes
- CRUD de séries
- Integração com TMDB
- Docker
- Upload de capas
- Testes automatizados
- Infinite Scroll
- Sistema de notificações
- Configurações do usuário
- Cache da API do TMDB
Contribuições são bem-vindas.
Crie uma nova branch:
git checkout -b feature/minha-featureFaça suas alterações e crie um commit:
git add .
git commit -m "feat: adiciona nova funcionalidade"Envie a branch:
git push origin feature/minha-featureDepois, abra um Pull Request.
Este projeto está distribuído sob a licença MIT.
Consulte o arquivo LICENSE para mais informações.