AlicornIO

December 4, 2025 · View on GitHub

Plataforma inteligente de processamento de imagens com IA

TypeScript Angular NestJS PostgreSQL RabbitMQ Redis Docker


📋 Sobre o projeto

AlicornIO é uma plataforma inteligente de processamento de imagens que redefine a forma como os usuários interagem com conteúdo visual. Projetada para ser rápida, escalável e fácil de usar, permite aplicar melhorias automáticas, detectar objetos e transformar imagens com efeitos artísticos utilizando modelos avançados de inteligência artificial.

✨ Principais funcionalidades

  • 🖼️ Upload em massa de imagens para processamento automático
  • 🤖 Modelos de IA personalizáveis para diferentes tipos de melhorias e análises
  • Notificações em tempo real via WebSockets sobre o status do processamento
  • 📁 Gerenciamento de projetos com organização por pastas e categorias
  • 🔐 Armazenamento seguro em CDN com links protegidos para compartilhamento
  • 📈 Escalabilidade automática para suportar múltiplos usuários simultaneamente
  • 🎨 Efeitos artísticos e detecção de objetos com IA

🎯 Público-alvo

A AlicornIO é voltada para:

  • Criadores de conteúdo
  • Designers e artistas digitais
  • Pesquisadores em visão computacional
  • Empresas que processam grandes volumes de imagens

🏗️ Arquitetura

O projeto utiliza uma arquitetura de microsserviços orientada a eventos (EDA), garantindo escalabilidade, resiliência e manutenibilidade.

AlicornIO/
├── frontend/          # Aplicação Angular
├── backend/           # API NestJS + Microsserviços
└── docker-compose.yml # Orquestração de serviços

🔧 Stack tecnológica

Frontend

  • Framework: Angular 19.2.5
  • Linguagem: TypeScript
  • Comunicação: WebSocket para notificações em tempo real
  • Estilização: CSS/SCSS

Backend

  • Framework: NestJS
  • Linguagem: TypeScript
  • Runtime: Node.js 18.19+
  • Padrões: CQRS, Event Sourcing, Outbox Pattern

Infraestrutura

  • Broker de Mensagens: RabbitMQ (amqplib)
  • Cache: Redis (ioredis)
  • Banco de Dados: PostgreSQL (Prisma ORM)
  • Armazenamento: Cloudinary
  • Containerização: Docker + Docker Compose
  • API em Tempo Real: WebSocket (Socket.io)

Documentação de APIs

  • REST: Swagger/OpenAPI
  • Eventos: AsyncAPI

🚀 Como começar

Pré-requisitos

Clonando o repositório

git clone https://gitlab.com/jala-university1/cohort-2/CSSD-352.GA.T2.25.M2/SB/proj_grupo_03/alicornio.git
cd AlicornIO

Configuração rápida com Docker

Para executar toda a stack de uma vez:

# Iniciar todos os serviços (frontend, backend, banco de dados, cache, etc.)
docker-compose up -d

# Verificar se os containers estão rodando
docker-compose ps

# Ver logs em tempo real
docker-compose logs -f

Configuração manual

Se preferir executar os serviços individualmente:

🎨 Frontend

Para instruções detalhadas de instalação e execução do frontend:

cd frontend
npm install
npm start

O frontend estará disponível em http://localhost:4200

⚙️ Backend

Para instruções detalhadas de instalação e execução do backend:

cd backend
npm install
npm run start:dev

O backend estará disponível em http://localhost:3000


📚 Documentação adicional

Estrutura de pastas

AlicornIO/

├── frontend/                 # Aplicação Angular
│   ├── src/
│   │   ├── app/             # Componentes, serviços e módulos
│   │   ├── assets/          # Arquivos estáticos
│   │   └── environments/    # Configurações de ambiente
│   ├── package.json
│   └── README.md            # 📖 Documentação específica do frontend

├── backend/                  # API NestJS
│   ├── src/
│   │   ├── modules/         # Módulos da aplicação
│   │   ├── common/          # Utilitários e guards
│   │   ├── config/          # Configurações
│   │   └── main.ts          # Entry point
│   ├── package.json
│   └── README.md            # 📖 Documentação específica do backend

├── docker-compose.yml        # Orquestração de serviços
├── .env.example              # Exemplo de variáveis de ambiente
└── README.md                 # Este arquivo

Variáveis de ambiente

Copie o arquivo .env.example para .env e configure as variáveis necessárias:

cp .env.example .env

Principais variáveis:

  • Credenciais do banco de dados PostgreSQL
  • Credenciais do Redis
  • Credenciais do RabbitMQ
  • Chaves da API Cloudinary
  • Secrets JWT para autenticação
  • Configurações de CORS

🧪 Testes

Frontend

cd frontend
npm test                 # Testes unitários
npm run test:coverage    # Cobertura de testes

Backend

cd backend
npm test                 # Testes unitários
npm run test:e2e         # Testes end-to-end
npm run test:cov         # Cobertura de testes

📦 Build para produção

Frontend

cd frontend
npm run build
# Arquivos gerados em: dist/

Backend

cd backend
npm run build
# Arquivos gerados em: dist/

Docker (Produção)

# Build das imagens
docker-compose -f docker-compose.prod.yml build

# Executar em modo produção
docker-compose -f docker-compose.prod.yml up -d

🔄 Fluxo de desenvolvimento

  1. Criar branch para sua feature e área do desenvolvimento:
    git checkout -b feature/front/nova-feature
    
  2. Fazer commit das mudanças:
    git commit -m 'feat(front): adiciona nova feature'
    
  3. Push para o repositório:
    git push origin feature/front/nova-feature
    
  4. Abrir Pull Request para revisão

Padrão de commits

Seguimos o padrão Conventional Commits:

  • feat: Nova funcionalidade
  • fix: Correção de bug
  • docs: Alterações na documentação
  • style: Formatação de código
  • refactor: Refatoração de código
  • test: Adição ou correção de testes
  • chore: Tarefas de manutenção

🛠️ Principais tecnologias e versões

TecnologiaVersãoDescrição
Angular19.2.5Framework frontend
NestJS11.0.10Framework backend
Node.js18.19+Runtime JavaScript
TypeScript~5.6.2Linguagem de programação
PostgreSQL16+Banco de dados relacional
Redis7+Cache e sessões
RabbitMQ3.13+Broker de mensagens
Docker24+Containerização

👥 Equipe

👩🏻‍💻 Gabriela Diniz Santos;

👨🏻‍💻 Luiz Félix Nascimento;

👨🏻‍💻 Pedro Lucas Oliveira de Medeiros;

👨🏻‍💻 Yago Bezerra Wanderley.


✨ Demo

https://github.com/user-attachments/assets/803d77fa-8a60-4c4d-bd62-cbe5d967e560


Desenvolvido com ❤️ pela equipe AlicornIO