Começando um novo projeto

Mago Minimalista
Studio Oceano
Published in
7 min readSep 27, 2019

--

1. A ideia

Teve uma ideia faça um rápido protótipo (vale desenho no guardanapo) o importante é você ter uma noção clara de como o produto final irá funcionar.

2. O design

É muito mais fácil programar se você tiver um design semipronto, não perca muito tempo com isso, você pode comprar um layout pra customizar, ou se preferir fazer do zero usando um framework, saiba que vai dar muito trabalho e vai consumir muito tempo isso custa dinheiro. A não ser que esteja sendo pago para fazer um design 100% customizado ou sua ideia exija isso. Para todos os casos é importante ter as seguintes telas:

  • Login
  • Cadastro
  • Recuperar senha (pedido)
  • Recuperar senha (cadastro)
  • Ativação de conta
  • Página de erro
  • Página de busca (se for preciso)
  • Página inicial administrativa (pensar bem)
  • Páginas do projeto (cadastro de itens, exibição etc.)
  • Página para designs vazios
  • Site para usuários não cadastrados

Em geral você pode programar primeiro e depois fazer o design mais com o design pronto o programador vai saber os elementos que precisam ser programados e tudo vai fluir mais fácil.

3. Ferramenta para o programador

Como meu trabalho em particular é mais com php eu vou falar de ferramentas realmente importantes para se trabalhar com grandes projetos.

Você pode usar o NETBeans ou Eclipse de boa e se você tiver grana vai de PHPStorm, os produtos da empresa JetBrains são os melhores. Mais se você é vida louca como eu vamos de Visual Studio Code, só é preciso instalar umas centenas de plugins para que ele funcione de modo a agilizar a vida do desenvolvedor.

Eu separei um post só com esses plugins para seu Studio Code:

4. Git na cabeça

Impossível se trabalhar sem git. Então se você não sabe, aprenda. Use o Bitbucket para projetos privados (gratuito) ou pague para ter essa funcionalidade no Github.

Eu mesmo uso mais o bitbucket do que o github hoje em dia.
Segue um guia parte 1
Parte 2

Existem muitos cursos gratuitos na internet para que você possa começar a usar o git na prática.

5. Framework para desenvolvimento

Já sabe alguns? Pule para o tópico 6.

Existem muitos frameworks de desenvolvimento que você pode estar utilizando, se eles economizam trabalho de um lado, dão dor de cabeça de outro, geralmente são complexos e possuem muitos recursos que talvez não seja utilizado em um projeto. Frames pequenos para projetos pequenos e grandes para projetos grandes.

Um método bacana para estudar frameworks

Usar o framework de cara e ir usando a documentação. Um bom framework vai ter uma sessão de filtros para você filtrar e-mail, cpfs, números, essas coisas, funções pré-definidas (olhe uma por uma só pra você conhecer suas possibilidades), tags de aplicação para listar dados, escapar conteúdo com html etc., middlewares (que são estruturas de códigos executadas antes da inicialização de uma página, ou seja, construtores, servem para enviar pro login em uma área protegida ou mesmo realizar alguma captura de informações) e por fim, um curso vai de ajudar a entender a estrutura e como fazer um um crud básico, não precisa decorar, você pode aprender usando e consultando a documentação que no caso é mais legal.

6. MVC e estrutura

Se você é doidão como eu e prefere trabalhar em uma estrutura super controlada é preciso ter muito cuidado para não ser alvo de hackers e fazer a coisa certa.

A. Use composer ever;

B. Use micro frameworks (amo o Flight ou o Slim);

C. Use uma template engine (Smarty ou Twig), ele trazem mais segurança entre as views e os controllers;

D. Escolha uma ORM para trabalhar com banco de dados (doctrine ou medoo)

E. Use bibliotecas para pdf, excel, e-mail e tratar dados (Explore a comunidade de bibliotecas e veja o tutorial de como usar logo em seguida para você saber se vai ser útil em seu projeto.)

F. Sua estrutura terá a pasta vendor gerada pelo Composer; src com outras pastas dentro de configurações (src > database > connection.php), aqui vai o código fonte da aplicação, public que abrigará toda a parte de imagens, css, js; e app que deverá conter as pastas models, controlls e views; se houver outra necessidade para receber arquivos você cria suas pastas extras.

