/nlw-spacetime

NLW Spacetime

Primary LanguageTypeScript

NLW Spacetime é uma aplicação de recordação de memórias, onde o nosso usuário poderá adicionar à uma timeline textos, fotos e vídeos de acontecimentos marcantes da sua vida, organizados por mês e ano.

  • TODO

  • [] Adicionar na Fetch Recent Memories DTO -> userId e também no Memory Repository

  • [] Adicionar na Create Memory DTO -> userId

  • [] Listar uma memoria especifica, só pode mostrar a memoria do usuário e não de outro usuário. Mas se a memoria estiver "publica" pode ser acessada por outro usuário

✅ Demostração

Embreve

🎉 Sobre o projeto

Este projeto foi desenvolvido durante a semana da NLW, evento feito pela Rocketseat, que ocorreu em maio de 2023.

🚀 Tecnologias

O projeto foi desenvolvido com as seguintes tecnologias:

  • TypeScript - TypeScript extends JavaScript by adding types to the language.
  • React - A JavaScript library for building user interfaces
  • tailwindcss - Rapidly build modern websites without ever leaving your HTML.
  • Expo - Build one project that runs natively on all your users' devices
  • Node.js - A JavaScript runtime built on Chrome's V8 JavaScript engine.
  • Vitest - A Vite-native unit test framework. It's fast!
  • PostgreSQL - The World's Most Advanced Open Source Relational Database
  • PrismaORM - Next-generation Node.js and TypeScript ORM
  • Docker - Develop faster. Run anywhere.

typescript reactjs vite vite radixui vitest expo nodejs postgresql prismaorm docker

✨ Funcionalidades

Embreve

👨🏼‍💻 Como executar

Essas instruções permitirão que você obtenha uma cópia do projeto em operação na sua máquina local para fins de desenvolvimento e teste.

📃 Pre-requisitos

  • Node.js - Para rodar este projeto é necessário ter Node.js instalado em sua maquina. Caso não tenha ainda basta acessar o site do Node.js e instalar para continuar.
  • Docker
O projeto pode ser executado com Docker, para isso você deve ter ele em sua maquina local para executar o projeto e caso você queria instalar o Docker para Ubuntu/Windows vou deixar dois links abaixo;

🔧 Instalação

  • Clone este repositório
git clone https://github.com/alnmaurofranco/nlw-spacetime
  • Acesse a pasta do projeto
cd nlw-spacetime
  • Instale as dependências de cada projeto com (pnpm, yarn ou npm) nesse exemplo estou usando yarn e vou primeiramente executar na pasta web
  • ⚠ IMPORTANTE! Faça isso também para as outras pastas (server e mobile)
cd web && yarn install
  • Após a instalação, você deve renomear o arquivo .env.example para .env que se encontra nas raizes dos projetos e modifique a variavel de acordo com a sua configuração.

Executando a aplicação

  • Após completa todas as instalações, vamos iniciar nossa aplicaçaõ web com o seguinte comando:
cd web && yarn dev

🔥 Sem Docker no backend (SERVER)

  • Após a instalação das dependecias, você deve renomear o arquivo .env.example para .env que se encontra na raiz do projeto e modifique a variavel DATABASE_URL com suas configurações do seu banco de dados:
DATABASE_URL="postgresql://USER:PASS@HOST:PORT/DATABASE?schema=public"
  • Inicie a API com o comando:
yarn start:dev

🐳 Com Docker no backend (SERVER)

  • Subindo o container do projeto no Docker utilizando o comando abaixo:
docker-compose up -d
  • E depois de subir o container, você deve renomear o arquivo .env.example para .env que se encontra na raiz do projeto e modificar a variavel DATABASE_URL com as configurações abaixo:
DATABASE_URL="postgresql://root:docker@api-database:5432/spacetimedb?schema=public"
  • Pronto agora sua aplicação backend (server) está rodando no Docker e já pode ser acessado em http://localhost:3333/api

  • O comando a seguir é para a execução do projeto mobile:

cd mobile && yarn start
  • Pronto agora sua aplicação mobile está disponível para ser acessada

🧪 Executando os testes

A seguir iremos executar os testes da aplicação no backend (server)

cd server && yarn test
  • Pronto, teste da aplicação do seu backend (server) foi realizado.

🪄 Melhorias em desenvolvimento

Embreve


Feito com 💚 by AlanM Franco