Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
7c2511e
[ADD] Docker-first docs and dev workflow tooling
jpdborgna Feb 24, 2026
dbaef0f
[UPT] Bump outdated deps, replace deprecated packages, fix imports
jpdborgna Feb 24, 2026
9926610
[UPT] Upgrade Python 3.9 → 3.12, replace cfscrape, remove Py2 leftovers
jpdborgna Feb 24, 2026
b83a5b6
[UPT] Bump aiohttp 3.11.14 → 3.13.3
jpdborgna Feb 24, 2026
501d051
[UPT] Bump beautifulsoup4 4.12.3 → 4.14.3
jpdborgna Feb 24, 2026
097bd72
[UPT] Bump Flask 3.0.0 → 3.1.3 and Flask-Cors 4.0.0 → 6.0.2
jpdborgna Feb 24, 2026
cc4dbfd
[UPT] Bump celery 5.4.0 → 5.6.2
jpdborgna Feb 24, 2026
1c6c147
[UPT] Bump requests 2.32.3 → 2.32.5
jpdborgna Feb 24, 2026
38bc8de
[UPT] Bump tweepy 4.14.0 → 4.16.0
jpdborgna Feb 24, 2026
deb1e43
[UPT] Bump instaloader 4.14.1 → 4.15
jpdborgna Feb 24, 2026
b2729cd
[UPT] Bump langdetect 1.0.8 → 1.0.9
jpdborgna Feb 24, 2026
311ac50
[UPT] Bump spotipy 2.24.0 → 2.25.2
jpdborgna Feb 24, 2026
4d0cab0
[UPT] Bump parse 1.20.2 → 1.21.1
jpdborgna Feb 24, 2026
5015f86
[UPT] Bump browser-cookie3 0.19.1 → 0.20.1
jpdborgna Feb 24, 2026
eaea141
[UPT] Bump google-api-python-client 2.163.0 → 2.190.0
jpdborgna Feb 24, 2026
3d146ea
[UPT] Bump playwright 1.50.0 → 1.58.0
jpdborgna Feb 24, 2026
b43a2e5
[UPT] Bump w3lib 2.2.1 → 2.3.1
jpdborgna Feb 24, 2026
09cb160
[UPT] Bump emailrep 0.0.4 → 0.0.5
jpdborgna Feb 24, 2026
a51093e
[UPT] Bump socialscan 2.0.0 → 2.0.1
jpdborgna Feb 24, 2026
0dfa947
[UPT] Bump stop_words 2018.7.23 → 2025.11.4
jpdborgna Feb 24, 2026
d85e322
[UPT] Bump redis 5.2.1 → 7.2.0
jpdborgna Feb 24, 2026
c238114
[UPT] Bump peopledatalabs 4.2.0 → 6.4.13
jpdborgna Feb 24, 2026
4738c58
[ADD] Unit test suite for Python backend
jpdborgna Feb 24, 2026
a401fed
[UPT] Bump w3lib 2.3.1 → 2.4.0 and TikTokApi 6.3.0 → 7.3.1
jpdborgna Feb 25, 2026
d8b401f
[UPT] Pin dev venv tools to pre-commit versions and gitignore .venv
jpdborgna Feb 25, 2026
7400355
[ADD] Coding style: ruff config with extended lint rules
jpdborgna Feb 25, 2026
f4d6e17
[ADD] CLAUDE.md with coding style and dev workflow guidelines
jpdborgna Feb 25, 2026
bae7ab3
[FIX] Full ruff compliance: lint + format across all backend code
jpdborgna Feb 25, 2026
352528b
[FIX] Fix 9 critical bugs found during code audit
jpdborgna Feb 25, 2026
9110408
[FIX] Fix 18 HIGH priority bugs found during code audit
jpdborgna Feb 25, 2026
6ffa8c1
[FIX] Fix 23 MEDIUM priority issues found during code audit
jpdborgna Feb 25, 2026
2921fce
[FIX] Fix 7 LOW priority style issues from code audit
jpdborgna Feb 25, 2026
6807ad8
[ADD] Close 6 test gaps found during code audit
jpdborgna Feb 25, 2026
33c964f
[FIX] Fix 3 test expectations after audit changes
jpdborgna Feb 25, 2026
a417271
[ADD] New frontend design document (React + Vite + shadcn/ui)
jpdborgna Feb 25, 2026
6f0efe0
[ADD] New frontend implementation plan (22 tasks, 11 phases)
jpdborgna Feb 25, 2026
5438ac0
[ADD] Scaffold frontend-next with Vite + React + Tailwind + shadcn/ui
jpdborgna Feb 25, 2026
ac63814
[ADD] Phase 2: Core infrastructure (types, API client, stores, regist…
jpdborgna Feb 25, 2026
544b9b1
[ADD] App shell with sidebar navigation, routing, and placeholder pages
jpdborgna Feb 25, 2026
bf2e34c
[ADD] Gatherer page: search bar, module grid, result cards, and export
jpdborgna Feb 25, 2026
6ffd195
[ADD] Visualization components: force graph, charts, data table, map,…
jpdborgna Feb 25, 2026
608e5c2
[ADD] Profile and Timeline pages with data aggregation
jpdborgna Feb 25, 2026
857f742
[ADD] API Keys page with full CRUD, import/export, and inline editing
jpdborgna Feb 25, 2026
8cb8a80
[ADD] Flask-SocketIO integration for real-time task updates
jpdborgna Feb 25, 2026
fd014a4
[ADD] Docker setup for frontend-next with nginx and compose integration
jpdborgna Feb 25, 2026
cea3252
[ADD] MSW mock service worker for development without backend
jpdborgna Feb 25, 2026
eb3e5c4
[ADD] Playwright e2e smoke tests for navigation and search
jpdborgna Feb 25, 2026
3e873b7
[ADD] Justfile recipes for frontend-next dev commands
jpdborgna Feb 25, 2026
a610467
[FIX] Allow unsafe Werkzeug in dev mode for Flask-SocketIO
jpdborgna Feb 25, 2026
42e7608
[FIX] Use new-style lowercase Celery settings to silence deprecation …
jpdborgna Feb 25, 2026
73c1443
[ADD] Design doc for module-specific visualizations in frontend-next
jpdborgna Feb 25, 2026
d9f809c
[ADD] Implementation plan for module-specific renderers
jpdborgna Feb 25, 2026
7591418
[ADD] d3-hierarchy dependency for bubble chart viz
jpdborgna Feb 25, 2026
b7680f1
[ADD] Treemap, BubbleChart, ContributionCalendar viz components
jpdborgna Feb 25, 2026
03a1875
[UPT] Add donut/full-pie variants and layout props to ModuleChart
jpdborgna Feb 25, 2026
d0176fd
[ADD] Renderer infrastructure and wire into ResultCard
jpdborgna Feb 25, 2026
89bd043
[ADD] Twitter, Instagram, TikTok module renderers
jpdborgna Feb 25, 2026
6f08fdb
[ADD] Twitch, Reddit, Spotify, LinkedIn module renderers
jpdborgna Feb 25, 2026
85bc183
[ADD] Mastodon, Keybase, Venmo, GitHub module renderers
jpdborgna Feb 25, 2026
c6cf364
[ADD] AccountCheck, Search/Dorks, and Leak module renderers
jpdborgna Feb 25, 2026
f8692ee
[ADD] Enrichment, Simple, and Tweetiment module renderers
jpdborgna Feb 25, 2026
9f60354
[UPT] Update MSW mocks with module-specific graphic data formats
jpdborgna Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Version control
.git/
.gitignore

# Python
__pycache__/
*.pyc
*.pyo
.venv/

# Node
node_modules/

# Dev tooling
.pre-commit-config.yaml
ruff.toml
justfile
.claude/

# CI/CD & deployment configs
.gitlab-ci.yml
install/vagrant/

# Documentation (not needed in image)
*.md
LICENSE

# OS files
.DS_Store
Thumbs.db
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,7 @@ outputs
# Pyenv #
#########
.python-version

# Dev virtualenv #
###################
.venv/
15 changes: 15 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.7
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
32 changes: 32 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# iKy - OSINT Tool

## Project Structure

- `backend/` — Python 3.12 Flask + Celery backend
- `frontend/` — Angular frontend
- `install/docker/` — Dockerfiles and compose config

## Coding Style

All Python code MUST comply with the project's `ruff.toml` configuration:

- **Formatter**: ruff format (black-compatible), line-length 88, target py312
- **Linter rules**: E, F, W (pycodestyle/pyflakes), I (isort), B (bugbear), UP (pyupgrade), SIM (simplify), C4 (comprehensions), A (builtins), RUF (ruff-specific)
- **Ignored**: E203 (black-compatible whitespace), E501 (line length handled by formatter)
- **Tests**: S101 (assert usage) is allowed in `**/tests/**`

When writing or modifying Python code:

1. Use modern Python 3.12 idioms (f-strings, `|` union types, `match`, etc.)
2. Keep lines at 88 chars max
3. Sort imports with isort style (stdlib, third-party, local — separated by blank lines)
4. Prefer list/dict/set comprehensions over map/filter
5. Avoid shadowing Python builtins (rule A)
6. Use `pathlib.Path` over `os.path` where practical

## Dev Workflow

- `just setup` — create `.venv/` with pre-commit and ruff (pinned to match pre-commit config)
- `just lint` / `just fmt` — check or auto-fix with ruff from the venv
- `just build` / `just up` / `just down` — Docker lifecycle
- `just test` — run pytest inside the backend container
158 changes: 98 additions & 60 deletions README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@

<div align="center" style="margin-bottom: 10px;">
<img alt="Redis" src="https://img.shields.io/badge/storage-redis-red.svg?style=for-the-badge">
<img alt="Python" src="https://img.shields.io/badge/python-3.9-informational.svg?style=for-the-badge">
<img alt="Python" src="https://img.shields.io/badge/python-3.12-informational.svg?style=for-the-badge">
<img alt="Celery" src="https://img.shields.io/badge/multiprocessing-celery-green.svg?style=for-the-badge">
<img alt="Flask" src="https://img.shields.io/badge/interface-flask-yellowgreen.svg?style=for-the-badge">
<img alt="Node" src="https://img.shields.io/badge/node-12.x-brightgreen.svg?style=for-the-badge">
<img alt="Angular" src="https://img.shields.io/badge/web%20framwork-angular%207-red.svg?style=for-the-badge">
<img alt="Node" src="https://img.shields.io/badge/node-22.x-brightgreen.svg?style=for-the-badge">
<img alt="Angular" src="https://img.shields.io/badge/web%20framework-angular%208-red.svg?style=for-the-badge">
<img alt="Docker" src="https://img.shields.io/badge/deploy-docker-blue.svg?style=for-the-badge&logo=docker">
</div>

<!--
Expand All @@ -34,9 +35,9 @@

---

<div align="center">
<div align="center">

[Descripción](#description)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Instalación](#installation)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Website][website]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Módulos](#modules)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Issues][issues]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Supporting](#sponsor)
[Descripcion](#description)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Instalacion](#installation)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Website][website]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Modulos](#modules)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Issues][issues]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Supporting](#sponsor)

</div>

Expand All @@ -52,8 +53,8 @@ Website References

<h1 align="center">iKy</h1>

<h1 id="description">Description</h1>
El proyecto iKy es una herramienta que colecta información a partir de una dirección de e-mail y muestra los resultados en una interface visual.
<h1 id="description">Descripcion</h1>
El proyecto iKy es una herramienta que colecta informacion a partir de una direccion de e-mail y muestra los resultados en una interface visual.

Visite el Gitlab Page del [Projecto](https://kennbroorg.gitlab.io/ikyweb/)

Expand All @@ -64,7 +65,7 @@ Visite el Gitlab Page del [Projecto](https://kennbroorg.gitlab.io/ikyweb/)
<a href="https://vimeo.com/434501702">Video Demo</a>
</div>

<h1 id="modules">Módulos</h1>
<h1 id="modules">Modulos</h1>

<div align="center" style="margin-bottom: 10px;">
<img alt="fullcontact" src="https://img.shields.io/badge/module-fullcontact-blue.svg?style=flat-square">
Expand Down Expand Up @@ -95,79 +96,116 @@ Visite el Gitlab Page del [Projecto](https://kennbroorg.gitlab.io/ikyweb/)
<img alt="mastodon" src="https://img.shields.io/badge/module-mastodon-blue.svg?style=flat-square">
</div>

<h1 id="installation">Instalación</h1>
<h1 id="installation">Instalacion</h1>

### Prerequisitos

- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/) (incluido con Docker Desktop)
- (Opcional) [just](https://github.com/casey/just#installation) ejecutor de tareas

Se debe instalar Redis y encenderlo en una terminal
### Inicio rapido

```shell
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
sudo make install
cd ..
git clone https://gitlab.com/kennbroorg/iKy.git
cd iKy
docker compose build
docker compose up -d
```

Vaya a nuestro [website][website]. Descargar el ZIP y descomprimirlo, instalar las dependencias y encenderlo en otra terminal
O, si tiene `just` instalado:

```shell
just build
just up
```
unzip iKy.zip
cd iKy-pack
pip install -r requirements.txt
cd backend
python3 app.py -e prod

Abra su navegador en [http://localhost:4200](http://localhost:4200)

Para detener todos los servicios:

```shell
docker compose down
# o
just down
```

Y finalmente, [browsearlo](#browse).
<h1 id="development">Desarrollo</h1>

<h3 id="browser">Browse</h3>
El flujo de desarrollo utiliza un **virtualenv para linting/pre-commit hooks** y **Docker para compilar y ejecutar** la aplicacion.

Abrir el browser en esta [url](http://127.0.0.1:4200)
### Configurar el entorno de desarrollo

Instale [just](https://github.com/casey/just#installation), luego:

```shell
just setup
source .venv/bin/activate
```

Esto crea un virtualenv de Python con `pre-commit` y `ruff`, e instala los git hooks.

### Recetas comunes

| Comando | Descripcion |
|---------|-------------|
| `just build` | Compilar imagenes Docker |
| `just up` | Iniciar todos los servicios |
| `just down` | Detener todos los servicios |
| `just logs` | Seguir logs del backend (`just logs frontend` para frontend) |
| `just ps` | Mostrar contenedores en ejecucion |
| `just shell-backend` | Abrir una shell en el contenedor del backend |
| `just shell-frontend` | Abrir una shell en el contenedor del frontend |
| `just lint` | Ejecutar ruff linter y verificacion de formato |
| `just fmt` | Auto-formatear codigo Python |
| `just restart backend` | Reiniciar un servicio especifico |
| `just rebuild` | Detener, recompilar e iniciar todos los servicios |
| `just clean` | Eliminar contenedores, volumenes e imagenes locales |

# API Keys

Una vez cargada la aplicación en el navegador, debería obtener la mayoría de las APIs y/o cookies de sesión del navegador.
A continuación se muestra una tabla con todos los campos a rellenar
Una vez cargada la aplicacion en el navegador, deberia obtener la mayoria de las APIs y/o cookies de sesion del navegador.
A continuacion se muestra una tabla con todos los campos a rellenar

| **Módulo** | **Status** | **Campo en apikey** | **Descripción** |
| **Modulo** | **Status** | **Campo en apikey** | **Descripcion** |
| :------------- | :--------: | :--------- | :--------- |
| Fullcontact | :octagonal\_sign: | | Discontinuado |
| PeopleDataLabs | :ok: | peopledatalabs\_key | :free: API **Free**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#peopledatalabs) |
| Linkedin | :ok: | linkedin\_li\_at / linkedin\_JSESSIONID [\(***\)](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#postdata) | :free: Cookie browser(:cookie:) Metodo. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#linkedin) |
| Twitter | :ok: | twitter\_user / twitter\_pass [\(***\)](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#postdata) | :free: Cookie browser(:cookie:) o usuario/password. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#twitter) |
| Instagram | :ok: | instagram\_user / instagram\_pass [\(***\)](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#postdata) | :free: Cookie browser(:cookie:) o user/pass. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#instagram) |
| HaveIBeenPwned | :ok: | haveibeenpwned\_key |:heavy\_dollar\_sign: API **Paid**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#haveibeenpwned) |
| Emailrep | :ok: | emailrep\_key | :free: API **Free**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#emailrep) |
| Leaklookup | :ok: | leaklookup\_key | :free: API **Free**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#leaklookup) |
| Spotify | :ok: | spotify\_client\_id / spotify\_client\_secret | :free: API **Free**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#spotify) |
| Twitch | :ok: | twitch\_client\_id / twitch\_client\_secret | :free: API **Free**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#twitch) |
| CSE (Google) | :ok: | cse\_api\_key / cse\_cx |:free: API **Free**. Explicado [aquí](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#cse) |
| PeopleDataLabs | :ok: | peopledatalabs\_key | :free: API **Free**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#peopledatalabs) |
| Linkedin | :ok: | linkedin\_li\_at / linkedin\_JSESSIONID [\(***\)](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#postdata) | :free: Cookie browser(:cookie:) Metodo. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#linkedin) |
| Twitter | :ok: | twitter\_user / twitter\_pass [\(***\)](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#postdata) | :free: Cookie browser(:cookie:) o usuario/password. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#twitter) |
| Instagram | :ok: | instagram\_user / instagram\_pass [\(***\)](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#postdata) | :free: Cookie browser(:cookie:) o user/pass. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#instagram) |
| HaveIBeenPwned | :ok: | haveibeenpwned\_key |:heavy\_dollar\_sign: API **Paid**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#haveibeenpwned) |
| Emailrep | :ok: | emailrep\_key | :free: API **Free**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#emailrep) |
| Leaklookup | :ok: | leaklookup\_key | :free: API **Free**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#leaklookup) |
| Spotify | :ok: | spotify\_client\_id / spotify\_client\_secret | :free: API **Free**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#spotify) |
| Twitch | :ok: | twitch\_client\_id / twitch\_client\_secret | :free: API **Free**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#twitch) |
| CSE (Google) | :ok: | cse\_api\_key / cse\_cx |:free: API **Free**. Explicado [aqui](https://gitlab.com/kennbroorg/iKy/-/wikis/APIs/ApiKeys-get#cse) |
| Reddit | :warning: | | En revision |
| Tiktok | :ok: | | Obtenida de su browser preferido. Solo logueesé in tiktok |
| Tiktok | :ok: | | Obtenida de su browser preferido. Solo logueese en tiktok |

<h1 id="update">Actualizar iKy</h1>

Debido a que el frontend de iKy está desarrollado en Angular, el cual se transpila, y un proceso de CI/CD lo empaqueta, lo mejor para la actualización es descargar iKy-pack del [website][website] y volver a ejecutar estos pasos
Descargue los ultimos cambios y reconstruya las imagenes Docker:

``` shell
unzip iKy.zip
cd iKy-pack
pip install -r requirements.txt
cd backend
python app.py -e prod
```shell
git pull
docker compose build
docker compose up -d
```

> No es necesario una reinstalación de redis
O con `just`:

Una vez completado lo anterior pueden copiar el archivo apikeys.json situado en backend/factories dentro del directorio de iKy desde la vieja instalación hacia la nueva instalación
```shell
git pull
just rebuild
```

O pueden utilizar la interface gráfica en el menu de apikeys las opciones de Exportar/Importar (Exportar desde la vieja instalación e importar en la nueva instalación)
Para preservar sus API keys entre actualizaciones, use las opciones de Exportar/Importar en el menu de apikeys de la interface grafica.

<div align="center">
<img alt="apis" height="400" src="https://kennbroorg.gitlab.io/ikyweb/assets/img/iKy-08.png">
</div>

O pueden utilizar una combinación de ambas (Lo mejor) utilizando la opción de importar desde la nueva instalación y buscando el archivo apikeys.json en backend/factories en el directorio de iKy de la vieja instalación

# Wiki
- [iKy Wiki](https://gitlab.com/kennbroorg/iKy/-/wikis/home)

Expand All @@ -179,27 +217,27 @@ O pueden utilizar una combinación de ambas (Lo mejor) utilizando la opción de
</div>

<h1 id="sponsor">Apoyar el proyecto</h1>
Ya sea que use este proyecto, haya aprendido algo de él o simplemente le guste, por favor considere apoyarlo comprándome un café, para que pueda dedicar más tiempo a proyectos de código abierto como este.
Ya sea que use este proyecto, haya aprendido algo de el o simplemente le guste, por favor considere apoyarlo comprandome un cafe, para que pueda dedicar mas tiempo a proyectos de codigo abierto como este.

<div align="center" style="margin-top: 30px;">
<a href="https://www.buymeacoffee.com/kennbro" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="80" ></a>
</div>

# Aviso Legal

Todo aquel que contribuya o haya contribuído con el proyecto, incluyendome, no somos responsables por el uso de la herramienta (Ni el uso legal ni el uso ilegal, ni el "otro" uso).
Todo aquel que contribuya o haya contribuido con el proyecto, incluyendome, no somos responsables por el uso de la herramienta (Ni el uso legal ni el uso ilegal, ni el "otro" uso).

Tenga en cuenta que este software fue inicialmente escrito para una broma, luego con fines educativos (para educarnos a nosotros mismos), y ahora el objetivo es colaborar con la comunidad haciendo software libre de calidad, y si bien la calidad no es excelente (a veces ni siquiera buena) nos esforzamos en perseguir la excelencia.

Considere que toda la informacion recolectada está libre y disponible por internet, la herramienta solo intenta descubrirla, recolectarla y mostrarla.
Muchas veces la herramienta ni siquiera puede lograr su objetivo de descubrimiento y recolección. Por favor, cargue las APIs necesarias antes de acordarse de mi madre.
Si aún con las APIs no muestra cosas "lindas" que usted espera ver, pruebe con otros e-mails antes de acordarse de mi madre.
Si aún probando con otros e-mails no ve las cosas "lindas" que usted espera ver, puede crear un issue, contactarnos por e-mail o por cualquiera de las RRSS, pero tenga en cuenta que mi madre no es ni la creadora ni contribuye con el proyecto.
Considere que toda la informacion recolectada esta libre y disponible por internet, la herramienta solo intenta descubrirla, recolectarla y mostrarla.
Muchas veces la herramienta ni siquiera puede lograr su objetivo de descubrimiento y recoleccion. Por favor, cargue las APIs necesarias antes de acordarse de mi madre.
Si aun con las APIs no muestra cosas "lindas" que usted espera ver, pruebe con otros e-mails antes de acordarse de mi madre.
Si aun probando con otros e-mails no ve las cosas "lindas" que usted espera ver, puede crear un issue, contactarnos por e-mail o por cualquiera de las RRSS, pero tenga en cuenta que mi madre no es ni la creadora ni contribuye con el proyecto.

No reembolsamos su dinero si no está satisfecho.
No reembolsamos su dinero si no esta satisfecho.

Espero que disfrute la utilizacion de la herramienta tanto como nosotros disfrutamos hacerla. El esfuerzo fue y es enorme (Tiempo, conocimiento, codificacion, pruebas, revisiones, etc) pero lo haríamos de nuevo.
Espero que disfrute la utilizacion de la herramienta tanto como nosotros disfrutamos hacerla. El esfuerzo fue y es enorme (Tiempo, conocimiento, codificacion, pruebas, revisiones, etc) pero lo hariamos de nuevo.

No use la herramienta si no puede leer claramente las instrucciones y/o el presente Aviso Legal.

Por cierto, para quienes insistan en acordarse de mi madre, ella murió hace muchos años pero la amo como si estuviera aquí mismo.
Por cierto, para quienes insistan en acordarse de mi madre, ella murio hace muchos anos pero la amo como si estuviera aqui mismo.
Loading