Loading repository data…
Loading repository data…
MaaLuu21 / repository
O LibraryOn é uma API desenvolvida em C# / .NET 8 que simula o funcionamento de uma biblioteca online.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
O LibraryOn é uma API desenvolvida em C# / .NET 8 que simula o funcionamento de uma biblioteca online.
O projeto foi estruturado para representar um fluxo real de biblioteca, com controle de usuários, funcionários, livros e empréstimos, utilizando uma arquitetura em camadas bem definida.
A aplicação foi pensada para ser facilmente integrada a outros clientes (WPF, aplicações web ou outros sistemas).
Aqui está uma breve demonstração do fluxo de login e consulta de livros através do Swagger:
A solução implementa uma abordagem de Clean Architecture simplificada, garantindo o desacoplamento entre a lógica de negócio e as implementações técnicas.
A solução está dividida nos seguintes projetos:
O fluxo foi projetado para ser automatizado e seguir uma hierarquia clara, desde a inicialização até a execução das requisições:
Program.cs (projeto LibraryOn.Api), onde as dependências são registradas via AddInfrastructure() e AddApplication().graph LR
A[Program.cs / Startup] -->|Configura & Seed| B[DI / Containers]
B --> C[API / Controller]
C --> D[Application / Use Case]
D --> E[Domain / Interfaces]
E --> F[Infrastructure / Repo]
F --> G[(MySQL Database)]
O projeto encontra-se em fase final de desenvolvimento.
A arquitetura, os principais fluxos de negócio e a estrutura geral da aplicação já estão consolidados.
Neste momento, o objetivo do repositório é servir como projeto de portfólio, demonstrando domínio de organização de código, arquitetura em camadas, uso de padrões e integração com banco de dados.
Novas funcionalidades não estão previstas, sendo realizados apenas eventuais ajustes ou correções finais.
Essas funcionalidades atendem ao escopo proposto inicialmente para o projeto e representam o conjunto final de entregas do LibraryOn.
├── src/
│ ├── LibraryOn.Api # Controllers, middlewares e configuração da API
│ ├── LibraryOn.Application # Casos de uso, validações, mapeamentos e DI
│ ├── LibraryOn.Communication # DTOs de requests e responses
│ ├── LibraryOn.Domain # Entidades, enums e contratos
│ ├── LibraryOn.Exception # Exceções e mensagens centralizadas
│ └── LibraryOn.Infrastructure # DbContext, repositórios, migrations, seed e serviços
├── tests/ # Projetos de teste (ex.: Validators.Tests)
├── LibraryOn.sln
└── README.md
classDiagram
class Book {
+long Id
+string Title
+string Author
+int PublishYear
+ICollection~Genre~ Genres
+ICollection~Loan~ Loans
}
class Genre {
+long Id
+string Name
+ICollection~Book~ Books
}
class Loan {
+long Id
+DateTime DueDate
+DateTime LoanDate
+DateTime? ReturnedAt
+LoanStatus Status
+Book Book
+Reader Reader
+Employee Employee
}
class Reader {
+long Id
+string Name
+Cpf Cpf
+PhoneNumber PhoneNumber
+ICollection~Loan~ Loans
}
class Employee {
+long Id
+string Name
+string Role
+ICollection~Loan~ Loans
}
Book "n" -- "n" Genre : Categorizado por
Loan "n" -- "1" Book : Refere-se a
Loan "n" -- "1" Reader : Realizado por
Loan "n" -- "1" Employee : Registrado por
LibraryOnDbContextappsettings.json ou variáveis de ambiente.ILogger no processo de seed do administradorA partir da raiz do repositório:
dotnet restore
dotnet build
dotnet run --project src/LibraryOn.Api
String de conexão
Chave obrigatória:
ConnectionStrings:connection
Configurações de JWT
Settings:Jwt:SigningKey
Settings:Jwt:ExpiresMinutes
Seed do administrador (opcional, recomendado)
Variáveis de ambiente:
INITIAL_ADMIN_EMAIL
INITIAL_ADMIN_PASSWORD
Essas variáveis são utilizadas para criar automaticamente o usuário administrador na primeira execução.
http POST /api/Login
Request body
{
"email": "admin@libraryon.com",
"password": "senhaforte123"
}
Curl
curl -X 'POST' \
'http://localhost:5068/api/Login' \
-H 'accept: text/plain' \
-H 'Content-Type: application/json' \
-d '{
"email": "admin@libraryon.com",
"password": "senhaforte123@"
}'
Request URL
http://localhost:5068/api/Login
{
"name": "Administrador",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"mustChangePassword": true
}
{
"errorMessages": [
"string"
]
}
Os projetos de teste encontram-se no diretório:
tests/
Para executar:
dotnet test