Git Product home page Git Product logo

mini-twitter-api's Introduction

💻 Mini Twitter API

Mini twitter API é um projeto utilizando django rest framework, postgres e docker. Atráves dele o usuário pode se cadastrar (tendo um token que expira a cada x tempo durante a sessão), criar posts, seguir outros usuários, ver o feed geral e o feed personalizado dos seguidores.

🧰 Tecnologias Utilizadas

  • Python
  • Django
  • Django Rest Framework
  • Docker
  • PostgreSQL

📌 Objetivos

  • *Caso 1: Cadastri de usuário ✔️
  • Caso 2: Autenticação (login) ✔️
  • Caso 3: Fazer uma publicação ✔️
  • Caso 4: Feed Geral ✔️
  • Caso 5: Feed personalizado ✔️
  • Deploy de projeto ✔️
  • Upload de arquivos estáticos ✔️
  • Servir arquivos estaticos - AWS 3 ✔️

Executando Localmente

Caso você não tenha um ambiente virtual configurado para o projeto, como um VirtualEnv ou Anaconda, recomendo configurar um para que todos os passos funcionem sem erros.

  1. Clone o repositório no seu ambiente local

$ git clone https://github.com/Raffae2679/mini-twitter-api.git

  1. Acesse o diretório que foi criado/clonado

$ cd mini-twitter-api

  1. Instale os pacotes python que são requisitos para o build do sistema

$ pip install -r requirements.txt

  1. Após baixar o projeto, você deve acessar o diretorio /docker e executar o comando afim de criar e iniciar um container contendo um banco de dados postgres local e pg4admin.

$ twitterApi\docker>docker-compose up

5.Agora você deve criar o banco de dados e realizar as migrações para que o DB esteja pronto para conexão e uso pelo Django

$ python manage.py migrate

  1. Crie um superusuário para ter acesso ao /admin

$ python manage.py createsuperuser

A saída deve ser algo semelhante a isto:

Email: Password: Password (again): Superuser created successfully.

  1. Inicie seu servidor local Django

$ python manage.py runserver

A saída deve ser algo semelhante a isto:

Watching for file changes with StatReloader Performing system checks...

System check identified no issues (0 silenced). January 18, 2022 - 22:57:44 Django version 4.0.1, using settings 'twitterApi.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.

Pronto! O sistema está rodando no seu servidor local e você pode acessá-lo na URL http://127.0.0.1:8000/ .

📃 Documentação para rotas implementadas

  • http://127.0.0.1:8000/api/login/ (POST): Esse endpoint responsável por realizar o login. Ele é feito passando um json contendo senha e username. Após autorizado o login, é necessário adicionar ao header um campo "Authorization" e passar "Token codigo_disponibilizado_pos_login".
  • http://127.0.0.1:8000/api/logout/ (GET): Esse endpoint é responsável por realizar o logout da api. Basicamente ele apaga o token da sessão, forçando o usuário fazer o login para geração de um novo.
  • http://127.0.0.1:8000/api/cadastrar_usuario/ (POST): Esse endpoint é responsável por realizar cadastro de usuário na api. Deve ser passado um json contendo username, email, password e password_confirm.
  • http://127.0.0.1:8000/api/user_info (GET): Esse endpoint retorna informação a respeito do usuário, como seu token de segurança, id (necessário para criar posts) e username.
  • http://127.0.0.1:8000/api/criar_post/ (POST): Esse endpoint é responsável por cadastrar posts na api. A criação de um post pode ser feita passando um json ou atráves de um formulário (para enviar imagens).
  • http://127.0.0.1:8000/api/feed_geral/ (GET): Esse endpoint é responsável por retornar os 10 posts recentes da api.
  • http://127.0.0.1:8000/api/feed_seguidores/ (GET): Esse endpoint é responsável por retornar os posts dos seguidores do usuário.
  • http://127.0.0.1:8000/api/seguidores/ (GET): Esse endpoint é responsável por retornar um json com os seguidores do usuário.
  • http://127.0.0.1:8000/api/usuarios/ (GET): Esse endpoint é responsável por retornar um json com os usuários da api.
  • http://127.0.0.1:8000/api/seguir/<str:email>/ (POST): Esse endpoint é responsável por realizar a ação de seguir um usuário. Deve ser passado um e-mail através da url desse endpoint, assim o usuário do e-mail será adicionado a lista de seguidores.

Pgadmin

  • O acesso ao pgadmin (executando pelo docker) é feito através do endereço http://localhost:16543/login?next=%2Fbrowser%2F
  • As credenciais são: Usuario - [email protected] | Senha - secret

☁️ Deploy

O projeto está feito deploy na plataforma heroku e para acessa-lo, basta clicar aqui para acessar. Todas as rotas mencionadas acima, estão em pleno funcionamento no ambiente que está feio o deploy. A diferença é que para acessar, você deve utilizar https://twitter-django-api.herokuapp.com/ ao invés de http://127.0.0.1:8000/

Além disso, os arquivos estáticos estão sendo servidos pelo AWS 3, ou seja, estão sendo salvos nos servidores da AWS.



Desenvolvido com 💜 por Raffael Morais

mini-twitter-api's People

Contributors

raffae2679 avatar

Watchers

 avatar  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.