Coder Social home page Coder Social logo

nasa-apod-gallery-back's Introduction

Nasa Apod Gallery (NAG)

NAG é uma galeria das imagens astronômicas disponibilizadas pela Nasa. Os diferentes serviços de backend deste repositório consomem uma API da Nasa para a obtenção das imagens e seus metadados.

O objetivo é criar três serviços de backend (a saber, em Django, em Java e em Go) com as mesmas funcionalidades para colocar em prática e consolidar o conhecimento das linguagens de programação e frameworks já utilizados em outros projetos.


Django Backend

Aprenda o que é o Django, como criar seu primeiro projeto e muito mais nesse tutorial que eu fiz!

Como Executar

1 - Ative seu Ambiente Virtual:

  • Linux

    source ./nome-do-venv/bin/activate
    
  • Windows (Prompt de Comando)

    .\nome-do-venv\Scripts\activate
    
  • Windows (Terminal Integrado do VSCode)

    source ./nome-do-venv/Scripts/activate
    

2 - Instale as dependências do projeto:

  • manualmente:

      pip install -r requirements.txt
    
  • ou automaticamente através do makefile:

      make install
    

3 - Conecte com Banco de Dados MySQL e Crie as Configurações Locais

  1. Crie um banco de dados pelo MySql (nomeie-o nag_db);

  2. Crie um arquivo chamado local_settings.py dentro do diretório Django/NAG/ e adicione o seguinte código;

  • Note que você deve modificar todos os campos abaixo de acordo com as configurações do seu banco de dados, tais como USER, PASSWORD e PORT.

  • Além disso, você também deve adquirir uma API key da Nasa aqui.

  • E, caso deseje o uso de autenticação com Google, siga as instruções do meu tutorial para obter as chaves para a sua aplicação.

    from nome_do_projeto.settings import *
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'nag_db',
            'USER': 'bd_username',
            'PASSWORD': 'bd_user_password',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
    
    # Configurações do Django-AllAuth para autenticação com Google
    SOCIALACCOUNT_PROVIDERS = {
        'google': {
            'APP': {
                'client_id': '', # ID da sua aplicação
                'secret': '', # Chave da sua aplicação
                'key': ''
            }
        }
    }
    
    SECRET_KEY = "" # Chave de segurança do Django (inicialmente no arquivo settings.py)
    API_KEY = "" # API key da Nasa
  1. Execute as migrações (já utilizando as configurações de local_settings.py):
  • Crie uma migração a partir do modelo de banco de dados novo ou alterado (através do makefile):

      make makemigrations
    
  • E, por fim, aplique a migração criada, também por meio do makefile:

      make migrate
    

4 - Execute o Projeto

    make runserver
  • Por padrão, o servidor local estará disponível em localhost:8000.

nasa-apod-gallery-back's People

Contributors

gustavomartinx avatar

Watchers

 avatar

nasa-apod-gallery-back's Issues

Usuários

Back

CRUD de usuários

  • Criar usuários
  • Obter os dados do meu usuário
  • Atualizar dados do meu usuário
  • Deletar o meu usuário (e seus dados)

Autenticação do usuário

  • Gerar um hash
  • Criar um token de autenticação
  • Validar o token em todos os serviços/funções do backend

Front

  • Tela de Logup (criar usuário/conta)
  • Tela de Login (entrar num usuário/conta)
  • Integrar com API do back
  • Armazenar o token de autenticação

CRUD de Listas

Back

  • para cada um das tarefas abaixo, criar uma função view e uma url (api endpoint)
  • criar uma nova lista
  • obter todas as listas do usuário
  • gerenciar cada lista
    • editar o nome da lista
    • excluir a lista
  • Adicionar imagem à uma lista (através da ampliação da imagem - modal)
  • Remover uma imagem de uma lista (através da ampliação da imagem que encontra-se no feed respectivo à lista na qual a imagem pertence)
    path('/remove-image', views.remove_image_from_collection),

Front

  • Criar componente header da página
    • Icone de conta
    • Ícone de configs
    • Ícone de listas (menu dropdown de listas)
      • mini header
      • exibir todas as listas do usuário em formato de lista
      • botão para criar uma nova lista
      • botão para gerenciar uma lista
        • editar o nome da lista
        • excluir aquela lista
  • Botão para adicionar/remover imagem à/de uma lista

Criar documentação do backend

Tarefas para a criação da documentação/readme do projeto de backend do NAG:

  • Visão Geral ou Overview
  • Tecnologias Utilizadas ou Technologies
  • Estrutura do Projeto ou Project's Structure (SST*)
  • Configuração do Ambiente de Desenvolvimento ou How to Execute
  • Documentação da API ou Docs
    • Endpoints
    • Parâmetros extras (opcional)
    • Campos da(s) resposta(s)
    • Exemplos de requisição e resposta

*SST: Se Sobrar Tempo. Portanto opcional (para o caso de algum contribuidor - de bom coração - quiser ajudar).

Lógica de consumo da API da Nasa

Back

  • Gerar uma API key da Nasa
  • Criar o app Django api_handler responsável por essa história de usuário
  • Criar view responsável por fazer as requisições para a API da Nasa e enviar esses dados pro front

Request + API Key

https://api.nasa.gov/planetary/apod?api_key=vWJeKL9UEsd3EDmz4ZaFuglOS6DR6EBPoLjmtRLv&count=5

Front

  • Fazer a requisição para o back
  • Exibir as imagens recebidas de cada requisição feita
  • Exibir os metadados de cada imagem ao ampliá-las (ao clicar nas imgs)
    • Exibir de forma esteticamente correta

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.