{"id":21698034,"url":"https://github.com/parzibyte/cotizaciones_web","last_synced_at":"2025-04-12T12:32:49.883Z","repository":{"id":101793452,"uuid":"163924282","full_name":"parzibyte/cotizaciones_web","owner":"parzibyte","description":"Software web para realizar cotizaciones de clientes, calcular costos, tiempos y después imprimirlas. Creado con PHP, MySQL, Bootstrap 4 y VueJS","archived":false,"fork":false,"pushed_at":"2023-06-06T17:28:15.000Z","size":755,"stargazers_count":33,"open_issues_count":0,"forks_count":35,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T07:11:15.770Z","etag":null,"topics":["bootstrap-4","cotizaciones","javascript","mysql","php","php7","vuejs2"],"latest_commit_sha":null,"homepage":"https://www.parzibyte.me/apps/cotizaciones","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parzibyte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-03T04:46:27.000Z","updated_at":"2024-12-30T21:31:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"a12a440b-04b6-4433-971f-498f7f01081e","html_url":"https://github.com/parzibyte/cotizaciones_web","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parzibyte%2Fcotizaciones_web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parzibyte%2Fcotizaciones_web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parzibyte%2Fcotizaciones_web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parzibyte%2Fcotizaciones_web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parzibyte","download_url":"https://codeload.github.com/parzibyte/cotizaciones_web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248566475,"owners_count":21125673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap-4","cotizaciones","javascript","mysql","php","php7","vuejs2"],"created_at":"2024-11-25T19:30:50.366Z","updated_at":"2025-04-12T12:32:49.878Z","avatar_url":"https://github.com/parzibyte.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Sistema de cotizaciones  \n![Captura de pantalla del software](https://parzibyte.me/blog/wp-content/uploads/2019/01/Sistema-web-para-cotizaciones-y-presupuestos.png)\n  \nUn sistema web con PHP y MySQL que permite crear clientes y a partir de ellos cotizaciones con el costo automático, así como el tiempo de la cotización. Más tarde, eso se puede imprimir.  \n  \nAparte de eso, se cuenta con el apartado de los ajustes, en donde se personalizan algunos mensajes que se incluyen en la cotización, por ejemplo, el remitente o el mensaje de agradecimiento.  \n  \nHice el sistema porque personalmente necesitaba un software para cotizaciones que a veces son requeridas por mis clientes; como me cansé de utilizar Microsoft Word y guardar los archivos en mi disco duro, decidí crear un sistema que gestionara todo eso por mí.\n\n# Instalación\nhttps://www.youtube.com/watch?v=3mz9_KS_rvU\u0026feature=emb_logo\n\n\n# Características del software\n\nNo es la gran cosa, pero entre sus principales características encontramos las siguientes:\n\n*   Realizar cotizaciones o presupuestos\n*   Estimar el costo requerido, el cual se configura por cada servicio\n*   Calcular tiempo requerido por cada servicio\n*   Describir características y/o condiciones del trabajo\n*   Agregar clientes para ligarlos a las cotizaciones\n*   Imprimir la cotización o guardarla como PDF (esto depende del navegador la mayoría de veces)\n*   Multiusuario: cualquier usuario puede registrarse y usarlo, así de simple. Eso sí, las cotizaciones, servicios y características son separadas por usuario\n*   Totalmente open source\n*   Escrito con PHP, utiliza PDO para interactuar con la base de datos\n*   Base de datos MySQL\n*   Lado del cliente con Vue.JS y Bootstrap\n*   Mensaje de agradecimiento, presentación y pie totalmente configurables\n\nSe me ocurre que puede servir tanto como para estudiantes que tienen que entregar un **proyecto con PHP simple**, así como para personas que necesitan un software como estos. Voy a explicar cómo fue creado, en dónde se puede probar y también dónde se puede leer el código fuente.\n\n# Una introducción técnica\n\nEste sistema está creado con PHP utilizando PDO para conectar con MySQL. Usé lo mismo que explico en [**Introducción a PHP con PDO y MySQL**](https://parzibyte.me/blog/2018/02/12/mysql-php-pdo-crud/), o en la [**creación de un pequeño sistema de ventas**](https://parzibyte.me/blog/2018/03/13/pequeno-sistema-ventas-php/). En el lado del cliente utiliza a Bootstrap 4 y Vue.Js en su versión 2.\n\nPara convertir los minutos a un tiempo legible por los humanos, utilizo [**lo que se vio aquí**](https://parzibyte.me/blog/2019/01/03/convertir-minutos-texto-legible-javascript/). Por otro lado, para formatear el dinero utilizo la [**función que convierte números a dinero**](https://parzibyte.me/blog/2019/01/02/numero-moneda-javascript/) que publiqué anteriormente (lo puse rápidamente como filtro gracias a la simplicidad de Vue). \n\nLa sesión de PHP es manejada por un, valga la redundancia, [**manejador o handler propio de sesiones, el cual utiliza MySQL**](https://parzibyte.me/blog/2018/06/28/manejador-sesiones-php-mysql-pdo/) para la persistencia y que publiqué hace algún tiempo. \n\nAh, olvido decir que no se utiliza ningún framework para PHP; es el lenguaje en su simplicidad absoluta. \n\nHablando de las contraseñas, las cifro con _bcrypt_ (mira este [**tutorial para hashear en PHP**](https://parzibyte.me/blog/2017/11/13/cifrando-comprobando-contrasenas-en-php/)) pero antes de ello las convierto en una cadena de longitud fija con md5 (para evitar poner un [**límite en la longitud de las mismas**](https://parzibyte.me/blog/2018/11/07/cuando-descubri-que-las-contrasenas-de-una-web-no-estaban-hasheadas/)). Así, aunque MD5 es rompible por un ataque de diccionario, bcrypt no, porque usa sal. \n\nSobre la seguridad puedo decir que utilizo un [**token CSRF para evitar ataques CSRF**](https://parzibyte.me/blog/2018/08/20/que-es-un-ataque-csrf/), y para comprobar el token utilizo `hash_equals` en lugar de una simple comparación; todo esto para [**mitigar ataques de temporización**](https://parzibyte.me/blog/2018/11/08/hash_equals-ataques-de-temporizacion-php/).\n\n# Demostración y pruebas del software\n\nPuedes probar la aplicación web **[haciendo click aquí](http://bit.ly/cotizaciones_online) o entrando en bit.ly/cotizaciones_online**. \n\nFunciona perfectamente; regístrate con tu correo electrónico y luego inicia sesión. El software es web, y por lo tanto **multiplataforma**. \n\nPuedes acceder a él desde una tableta, teléfono o computadora desde cualquier parte del mundo. Aparte de eso, gracias al diseño responsivo se adapta a cualquier pantalla. \n\nLa siguiente captura es de mi teléfono:\n\n![App web para cotizaciones, presupuestos y costos en un teléfono Android](https://parzibyte.me/blog/wp-content/uploads/2019/01/App-web-para-cotizaciones-presupuestos-y-costos-en-un-tel%C3%A9fono-Android.jpg) \n\nUn PDF que fue generado (la impresión sale casi idéntica) es [**el que se puede ver aquí**](https://drive.google.com/open?id=1fdDIt28hfiQN4yFSbVwV8jY5d3odXJiz).\n\n# Probar app\nPruébala [aquí](http://bit.ly/cotizaciones_web).\n  \n# Tecnologías que usa  \nEs un sistema para cotizaciones que utiliza _PHP_, el framework _Bootstrap 4_ para los estilos y sólo un poco de _JavaScript_ con _Vue.js_ para mejorar la experiencia de usuario y renderizar algunas cosas  \n  \n# Montar sistema  \nAquí los requisitos para probar/montar el sistema:  \n  \n  \nNecesita un servidor con *PHP y Apache*. La versión mínima  \nde PHP es la *5.6*, esto debido a que se usa la notación corta del arreglo `[]`.\n\nYa es 2021 y existe PHP 8, pero incluso así, este software es compatible con la versión anteriormente mencionada.\n\n## Extensiones  \n* PDO  \n## Base de datos  \nBase de datos de MySQL o MariaDB. El esquema está en _esquema.sql_  \n  \n## Credenciales  \nConfigurar las credenciales en el archivo _env.php_; tomar como referencia _env.ejemplo.php_ y crear uno nuevo dependiendo del servidor.  \n  \n  \n# Licencia  \nCódigo fuente disponible bajo la licencia MIT. Te pido (pero no fuerzo) a que mantengas la página de *Acerca de* y el pie de página intactos, así como la posible publicidad que agregue.  \n  \n# Bugs y recomendaciones  \nPuedes reportar un bug o recomendar cosas que se agreguen al sistema (que beneficien a todos, no solamente a ti. Y que no sean descabelladas) y en mi tiempo libre las agregaré. No te garantizo nada, pues no estoy cobrando nada por el sistema.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparzibyte%2Fcotizaciones_web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparzibyte%2Fcotizaciones_web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparzibyte%2Fcotizaciones_web/lists"}