Para todo tipo de setup, seja local, asdf, docker ou nix, é necessário baixar e instalar a supabase-cli!
No seu primeio uso, é necessário criar uma conta e fazer login no serviço:
supabase login
Com isso, é possível seguir com os guias de instalação local a seguir.
Este projeto possui três opções para ambientes de desenvolvimento:
Siga nosso tutorial de contribuição em CONTRIBUTING.md
/assets
: Armazena recursos estáticos como imagens, folhas de estilo e scripts que são usados pela aplicação web./config
: Inclui arquivos de configuração para diferentes ambientes de execução do projeto, controlando aspectos como conexões de banco de dados e outras variáveis de ambiente./guides
: Contém documentos e guias auxiliares para novos desenvolvedores, incluindo instruções de configuração, operações comuns e melhores práticas./lib
: O coração do projeto, onde reside a maior parte do código fonte da aplicação, incluindo módulos e funções da aplicação.
/pescarte
: Módulos e funções que implementam lógica do servidor e interação com o banco de dados. É onde reside a lógica de negócio./pescarte_web
: Onde reside a camada web da aplicação, contendo rotas, páginas, componentes visuais e lógicas aplicadas à UI./priv
: Diretório para dados privados que não são expostos no controle de versão, como scripts de migração do banco de dados./rel
: Contém scripts e configurações necessárias para gerar releases da aplicação, permitindo a compilação de builds que podem ser distribuídas e executadas em ambientes de produção./test
: Inclui testes de software, fundamental para garantir a qualidade e a estabilidade do código através de testes automatizados.[Elixir][ elixir-site ] é uma [linguagem funcional][ functional-prog ], criada em 2011 pelo José Valim. Ela é baseada na [BEAM][ beam-meaning ], a máquina virtual do [Erlang][ erlang-meaning ]. O Erlang é conhecido por ser uma linguagem robusta, perfeita para aplicações que necessitam ser tolerantes à falhas, concorrentes - aproveitando todo o potencial da máquina - e escaláveis.
O [Elixir][ elixir-site ] surgiu com a proprosta de modernizar a sintaxe do [Erlang][ erlang-meaning ], que é fortemente herdada de [Prolog][ prolog-meaning ] - uma linguagem do paradigma lógico - e adicionar um gerenciador de depêndencias. Elixir e Erlang não são linguagens funcionais porque querem ser, e sim pois a concorrência e paralelismo num programa [POO][ oop-meaning ], [mutável][ immutability ] e [imperativo][ imperative-prog ], torna o gerenciamento das [threads][ thread-meaning ] algo que beira o impossível.
Vantagens da programação funcional:
Imagine uma máquina de venda de refrigerantes, onde apenas uma lata sai por vez, ou seja, apenas uma pessoa pode ser "atendida" após a outra. Com o tempo, forma-se uma fila para comprar refrigerante, onde cada pessoa retira seu item e vai embora. Neste caso, temos um modelo de programação linear.
Fazendo a correlação deste cenário onde a máquina de refrigerante representa a [CPU][ cpu-meaning ] do computador e a fila de pessoas representa a fila de processos os quais essa CPU executa.
Agora imagine que temos 2 (duas) máquinas de refrigerante - ou seja, duas CPUs, ou de forma mais realista, dois núcleos dentro da CPU - e agora cada máquina de refrigerante possui sua própria fila de pessoas - processos da CPU. Neste caso, chamamos esse modelo de computação de [Paralelismo][ paralel-meaning ].
Num último caso, imagine que existe apenas 1 (uma) máquina de refrigerante (CPU) porém essa máquina é capaz de atender múltiplas filas de pessoas (processos), ou seja, mais de uma pessoa pode retirar seu item ao mesmo tempo da máquina. Para esse modelo de computação damos o nome de [Concorrência][ concurrency-meaning ].
A imagem a seguir exemplifica os conceitos de Paralelismo e Concorrência:
A [BEAM][ beam-meaning ] é a máquina virtual do [Erlang][ erlang-meaning ] (assim como a [JVM][ jvm-meaning ] do [JAVA][ java-meaning ]). Seu funcionamento básico é: ela divide cada ação do seu programa em pequenas ações, chamados de processos (não confundir com os processos do sistema operacional da máquina local). Esses processos são supervisionados pela própria BEAM, para que quando haja algum erro, o sistema se recupere sozinho e sem atrapalhar os outros processos.
Quando uma aplição Elixir/Erlang é iniciada, a BEAM cria um "Agendador" (Scheduler) para cada núcleo da CPU da máquina. Esses Agendadores também são processos, mas que supervisionam, agendam e gerenciam os outros processos da aplicação. A imagem a seguir exemplifica a crição dos Agendadores: