PHP Classes

Personal: Generate a portfolio site

Recommend this page to a friend!
  Info   Documentation   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2025-01-11 (2 months ago) RSS 2.0 feedNot enough user ratingsTotal: 23 This week: 6All time: 11,291 This week: 7Up
Version License PHP version Categories
personal 1.0.0MIT/X Consortium ...5PHP 5, Content management, Business, A...
Description 

Author

This package can generate a portfolio site.

It implements an application that can present the portfolio of a professional.

Currently, it can:

- Manage and display the projects of the professional with support to filter the projects by category

- Contact form to let users send messages to the professional

Picture of Rodrigo Faustino
  Performance   Level  
Innovation award
Innovation award
Nominee: 23x

Winner: 4x

 

Documentation

Portfolio Website

Este projeto é um site de portfólio dinâmico desenvolvido com PHP puro, utilizando o padrão MVC clássico e sem arquitetura REST. O objetivo do site é oferecer um layout moderno e funcional, onde o conteúdo é gerenciado de forma dinâmica por uma área administrativa, ideal para exibir projetos, habilidades e informações de contato.

? Tecnologias Utilizadas

O site desenvolvido com as seguintes tecnologias e ferramentas:

  • PHP Puro: Linguagem principal do backend, sem uso de frameworks, garantindo simplicidade e desempenho.
  • Padrão MVC Clássico: Estrutura do código organizada em Modelos, Controladores e Views, facilitando a manutenção e escalabilidade do projeto.
  • League\Plates: Biblioteca de templates para PHP, responsável por gerenciar e renderizar as Views de forma eficiente.
  • HTML5, CSS3 e W3.CSS: Para criar uma interface moderna e responsiva.
  • Font Awesome: Biblioteca de ícones para enriquecer a experiência visual.
  • JavaScript (Vanilla): Para funcionalidades interativas básicas, como manipulação de menus e animações.
  • Monolítico: Toda a aplicação (frontend e backend) é servida como um único sistema integrado, sem APIs REST ou microserviços.

?? League\Plates\Engine

O League\Plates é uma biblioteca de templates leve e eficiente para PHP. Utilizamos essa ferramenta para separar a lógica da apresentação, permitindo:

  • Herança de Templates: Reutilização de estruturas HTML comuns, como cabeçalhos e rodapés.
  • Passagem de Dados: Possibilidade de enviar variáveis do controlador para as Views.
  • Modularização: Separação de componentes (parciais) como menus, rodapés e cabeçalhos.

Exemplo de Uso no Projeto

No projeto, utilizamos o League\Plates\Engine para renderizar templates de forma dinâmica. Aqui está um exemplo:

Configuração da Engine no Backend:

use League\Plates\Engine;

class View
{
    public static function render($template, $data = [])
    {
        $engine = new Engine(__DIR__ . '/../views');
        echo $engine->render($template, $data);
    }
}

Template Principal (master.php)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= $title ?? 'Portfolio Website' ?></title>
    <link rel="stylesheet" href="/assets/css/styles.css">
</head>
<body>
    <header>
        <?= $this->insert('partials/header') ?>
    </header>
    <main>
        <?= $this->section('content') ?>
    </main>
    <footer>
        <?= $this->insert('partials/footer') ?>
    </footer>
</body>
</html>

Renderização no Controlador

detalhe importante (sistema de templates) https://platesphp.com/

class Portifolio{
    public function index()
    {
        $projects = Project::all();
        View::render('portfolio', [
            'title' => 'My Portfolio',
            'projects' => $projects,
        ]);
    }
}

?? Funcionalidades

Menu Dinâmico: Gerado com base em configurações do backend. Filtros de Portfólio: Filtragem de projetos por categoria (Design, Fotos, Arte, etc.). Área de Contato: Formulário funcional para envio de mensagens. Layout Responsivo: Compatível com dispositivos móveis e desktops. Área Administrativa: Para gerenciar conteúdo do portfólio.

? Estrutura de Pastas

A organização do projeto segue uma estrutura simples e eficiente:

project/
??? app/
?   ??? controllers/
?   ??? database/
?   ?   ??? models/
?   ?        ??? Model.php
?   ?   ??? Connection.php
?   ?   ??? Transaction.php
?   ??? models/
?   ??? views/
?       ??? admin/
?       ??? auth/
?       ??? pages/
?       ??? partial/
? 
??? vendor/
??? public/
?   ??? assets/
?      ??? css/
?      ??? js/
?      ??? images/
?   ??? index.php
??? .env

Pré-requisitos e Instalação

Clone o repositório:

git clone https://github.com/faustinopsy/personal.git

Configure o ambiente no arquivo .env:

arquivo .env

STRIPE_KEY=token do striper se for receber dinhero
DATABASE_NAME=a01_teste
DATABASE_HOST=localhost
DATABASE_USER=root
DATABASE_PASSWORD=root123
BASE_URL=http://localhost:1230
EMAIL=conta de email
SENHA=senha para envio de email
APP_SECRET_KEY=53xy69

Instale as dependências com o Composer:

composer install

Inicie um servidor local:

php -S localhost:8000 -t public

? Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.

? Licença

Este projeto é licenciado sob a MIT License.


  Files folder image Files (116)  
File Role Description
Files folder imageapp (6 directories)
Files folder imagepublic (2 files, 2 directories)
Accessible without login Plain text file .env.example Data Auxiliary data
Accessible without login Plain text file .htaccess Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file composer.lock Data Auxiliary data
Accessible without login Plain text file database.sql Data Auxiliary data
Accessible without login Plain text file iniciar_estrtutura.bat Data Auxiliary data
Accessible without login Plain text file readme.md Doc. Documentation
Accessible without login Plain text file SECURITY.md Data Auxiliary data

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:23
This week:6
All time:11,291
This week:7Up