An open API service indexing awesome lists of open source software.

https://github.com/joao-pedro-p-holanda/yatd

Yet Another ToDo é uma aplicação web para gerenciamento de tarefas que permite também que você agende suas compras e saiba quanto dinheiro anda gastando na internet
https://github.com/joao-pedro-p-holanda/yatd

ruby-on-rails todolist

Last synced: 8 months ago
JSON representation

Yet Another ToDo é uma aplicação web para gerenciamento de tarefas que permite também que você agende suas compras e saiba quanto dinheiro anda gastando na internet

Awesome Lists containing this project

README

          

![App logo](./docs/logo.png)

# Yet Another ToDO

Este projeto consiste de uma Todo list implementada com o framework Ruby on Rails, mas com certos
diferenciais de outras versões dessa implementação comum: além da definição de tarefas,
você pode também agendar compras online que pretenda fazer, e visualizar os gastos feitos com
essas compras.

## Funcionalidades

- Criar diferentes listas de tarefas.
- Manipular tarefas individuais em cada lista.
- Criar compras agendadas.
- Controlar quais itens serão comprados e visualizar o balanço após as compras.

## Ferramentas

- Ruby 3.3.6
- Rails 8.0.1 (última versão)
- PostgreSQL 16.6 (última versão disponibilizada na plataforma Render)
- Redis 6.2.14 (última versão disponibilizada na plataforma Render)

## Banco de Dados

O banco de dados escolhido para essa aplicação foi o PostgreSQL pela minha familiaridade anterior,
juntamente com a facilidade de configuração e uso.

### Entidades

Abaixo está um diagrama das principais entidades da aplicação e seus relacionamentos:

```mermaid
erDiagram
users ||--o{ task_lists: "Pode ou não ter listas"
users ||--o{ purchases: "Pode ou não ter compras"
task_lists ||--|{ tasks : "Possui uma ou mais"
task_lists ||--o{ task_lists_statuses : "Diferentes status para uma lista"
task_lists_statuses ||--o{ statuses : "Diferentes listas para um status"
tasks ||--o{ task_checks : "Pode ter várias"
tasks ||--o{ task_tags : "Pode ter várias"
purchases ||--|{ purchase_links : "Possui um ou mais"

users {
int id
string name
string email
datetime updated_at
datetime created_at
}

task_lists {
int id
string name
string description
datetime updated_at
datetime created_at
}


task_lists_statuses {
int id
int task_list_id
int status_id
datetime created_at
datetime updated_at
}

statuses {
int id
string name
string color
datetime created_at
datetime updated_at
}

tasks {
int id
string name
string description
string status
int priority
datetime due_date
datetime updated_at
datetime created_at
}
task_tags {
int id
string name
string color
datetime updated_at
datetime created_at
}

task_checks {
int id
string description
boolean complete
datetime updated_at
datetime created_at
}

purchases {
int id
string name
string description
datetime due_date
}

purchase_links {
int id
boolean complete
float value
string url
datetime updated_at
datetime created_at
}
```

## Capturas de tela

Aqui estão algumas capturas de tela da aplicação:

- **Criando tarefas**. Nessa funcionalidade eu criei os formulários e visualização de tarefas
de forma não intrusiva com o uso do Turbo Rails, que consegue realizar atualizações em partes
específicas da interface de acordo com as requisições.

![Criando tarefas](./docs/modal-task-creation.jpeg)
![Visualizando tarefas](./docs/modal-task-view.jpeg)
![Quadro kanban](./docs/board-task.jpeg)

- **Criando lista de compras**. Para isso inclui uma biblioteca que permite extrair as imagens e outras
informações de social preview definidas com OpenGraph, isso permitiu que os links de compra
tivessem suas informações preenchidas dinamicamente com base apenas nas informações já existentes na página.

![Lista de compras início](./docs/purchase-list-1.jpeg)
![Lista de compras final](./docs/purchase-list-2.jpeg)