O Web Storage é uma plataforma moderna e segura de gerenciamento de arquivos em nuvem que proporciona aos usuários um ambiente privado para fazer upload, baixar, renomear, editar e excluir seus documentos e dados pessoais.
Este projeto foi desenhado sob o conceito de "Glassmorphism" e possui design dark/light mode amigável, providenciando interface moderna.
O Web Storage foi construído utilizando as melhores e mais robustas opções do ecossistema Web Open-Source:
- Back-end: PHP 8.4 (FPM) rodando dentro de containers estruturados.
- Servidor Web: Nginx configurado com uploads expandidos (até 100MB por arquivo).
- Banco de Dados: PostgreSQL, mantendo forte integridade relacional.
- Armazenamento de Objetos: Oracle Cloud Infrastructure (OCI) Object Storage ou Armazenamento Local.
- Front-end: HTML5 semântico, CSS3 Moderno (CSS Grid/Flexbox) e Javascript (Vanilla ES6+).
- Testes Unitários: PHPUnit 11.
- CI/CD: Jenkins & GitHub Actions.
- Virtualização: Docker + Docker Compose (para ambientes Dev / Prod).
Todo o desenvolvimento arquitetural inicial do projeto, refatoração de UI css/js para componentes apartados (modulares), separação dos limites do servidor de imagem do Docker e tratamentos de responsividade deste Web Storage foram orquestrados através do raciocínio avançado do agente assistente inteligente Antigravity da Google Deepmind, através da colaboração e pair-programming via instrução de comando reverso na CLI/Workspace.
O sistema utiliza uma Arquitetura Híbrida de Persistência com uma camada de abstração que permite alternar entre armazenamento local e na nuvem através da variável de ambiente STORAGE_TYPE:
- Metadados (PostgreSQL): Todas as informações relacionais, como usuários, logs de auditoria e referências de arquivos, são armazenadas no banco de dados local.
- Arquivos Físicos (Abstraction Layer):
- OCI Object Storage (
oci): Integração nativa com o Oracle Cloud (OCI) para buckets escaláveis e duráveis. - Armazenamento Local (
local): Persistência no sistema de arquivos do servidor/container (ideal para desenvolvimento ou infraestrutura on-premise).
- OCI Object Storage (
O fluxo de desenvolvimento e entrega é totalmente automatizado:
- GitHub Actions: Executa a malha de testes unitários (
./run-tests.sh) automaticamente em cada Pull Request para a branchmastere em cada push para a branchdev, garantindo que nenhum código quebre as funcionalidades existentes. - Jenkins: Atua como o orquestrador de Continuous Deployment (CD). Ele monitora mudanças, reconstrói as imagens de produção (
docker-compose.prod.yml) e realiza o deploy seguro injetando as variáveis de ambiente necessárias via Jenkins Credentials.
Antes de tudo, garanta que o Docker e o docker-compose estejam instalados na sua máquina. Para proteger informações sensíveis, todas as credenciais do banco e configurações de ambiente foram extraídas dos arquivos do Docker e mapeadas externamente.
Na raiz do projeto você encontrará um arquivo chamado .env.model. Copie-o (ou apenas renomeie-o) criando um novo arquivo estritamente chamado .env.
STORAGE_TYPE: Define o driver de armazenamento. Uselocalpara disco local (padrão) ouocipara Oracle Cloud.STORAGE_ROOT: (Apenas paralocal) O caminho no container onde os arquivos serão salvos (ex:/var/www/html/storage).- Credenciais OCI: Caso use
oci, configureOCI_USER_OCID,OCI_TENANCY_OCID,OCI_REGION,OCI_FINGERPRINT,OCI_KEY_FILE,OCI_NAMESPACEeOCI_BUCKET.
Para inciar a aplicação via Docker Compose na porta 80 do seu localhost, execute:
docker compose -f docker-compose.yml up --build -dSempre que ligar o container pela primeira vez, as tabelas estarão vazias. Você precisa executar o script de inicialização do banco de dados interativamente:
docker compose -f docker-compose.yml exec app php src/init_db.phpCredenciais Padrão e Segurança: Ao iniciar, um administrador de sistema será gerado. O login inicial é:
- Usuário:
admin- Senha:
adminAtenção: O sistema identificará o seu primeiro acesso e exigirá uma troca imediata de senha por medidas de proteção, te isolando em uma tela de segurança até que o faça.
No diretório raiz do projeto, disponibilizamos dois scripts auxiliares BASH para manutenção rápida:
-
Testes (
run-tests.sh): Script completo que constrói os containers isolados de teste (docker-compose.test.yml), aguarda o banco limpar, instala as dependências via Composer e executa toda a malha de testes unitários do PHPUnit sem interferir no banco de dados local da aplicação principal. Execute via terminal:./run-tests.sh
-
Permissões (
set_permissions.sh): Script útil para ambientes Unix. Ele garante e reconecta que as pastas primárias comostorage/possuem a capacidade nativa de Leitura e Gravação (chmod 777), caso ocorra problemas do Nginx ou FPM recusar acesso aos discos por políticas do S.O hospedeiro:./set_permissions.sh
src/Config/: Configurações de Banco de Dados e OCI.src/Storage/: Abstração e drivers de armazenamento (LocalStorage,OCIStorage).src/Auth.php: Gerenciamento de sessões e autenticação.src/UserManager.php: CRUD de usuários e permissões.src/FileManager.php: Lógica de gerenciamento de objetos na nuvem.tests/: Suíte de testes unitários..github/workflows/: Automação de CI com GitHub Actions.Jenkinsfile: Pipeline de build e deploy contínuo.
(Abaixo deixamos como sugestão as capturas de tela das principais rotas para guiar visualmente novos utilizadores)
No lado esquerdo os administradores têm o controle total em formato de tabela (Listagem); no direito têm campos livres para a adição instantânea de novos membros ao grupo local.
Um design flex com botões minimalistas; suporte à seleções massivas ou isoladas; capacidade de abrir, ver e renomear arquivos nativos sem recarregar o page state todo.