'NOTA: Estou usando o serviço de beckend da Render, no modelo free, o que da um delay de 40 segundos até o beckend ativar, na sua primeira interação. Ou seja, para utilziar o serviço inicie a intereção com beckend e aguarde 40segundos para conseguir utilizar de fato o sistema ou a openAPI.'.
Este projeto é uma aplicação full stack composta por uma API construída com Fastify e Prisma, e uma interface frontend usando Next.js 15. Além disso, utilizamos Docker para criar um ambiente de desenvolvimento consistente e isolado. A aplicação frontend faz uso de cache e componentes de servidor para otimização de desempenho e SEO.
Documentação OPEN API (SWAGGER) https://saas-boilerplate-7zlh.onrender.com/docs
- Node.js: Ambiente de execução JavaScript no servidor.
- Fastify: Framework web rápido e eficiente para Node.js.
- Prisma: ORM e gerenciador de banco de dados.
- Swagger: Ferramenta para documentação de APIs.
- CASL: Biblioteca para controle de acesso baseado em permissões (RBAC).
- Prisma: ORM.
- ZOD : Validações.
- TypeScript: Superset de JavaScript que adiciona tipagem estática.
- Next.js 15: Framework React para aplicações web modernas.
- Parallel Routes
- Intercepting Routes
- Server Actions
- Zod
- Shadcn
- ...
- React: Biblioteca para construção de interfaces de usuário.
- React Query: Requisições Assíncronas e Cache
- Cache: Implementação de cache para otimização de desempenho.
- Server Components: Uso de componentes de servidor para renderização, melhor performance e otimização para SEO.
- Docker: Plataforma para desenvolvimento, envio e execução de aplicações em contêineres.
- Node.js
- pnpm (Package manager)
- Docker
-
Clone o repositório:
git clone https://github.com/DiegoPorfirio01/saas-next-festfy.git cd saas-next-festfy
-
Instale as dependências na pasta raiz:
pnpm install
-
Gere o cliente Prisma:
cd apps/api pnpm prisma generate
-
Execute o ambiente de desenvolvimento com Docker: (na raiz do projeto execute)
docker-compose up -d
-
Acesse a aplicação:
- API:
http://localhost:3333
- Documentação da API:
http://localhost:3333/docs
- Frontend:
http://localhost:3000
- API:
Utilizamos a biblioteca @casl/ability
para gerenciar permissões baseadas em funções (RBAC). As habilidades e permissões são definidas de acordo com as regras de negócios e aplicadas aos recursos da API para garantir acesso seguro e controlado.
Administrator | Member | Billing | Anonymous | |
---|---|---|---|---|
Update organization | ✅ | ❌ | ❌ | ❌ |
Delete organization | ✅ | ❌ | ❌ | ❌ |
Invite a member | ✅ | ❌ | ❌ | ❌ |
Revoke an invite | ✅ | ❌ | ❌ | ❌ |
List members | ✅ | ✅ | ✅ | ❌ |
Transfer ownership | ❌ | ❌ | ❌ | |
Update member role | ✅ | ❌ | ❌ | ❌ |
Delete member | ✅ | ❌ | ❌ | |
List projects | ✅ | ✅ | ✅ | ❌ |
Create a new project | ✅ | ✅ | ❌ | ❌ |
Update a project | ✅ | ❌ | ❌ | |
Delete a project | ✅ | ❌ | ❌ | |
Get billing details | ✅ | ❌ | ✅ | ❌ |
Export billing details | ✅ | ❌ | ✅ | ❌ |
✅ = allowed ❌ = not allowed
⚠️ = allowed w/ conditions
- Only owners may transfer organization ownership;
- Only administrators and project authors may update/delete the project;
- Members can leave their own organization;
Utilizamos Server Components no Next.js 15 para renderização no servidor, o que melhora significativamente o desempenho e a experiência do usuário. Além disso, a renderização no servidor proporciona uma melhor otimização para motores de busca (SEO), garantindo que o conteúdo da aplicação seja facilmente indexado pelo Google e outros buscadores.
Sinta-se à vontade para contribuir com este projeto. Para isso, siga os passos abaixo:
- Faça um fork do repositório.
- Crie uma nova branch:
git checkout -b minha-feature
. - Faça suas alterações e commit:
git commit -m 'Minha nova feature'
. - Envie para a branch original:
git push origin minha-feature
. - Crie um pull request.
Este projeto está licenciado sob a licença MIT.
Estamos animados para construir esta aplicação e esperamos que você também esteja! Se tiver dúvidas ou sugestões, sinta-se à vontade para abrir uma issue no repositório. Vamos criar algo incrível juntos! 🌟