Exemplo de uma aplicação que eu tou montando chamada sbase.

Em src eu crio as pastas para linguagem caso eu queira criar um arquivo para múltiplas linguagens e emails para colocar os modelos de e-mail que eu irei usar na aplicação.

G. Use psr-4, configurando seu composer:

Vou usar namespace na pasta app e na base do meu projeto src/sbase, estou dando um alias para SBASE.
Usamos SBASE justamente por ele ser o alias para src/sbase. E DB porque é exatamente o nome da pasta onde o arquivo se encontra. O conteúdo do arquivo é somente de exemplo.

H. Comentários inteligentes e linguagem em seu projeto.

Se for escrever em inglês use só o inglês, se for escrever em português use só o português, não misture. Outra dica, crie comentários somente se eles forem nescessário.

A vantagem de escrever em inglês é que se você precisar de alguém para ampliar seu projeto poderá contratar alguém de qualquer parte do mundo.

I. Use arquivos de index.html nas base das pastas internas para aumentar a segurança.

Na base de casa pasta.

J. Arquivos essenciais na base do seu projeto:

Permissão pra reescrita de rotas. Você pode complementar esse arquivo para aumentar a segurança da sua aplicação on-line.
Nesse caso estou evitando que os arquivos da pasta vendor gerados pelo seu composer subam para o repositório.
Estou fazendo uma padronização nas configurações do meu editor.
Esse arquivo diz para os buscadores que eles podem indexar tudo com excessão das pastas mencionadas com Disallow.

K. Capriche no README.md

O GitHub renderiza sistemas linguagem de marcação, mais se você tá criando um projeto seja em equipe ou não é bom confeccionar uma guia como esse explicando a estrutura do projeto, colocando como realizar um crud básico, como obter uma rota.
Basicamente o mesmo documento de cima sem a aplicação visual.

8. Use a Orientação a Objetos

  • Utilize classes abstratas para definir as regras de uma classe principal;
  • Faça implementação de classes;
  • Use getters e setters para cada item afim de poder validar esses itens;

Gosto muito desse tutorial, se você não sabe ou não se lembra muito bem esses conceitos:

9. Não se esqueça de tratar excessões e usar os identificadores globais UFT-8 e tempo/lugar

Já fiz uma matéria antes com esse tutorial explicando esses detalhes. Vou deixá-la aqui.

10. Estruture bem seu banco de dados

Aplicações como chat, requisições, logs e exemplos de inserções únicas ou seja que não precisam de uma estrutura relacional para funcionar e que só vai encher sua tabela MySql podem ser armazenados em um firebase da vida, uma MadiaDB ou MongoDB. Já tabelas que precisam de um relacionamento como uma agenda de contatos flexível onde cada contato pode ter vários números e vários endereços, nesse caso o banco precisa ser relacional ou a aplicação vai ter que dar um modo de interligar os dados não relacionais do usuário principal. Não sei se ficou claro minha explicação. Comenta ai em baixo!

11. Use serviços de terceiros em sua aplicação através das APIs

Procure uma aplicação interessante, avalie custo benefício e use em seu projeto, temos reconhecimento facial, convertor de texto em fala e vice-versa, amplie seu universo.

Palavras finais.

Documentação é tudo tente manter o controle do que está fazendo e não perca a calma quando você travar dê um tempo pra si mesmo, respire e retome o que estava fazendo. Siga em frente com seu projeto, aprenda o que tiver que aprender mais não desista, vá em frente, depois não esqueça de incluir as tags para compartilhar no Twitter, Facebook e os códigos de analitics do Google. Me conta aqui nos comentários como esse post tem sido útil pra você.

Galera muita coisa vem pela frente, mais é preciso um pouco de paciência, estou escrevendo um livro, estruturando uma agência digital e criando um projeto que eu irei usar bastante em minha agência, sai do meu antigo emprego agora estou empreendendo e com tempo para realizar meus projetos, até a próxima.

Att,

Philipe Cairon M.

--

--

Mago Minimalista
Studio Oceano

Designer e Desenvolvedor Web. Sou aspirante por novas tecnologias, sempre em busca de ferramentas para incrementar o trabalho ou maximizar a produtividade.