InSilicGenesis é um projeto acadêmico full stack para simular organismos artificiais a partir de sequências sintéticas de DNA. O sistema combina conceitos de biologia molecular, bioinformática e evolução computacional para gerar organismos, analisar padrões genéticos, identificar traits e calcular fitness.
A aplicação é composta por uma API REST em Java/Spring Boot, um frontend em Next.js/React e um ambiente Docker com MySQL para persistência.
- Gera organismos com sequências de DNA personalizadas ou aleatórias.
- Analisa genomas com base em motifs e padrões sobrepostos.
- Identifica traits associadas a esses padrões.
- Calcula um score de fitness evolutivo.
- Aplica mutações estocásticas e recalcula a análise.
- Mantém histórico de organismos com filtros e paginação.
- Expõe a API com documentação automática via Swagger/OpenAPI.
O motor de simulação lê uma sequência composta por A, T, C e G e percorre a cadeia com uma janela deslizante de 1 base, gerando substrings sobrepostas de tamanho 2, 4, 8, 12 e 16.
A regra de ativação segue a prioridade:
- 16 bases
- 12 bases
- 8 bases
- 4 bases
- 2 bases
Ou seja, a primeira correspondência encontrada tem prioridade, seguindo a lógica de “first match wins”.
Para quem não conhece biologia molecular, a ideia pode ser resumida assim:
- O DNA funciona como um manual de instruções do organismo.
- Um motif é uma palavra ou frase desse manual que pode indicar uma função especial.
- Uma trait é a característica ou comportamento que esse padrão ativa no organismo simulado.
- O fitness é uma nota de desempenho: o quão bem o organismo se adapta ao ambiente simulado.
- O RNA representa uma cópia dessas instruções, usada para mostrar como a informação genética é processada no sistema.
- Motif: padrão de sequência detectado no DNA.
- Trait: efeito associado ao motif, como uma característica funcional ou fenotípica.
- Fitness: soma dos scores das traits ativadas; valores positivos aumentam o desempenho, enquanto valores negativos representam instabilidade, degradação ou colapso.
Mesmo sendo uma simulação simplificada, o projeto preserva regras básicas da biologia molecular:
- DNA: apenas A, T, C e G; pareamento A-T e C-G.
- RNA mensageiro: transcrição A-U, T-A, C-G e G-C.
- RNA transportador: complementação A-U, U-A, C-G e G-C.
- Validação das sequências no modelo Organism para garantir consistência.
A base de regras do projeto considera traits mapeadas em MotifDatabase e no enum Trait, organizadas por categorias:
- Comuns (2 bases): Cellular Agility, Structural Stability, Metabolic Adaptability, Energy Efficiency, Resource Recycling, Environmental Sensing e Replication Instability.
- Intermediários (4 bases): Cellular Exploration, Homeostasis, Phenotypic Plasticity, Energy Optimization, Systemic Balance, Biochemical Synergy, Cellular Communication e Metabolic Disorganization.
- Raros (8 bases): Tissue Regeneration, Dual Functional Efficiency, Optimized Metabolism, Mutation Resistance, Cellular Error Evasion, Multi-System Coordination, Genomic Fragility, Metabolic Conflict, Regulatory Disruption e Signal Interference.
- Épicos (12 bases): Energy Self Sufficiency, Functional Amplification, Error Resistance, Continuous Adaptation, Advanced Homeostasis, Functional Degradation, Repetitive Sequence Stress e Overexpression Strain.
- Lendários (16 bases): Systemic Regeneration, Extreme Resilience, Stable Accelerated Evolution, Absolute Genomic Stability, Systemic Harmonization, Replication Collapse, Genomic Repetition Fatigue, Coding Region Instability, Periodic Expression Instability e Regulatory Element Collision.
A aplicação também oferece uma funcionalidade de mutação espontânea, acessada pelo modal de mutação na interface. Essa ação simula uma alteração estocástica no genoma e recalcula o estado do organismo.
O fluxo é:
- O sistema recupera o organismo atual.
- Uma nova sequência de DNA é gerada com alterações aleatórias.
- O backend recalcula RNAs, motifs, traits e fitness.
- A interface atualiza o novo estado do organismo.
Essa funcionalidade demonstra a dinâmica evolutiva do projeto: organismos podem ganhar ou perder vantagens conforme o genoma é alterado.
A aplicação segue uma arquitetura full stack com separação clara de responsabilidades:
- Frontend: interface web para criar, visualizar e interagir com organismos.
- Backend: API REST com controllers, services, DTOs, repositories e modelos de domínio.
- Banco de dados: MySQL para persistência de organismos, ocorrências e histórico.
Fluxo principal:
- O usuário cria ou gera um organismo.
- O backend valida e persiste o registro.
- O motor genético analisa a sequência.
- Traits e fitness são recalculados.
- O resultado é retornado ao frontend ou disponibilizado pela API.
- Controller: recebe requisições HTTP e delega operações ao service.
- Service: centraliza regras de negócio, análise genética, mutação e histórico.
- Mapper: converte entidades em DTOs para resposta da API.
- Repositories: encapsulam acesso ao banco de dados.
- Serviços auxiliares: MotifDetectionService e FitnessService complementam o fluxo de análise.
| Tecnologia | Uso |
|---|---|
| Java 25 | Linguagem principal |
| Spring Boot 4.0.7 | Framework backend |
| Spring Web MVC | API REST |
| Spring Data JPA | Persistência |
| Hibernate | ORM |
| MySQL Connector | Conexão com MySQL |
| Validation | Validação de entrada |
| Lombok | Redução de boilerplate |
| SpringDoc OpenAPI | Documentação Swagger |
| Maven | Build e dependências |
| Tecnologia | Uso |
|---|---|
| React 19 | Biblioteca para interfaces |
| Next.js 16.2.10 | Framework web |
| TypeScript | Tipagem estática |
| Tailwind CSS v4 | Estilização |
| Framer Motion | Animações |
| shadcn/ui | Componentes visuais |
| Axios | Comunicação com a API |
| Tecnologia | Uso |
|---|---|
| Docker | Containerização |
| Docker Compose | Orquestração de serviços |
| MySQL 9.7.1 | Banco relacional |
InSilicGenesis/
├── Backend/
│ ├── src/main/java/
│ │ ├── controller/
│ │ ├── service/
│ │ ├── repository/
│ │ ├── dto/
│ │ ├── model/
│ │ └── util/
│ └── pom.xml
├── Frontend/
│ ├── app/
│ ├── components/
│ ├── lib/
│ └── package.json
├── docker-compose.yml
└── README.MD
git clone https://github.com/Skrewed/InSilicGenesis.git
cd InSilicGenesisdocker compose up --build -d- Frontend: http://localhost:3000
- Backend/API: http://localhost:8080
- Swagger/OpenAPI: http://localhost:8080/swagger-ui/index.html
docker compose logs -f backend
docker compose logs -f frontend
docker compose logs -f mysql| Método | Endpoint | Finalidade |
|---|---|---|
| GET | /api/health | Verifica o status da API |
| POST | /api/organisms | Cria um organismo com DNA personalizado |
| POST | /api/organisms/random | Gera e analisa um organismo com genoma aleatório |
| GET | /api/organisms | Lista todos os organismos cadastrados |
| GET | /api/organisms/{id} | Busca um organismo específico por ID |
| GET | /api/organisms/{id}/traits | Lista as traits detectadas |
| GET | /api/organisms/{id}/analysis | Retorna a análise genética completa |
| PUT | /api/organisms/{id}/mutate | Aplica uma mutação ao genoma |
| DELETE | /api/organisms/{id} | Remove um organismo |
| GET | /api/organisms/history | Histórico paginado com filtros |
Configurações padrão do ambiente Docker:
- Host: localhost
- Porta: 3306
- Banco: inSilicGenesis
- Usuário: admin
- Senha: insilicgen
Este projeto foi desenvolvido como uma aplicação de referência para explorar princípios de:
- engenharia de software full stack;
- API REST e documentação automática;
- persistência relacional;
- simulação genética computacional;
- visualização de dados evolutivos em interface web.
Além disso, ele atende à proposta da atividade ao demonstrar um sistema completo com frontend, backend, banco de dados, integração entre camadas, CRUD, documentação técnica e instruções de execução.