Skip to content

IagoAntunes/CertificateManagement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🇧🇷 Português

.NET Badge C# Badge Angular Badge MongoDB Badge RabbitMQ Badge


🇺🇸 English

🎬 Project Description

CertificateManagement is a full-stack web application designed for dynamic certificate generation and management. The system allows users to create personalized certificates, list them, and download the final image. A key feature is the session management system that provides a personalized experience without requiring user authentication, associating generated certificates with a unique browser session.

🛠️ Tools and Technologies Used

  • Backend:

    • .NET 8 / C# 💻 — Core platform for the API
    • ASP.NET Core 🌐 — Framework for building the REST API
    • MongoDB 🍃 — NoSQL database for storing certificate data
    • MassTransit 🚌 — Abstraction for message-based communication
    • RabbitMQ 🐇 — Message broker for asynchronous tasks
    • AutoMapper 🔄 — For object-to-object mapping (Entities to DTOs)
  • Frontend:

    • Angular 🅰️ — Framework for building the client-side user interface
    • TypeScript ⌨️ — Main language for the frontend
    • HTML & SCSS 🎨 — For structuring and styling the application
    • PrimeNG ✨ — UI component library for Angular

🏛️ Project Architecture

The project is structured following modern software design principles, separating backend and frontend responsibilities.

Backend Architecture (Clean Architecture)

The API follows the Clean Architecture principles, separating concerns into distinct layers:

  • Domain: Contains the core business logic and entities (e.g., CertificateEntity), with no external dependencies.
  • Application: Orchestrates the data flow and implements use cases (services), depending only on the Domain layer.
  • Infrastructure: Handles external concerns like database access (MongoDB repository implementation), messaging, and file storage.
  • API: The entry point of the application, responsible for exposing the REST endpoints and handling HTTP requests/responses. It connects all other layers through Dependency Injection.

Frontend Architecture

The frontend is built with Angular, following its standard architecture:

  • Components: Reusable UI blocks with their own logic and templates (e.g., certificate list, creation form).
  • Services: Encapsulate business logic, such as API communication (CertificateService) and session management (SessionService).
  • localStorage: Used to persist a unique session ID, allowing for a "login-less" user experience.

🚀 How to Run the Project Locally

Backend (.NET API)

  1. Prerequisites:

  2. Clone the repository:

    git clone https://github.com/IagoAntunes/CertificateManagement.git
  3. Configure the backend:

    • Navigate to the src/CertificateManagement.API directory.
    • Update the appsettings.json file with your connection strings for MongoDB and RabbitMQ.
  4. Run the API:

    cd src/CertificateManagement.API
    dotnet restore
    dotnet run

    The API will be available at https://localhost:7015.

Frontend (Angular)

  1. Prerequisites:

    • Node.js and npm (LTS version recommended)
    • Angular CLI: npm install -g @angular/cli
  2. Navigate to the frontend folder:

    cd src/CertificateManagement.Web
  3. Install dependencies:

    npm install
  4. Run the application:

    ng serve

    The application will be available at http://localhost:4200.


🇧🇷 Português

🎬 Descrição do Projeto

CertificateManagement é uma aplicação web full-stack para geração e gestão dinâmica de certificados. O sistema permite que os usuários criem certificados personalizados, listem-nos e façam o download da imagem final. Uma funcionalidade chave é o sistema de sessão que oferece uma experiência personalizada sem exigir autenticação do usuário, associando os certificados gerados a uma sessão única do navegador.

🛠️ Ferramentas e Tecnologias Utilizadas

  • Backend:

    • .NET 8 / C# 💻 — Plataforma principal da API
    • ASP.NET Core 🌐 — Framework para construção da REST API
    • MongoDB 🍃 — Banco de dados NoSQL para armazenar os dados dos certificados
    • MassTransit 🚌 — Abstração para comunicação baseada em mensagens
    • RabbitMQ 🐇 — Message broker para tarefas assíncronas
    • AutoMapper 🔄 — Para mapeamento de objetos (Entidades para DTOs)
  • Frontend:

    • Angular 🅰️ — Framework para construção da interface do cliente
    • TypeScript ⌨️ — Linguagem principal do frontend
    • HTML & SCSS 🎨 — Para estruturação e estilização da aplicação
    • PrimeNG ✨ — Biblioteca de componentes de UI para Angular

🏛️ Descrição da Arquitetura

O projeto é estruturado seguindo princípios modernos de design de software, separando as responsabilidades de backend e frontend.

Arquitetura do Backend (Clean Architecture)

A API segue os princípios da Clean Architecture, dividindo as responsabilidades em camadas distintas:

  • Domain: Contém a lógica de negócio principal e as entidades (ex: CertificateEntity), sem dependências externas.
  • Application: Orquestra o fluxo de dados e implementa os casos de uso (serviços), dependendo apenas da camada de Domínio.
  • Infrastructure: Lida com preocupações externas, como acesso ao banco de dados (implementação do repositório MongoDB), mensageria e armazenamento de arquivos.
  • API: Ponto de entrada da aplicação, responsável por expor os endpoints REST e lidar com requisições/respostas HTTP. Conecta todas as outras camadas através de Injeção de Dependência.

Arquitetura do Frontend

O frontend é construído com Angular, seguindo sua arquitetura padrão:

  • Components: Blocos de UI reutilizáveis com sua própria lógica e templates (ex: lista de certificados, formulário de criação).
  • Services: Encapsulam a lógica de negócio, como a comunicação com a API (CertificateService) e o gerenciamento de sessão (SessionService).
  • localStorage: Utilizado para persistir um ID de sessão único, permitindo uma experiência de usuário "sem login".

🚀 Como Rodar o Projeto Localmente

Backend (.NET API)

  1. Pré-requisitos:

  2. Clone o repositório:

    git clone https://github.com/IagoAntunes/CertificateManagement.git
  3. Configure o backend:

    • Navegue até o diretório src/CertificateManagement.API.
    • Atualize o arquivo appsettings.json com suas connection strings para o MongoDB e RabbitMQ.
  4. Execute a API:

    cd src/CertificateManagement.API
    dotnet restore
    dotnet run

    A API estará disponível em https://localhost:7015.

Frontend (Angular)

  1. Pré-requisitos:

    • Node.js e npm (versão LTS recomendada)
    • Angular CLI: npm install -g @angular/cli
  2. Navegue até a pasta do frontend:

    cd src/CertificateManagement.Web
  3. Instale as dependências:

    npm install
  4. Execute a aplicação:

    ng serve

    A aplicação estará disponível em http://localhost:4200.


⬆️ Back to top

About

A full-stack certificate manager project with a .NET/C# API and an Angular frontend. The system generates, lists, and allows downloading of created certificates.

Topics

Resources

Stars

Watchers

Forks

Contributors