GithubHelp home page GithubHelp logo

blog-challenge's Introduction

Blog

Escrito com Node.js, Fastify, Vite, React, Postgres e Docker.

São 3 servicos principais: Database, API e Frontend.

graph LR
    API --> Database
    Frontend --> API
Loading

Database

O banco de dados é um Postgres. Escolhi este por ser um banco de dados relacional e por ser um dos mais utilizados no mercado.

  • backend/database/01.sql - Criação do banco de dados, tabelas e functions

Api

A API é um servidor Fastify. Escolhi este por ser um servidor web extremamente rápido, com facilidade para validar requests/responses e também pode ser facilmente extendido.

  • backend/api/src/routes/auth.route.ts - Logica de autenticação usando token PASETO
  • backend/api/src/routes/post.route.ts - Logica de CRUD de posts
  • backend/api/src/entities.ts - Tipos das entidades do banco de dados
  • backend/api/src/config.ts - Dados de configuracao usando o Convict
  • backend/api/src/index.ts - Inicialização do servidor Fastify

A ideia foi a simplicidade e velocidade na hora de criar os endpoints. Ações simples na base de dados sao feitas com SQL simples, as mais complexas eu criei uma function. Principais rotas estão protegidas com autenticação via o token PASETO.

Frontend

O frontend é um projeto React com Vite. Escolhi o Vite por ser um bundler extremamente rápido e fácil de utilizar.

Coloquei o NextUI para facilitar a criação de componentes e o SWR para facilitar a criação de hooks para requests.

  • frontend/src/routes/index.tsx - Organizei as rotas com React Router
  • frontend/src/routes/home.tsx - A home após login, onde mostra todos os posts
  • frontend/src/routes/post/index.tsx - A página de criação de post
  • frontend/src/routes/auth/index.tsx - A página com componente de cadastro e login

Como rodar

Abrindo o terminal na pasta raiz, o comando abaixo irá subir os 3 serviços.

docker-compose up -d --build

Após a subida apenas acessar no browser http://localhost:5000

compose running

auth page

blog-challenge's People

Contributors

lsancho avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.