añadida paginas de proyecto y CV
BIN
content/proyectos/CoordKeeper/1.gif
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
content/proyectos/CoordKeeper/1.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
content/proyectos/CoordKeeper/2.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
@@ -2,6 +2,7 @@
|
||||
date : '2025-05-02T01:47:53-03:00'
|
||||
draft : false
|
||||
title : 'CoordKeeper'
|
||||
image : 'index.png'
|
||||
---
|
||||
|
||||
es una aplicación web desarrollada con React diseñada específicamente para jugadores de Minecraft. Esta herramienta permite a los usuarios almacenar, organizar y gestionar fácilmente las coordenadas de ubicaciones importantes dentro del juego.
|
||||
|
||||
BIN
content/proyectos/CoordKeeper/index.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
@@ -2,12 +2,14 @@
|
||||
"htmlElements": {
|
||||
"tags": [
|
||||
"a",
|
||||
"article",
|
||||
"blockquote",
|
||||
"body",
|
||||
"br",
|
||||
"button",
|
||||
"code",
|
||||
"defs",
|
||||
"dialog",
|
||||
"div",
|
||||
"em",
|
||||
"footer",
|
||||
@@ -15,6 +17,7 @@
|
||||
"h2",
|
||||
"h3",
|
||||
"head",
|
||||
"header",
|
||||
"hr",
|
||||
"html",
|
||||
"img",
|
||||
@@ -32,12 +35,14 @@
|
||||
"span",
|
||||
"stop",
|
||||
"strong",
|
||||
"style",
|
||||
"svg",
|
||||
"title",
|
||||
"ul"
|
||||
],
|
||||
"classes": [
|
||||
"absolute",
|
||||
"active:z-0",
|
||||
"animate-bounce",
|
||||
"bg-[radial-gradient(circle,rgba(0,0,0,0)_0%,rgba(0,0,0,0.5)_70%,#ffffff_100%),repeating-linear-gradient(45deg,#000000,#000000_10px,#ffffff_10px,#ffffff_20px)]",
|
||||
"bg-[repeating-linear-gradient(transparent,transparent_27px,#333_28px)]",
|
||||
@@ -47,7 +52,10 @@
|
||||
"bg-cyan-200",
|
||||
"bg-gray-200",
|
||||
"bg-gray-800",
|
||||
"bg-opacity-50",
|
||||
"bg-sky-200",
|
||||
"bg-sky-300",
|
||||
"bg-sky-600",
|
||||
"bg-white",
|
||||
"border",
|
||||
"border-2",
|
||||
@@ -87,7 +95,10 @@
|
||||
"h-16",
|
||||
"h-48",
|
||||
"h-6",
|
||||
"h-[20rem]",
|
||||
"h-[80%]",
|
||||
"h-auto",
|
||||
"h-full",
|
||||
"h-screen",
|
||||
"hidden",
|
||||
"highlight",
|
||||
@@ -104,6 +115,7 @@
|
||||
"hover:text-white",
|
||||
"hover:z-2",
|
||||
"inline-block",
|
||||
"inset-0",
|
||||
"items-center",
|
||||
"justify-between",
|
||||
"justify-center",
|
||||
@@ -111,8 +123,6 @@
|
||||
"lg:text-5xl",
|
||||
"m-4",
|
||||
"max-w-4xl",
|
||||
"max-w-none",
|
||||
"mb-12",
|
||||
"mb-2",
|
||||
"mb-4",
|
||||
"mb-6",
|
||||
@@ -124,18 +134,21 @@
|
||||
"md:text-xl",
|
||||
"mr-2",
|
||||
"mt-12",
|
||||
"mt-16",
|
||||
"mt-2",
|
||||
"mt-6",
|
||||
"muted",
|
||||
"mx-auto",
|
||||
"object-cover",
|
||||
"opacity-100",
|
||||
"overflow-hidden",
|
||||
"p-1",
|
||||
"p-12",
|
||||
"p-2",
|
||||
"p-4",
|
||||
"p-5",
|
||||
"p-8",
|
||||
"prose",
|
||||
"prose-lg",
|
||||
"pt-5",
|
||||
"px-2",
|
||||
"px-3",
|
||||
"px-4",
|
||||
@@ -148,9 +161,11 @@
|
||||
"py-8",
|
||||
"right-0",
|
||||
"rounded",
|
||||
"rounded-b-full",
|
||||
"rounded-full",
|
||||
"rounded-lg",
|
||||
"rounded-md",
|
||||
"rounded-t-full",
|
||||
"rounded-t-lg",
|
||||
"self-center",
|
||||
"shadow-2xl",
|
||||
@@ -158,11 +173,13 @@
|
||||
"shadow-[0_4px_6px_-1px_rgb(107,114,128)]",
|
||||
"shadow-md",
|
||||
"shadow-xl",
|
||||
"shadow-xl/30",
|
||||
"sm:flex",
|
||||
"sm:flex-row",
|
||||
"sm:mb-0",
|
||||
"text-2xl",
|
||||
"text-4xl",
|
||||
"text-6xl",
|
||||
"text-black",
|
||||
"text-blue-500",
|
||||
"text-blue-700",
|
||||
@@ -182,32 +199,54 @@
|
||||
"transition-transform",
|
||||
"translate-x-full",
|
||||
"underline",
|
||||
"w-100",
|
||||
"w-22",
|
||||
"w-6",
|
||||
"w-64",
|
||||
"w-[2px]",
|
||||
"w-[50%]",
|
||||
"w-[80%]",
|
||||
"w-fit",
|
||||
"w-full",
|
||||
"w-screen",
|
||||
"z-0",
|
||||
"z-3"
|
||||
"z-3",
|
||||
"z-50"
|
||||
],
|
||||
"ids": [
|
||||
"1.gif",
|
||||
"1.png",
|
||||
"2.png",
|
||||
"almacenamiento-de-contratos-de-alquiler",
|
||||
"apertura-de-la-coneccion",
|
||||
"arquitectura-técnica",
|
||||
"backend",
|
||||
"buenas",
|
||||
"capturas-de-pantalla-wip",
|
||||
"características",
|
||||
"características-principales",
|
||||
"cerrado-de-la-coneccion",
|
||||
"como-funciona-esto",
|
||||
"como-hago-nuevos-posts",
|
||||
"conclusiones",
|
||||
"contacto",
|
||||
"cosas-que-necesitamos",
|
||||
"creacion-del-sqlcommand",
|
||||
"el-inicio-de-la-catastrofe",
|
||||
"estructura-de-navegación-drilling",
|
||||
"frontend",
|
||||
"gestión-de-productos",
|
||||
"gimp",
|
||||
"grad",
|
||||
"imagemagick",
|
||||
"implementación",
|
||||
"instanciacion-del-sqlconnection",
|
||||
"lo-que-termine-haciendo",
|
||||
"modelo-de-datos",
|
||||
"motivacion",
|
||||
"nivel-1-cadena-hotelera",
|
||||
"nivel-2-locaciónhotel-específico",
|
||||
"nivel-3-estadísticas-detalladas",
|
||||
"non-query",
|
||||
"nota",
|
||||
"notas",
|
||||
@@ -215,6 +254,7 @@
|
||||
"opcion-atomica",
|
||||
"opcion-web",
|
||||
"paso-a-paso",
|
||||
"pedidos-a-proveedores",
|
||||
"permisos-para-los-clientes",
|
||||
"posibles-soluciones",
|
||||
"que-es",
|
||||
@@ -222,10 +262,14 @@
|
||||
"que-es-el-screen-tear",
|
||||
"que-es-esto",
|
||||
"que-tengo-pensado",
|
||||
"registro-de-ventas",
|
||||
"requisitos-del-sistema",
|
||||
"sintaxis",
|
||||
"solucion",
|
||||
"sub-query",
|
||||
"utilizacion-del-executereader"
|
||||
"tecnologías-utilizadas",
|
||||
"utilizacion-del-executereader",
|
||||
"verificación-de-remitos"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>{{ .Title }}</title>
|
||||
<link rel="stylesheet" href="{{ "css/main.css" | resources.Get | css.PostCSS | resources.Minify | resources.Fingerprint | relURL }}">
|
||||
<link rel="stylesheet" href="{{ "css/styles.css" | relURL }}">
|
||||
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
27
layouts/partials/carousel.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<div class="rounded-t-full bg-sky-600">.</div>
|
||||
<div class="flex justify-center gap-2 p-8 bg-sky-600">
|
||||
{{ range .pngFiles }}
|
||||
<button class="p-1 rounded bg-white transform hover:scale-120
|
||||
transition-all duration-100 ease-linear border-2 hover:z-2 active:z-0" onclick="openmodal({{.}})">
|
||||
<img src="{{ . }}" alt="Carousel Image" class="
|
||||
h-[20rem] rounded">
|
||||
</button>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="rounded-b-full bg-sky-600 shadow-xl/30 mb-4">.</div>
|
||||
|
||||
{{ range .pngFiles }}
|
||||
<dialog id="{{ . }}" class="fixed inset-0 flex items-center justify-center
|
||||
z-50 w-full h-full bg-black bg-opacity-50"
|
||||
style="background-color: rgba(0,0,0,0.2);" onclick="openmodal({{.}})" hidden>
|
||||
<img src="{{ . }}" alt="Carousel Image" class="
|
||||
mt-2 p-1 bg-white border-2
|
||||
h-[80%] rounded-md opacity-100">
|
||||
</dialog>
|
||||
{{ end }}
|
||||
<script>
|
||||
function openmodal(id){
|
||||
let dialog = document.getElementById(id);
|
||||
dialog.toggleAttribute("hidden");
|
||||
}
|
||||
</script>
|
||||
@@ -16,7 +16,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
|
||||
@@ -2,12 +2,11 @@
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{{ range first 3 (where .Site.RegularPages "Section" "proyectos") }}
|
||||
<div
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2
|
||||
bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2 bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
>
|
||||
{{ if .Params.image }}
|
||||
<img
|
||||
src="{{ .Params.image }}"
|
||||
src="{{path.Join .Path .Params.image}}"
|
||||
alt="{{ .Title }}"
|
||||
class="w-full h-48 object-cover"
|
||||
/>
|
||||
|
||||
13
layouts/partials/separador.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
{{if .text}}
|
||||
{{.text}}
|
||||
{{else}}
|
||||
o
|
||||
{{end}}
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
@@ -34,9 +34,9 @@
|
||||
</div>
|
||||
|
||||
<!-- Contenido del post -->
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Botón de volver -->
|
||||
<a
|
||||
|
||||
42
layouts/proyectos/single.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{{ define "main" }}
|
||||
{{ partial "nav.html" .}}
|
||||
|
||||
{{ $filePath := .File.Path }}
|
||||
{{ $dirPath := path.Dir $filePath }}
|
||||
{{ $projectRoot := "content" }}
|
||||
{{ $fullDirPath := path.Join $projectRoot $dirPath }}
|
||||
{{ $files := readDir $fullDirPath }}
|
||||
|
||||
{{$pngs := slice}}
|
||||
{{range $files}}
|
||||
{{if strings.Contains .Name "index.png"}} {{continue}} {{end}}
|
||||
{{if strings.Contains .Name "png" }} {{$pngs = $pngs | append .Name}} {{end}}
|
||||
{{if strings.Contains .Name "gif" }} {{$pngs = $pngs | append .Name}} {{end}}
|
||||
{{end}}
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MiFuente';
|
||||
src: url('/calamity.ttf') format('truetype');
|
||||
}
|
||||
header{
|
||||
font-family: 'MiFuente', sans-serif;
|
||||
}
|
||||
</style>
|
||||
<div class="mt-16 bg-sky-300">
|
||||
<header class="text-center text-6xl pt-5">{{.Title}}</header>
|
||||
|
||||
{{ partial "separador.html" }}
|
||||
|
||||
<div class="flex flex-col justify-center w-fit mx-auto mt-2">
|
||||
{{ partial "carousel.html" (dict "pngFiles" $pngs) }}
|
||||
</div>
|
||||
{{ partial "separador.html" }}
|
||||
<div class="flex justify-center mt-2">
|
||||
<article>{{ .Content }}</article>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-sky-300 rounded-b-full shadow-md">
|
||||
<p>.</p>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
BIN
public/ManufacturingConsent-Regular.ttf
Normal file
BIN
public/Manufacturing_Consent.zip
Normal file
BIN
public/Manufacturing_Consent/ManufacturingConsent-Regular.ttf
Normal file
93
public/Manufacturing_Consent/OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2019 The Manufacturing Consent Project Authors (https://github.com/googlefonts/manufacturing-consent-font)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
public/calamity.ttf
Normal file
@@ -1,51 +1,130 @@
|
||||
/* Contenedor del artículo */
|
||||
article {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
line-height: 1lh;
|
||||
|
||||
background-color: whitesmoke;
|
||||
|
||||
img{
|
||||
margin-top: 1lh;
|
||||
}
|
||||
|
||||
h1{
|
||||
font-size: 2rem;
|
||||
margin-top:1lh;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1::before{
|
||||
content:"# ";
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 1.7rem;
|
||||
margin-top:1lh;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h2::before{
|
||||
content:"## ";
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
ol, pre {
|
||||
margin-top:0.8rem;
|
||||
}
|
||||
|
||||
p{
|
||||
line-height:1lh;
|
||||
margin-top:0.5lh;
|
||||
}
|
||||
|
||||
img{
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: 0%;
|
||||
box-shadow: 12px 12px 10px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
max-width: 800px;
|
||||
padding: 1.5rem;
|
||||
background: #fff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
font-family: "Inter", sans-serif;
|
||||
color: #333;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
/* Títulos */
|
||||
article h1 {
|
||||
font-size: 2.5rem;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 1.5rem;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
article h2 {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 600;
|
||||
margin: 2rem 0 1rem;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
article h3 {
|
||||
font-size: 1.4rem;
|
||||
font-weight: 500;
|
||||
margin: 1.5rem 0 1rem;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
/* Párrafos */
|
||||
article p {
|
||||
margin: 1rem 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Imágenes */
|
||||
article img {
|
||||
width: 100%;
|
||||
max-height: 400px;
|
||||
object-fit: cover;
|
||||
border-radius: 8px;
|
||||
margin: 1.5rem 0;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Listas */
|
||||
article ul {
|
||||
list-style: disc inside;
|
||||
margin: 1rem 0;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
article ol {
|
||||
list-style: decimal inside;
|
||||
margin: 1rem 0;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
/* Citas */
|
||||
article blockquote {
|
||||
font-style: italic;
|
||||
border-left: 4px solid #4b9ce2;
|
||||
background: #f4faff;
|
||||
padding: 0.75rem 1rem;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* Líneas divisorias */
|
||||
article hr {
|
||||
border: none;
|
||||
border-top: 2px solid #ddd;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
/* Enlaces */
|
||||
article a {
|
||||
color: #4b9ce2;
|
||||
text-decoration: underline;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
article a:hover {
|
||||
color: #2563eb;
|
||||
}
|
||||
|
||||
/* Código en línea */
|
||||
article code {
|
||||
background: #f3f4f6;
|
||||
padding: 0.2rem 0.4rem;
|
||||
border-radius: 4px;
|
||||
font-family: monospace;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
/* Bloques de código */
|
||||
article pre {
|
||||
background: #f3f4f6;
|
||||
padding: 1rem;
|
||||
border-radius: 8px;
|
||||
overflow-x: auto;
|
||||
font-family: monospace;
|
||||
font-size: 1rem;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* Secciones dentro del artículo */
|
||||
article section {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 600px) {
|
||||
article h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
article h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
article h3 {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.147.7">
|
||||
<meta name="generator" content="Hugo 0.147.9">
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Blog Fede</title>
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -31,7 +30,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -187,8 +186,7 @@
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
|
||||
<div
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2
|
||||
bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2 bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
>
|
||||
|
||||
<div
|
||||
@@ -217,8 +215,7 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2
|
||||
bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2 bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
>
|
||||
|
||||
<div
|
||||
@@ -247,15 +244,14 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2
|
||||
bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
class="hover:scale-120 hover:z-2 transform-3d hover:rotate-z-2 duration-100 hover:-translate-y-2 bg-white rounded-lg shadow-md overflow-hidden border-3 hover:shadow-xl ease-in"
|
||||
>
|
||||
|
||||
<div
|
||||
class="w-full h-48 bg-gray-200 flex items-center justify-center"
|
||||
>
|
||||
<span class="text-gray-500">No image</span>
|
||||
</div>
|
||||
<img
|
||||
src="/proyectos/coordkeeper/index.png"
|
||||
alt="CoordKeeper"
|
||||
class="w-full h-48 object-cover"
|
||||
/>
|
||||
|
||||
|
||||
<div class="p-4">
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,7 +149,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="que-es-advent-of-code">¿Que es Advent of Code?</h1>
|
||||
<p>Son un grupo de puzzles de programacion presentados en forma de calendario que suelen ser utizados como:</p>
|
||||
<ul>
|
||||
@@ -162,7 +161,7 @@
|
||||
<h1 id="que-tengo-pensado">Que tengo pensado</h1>
|
||||
<p>Cerca de fin de año voy a hacer todos los dias de esa edicion de advent of code usando <code>zig</code> como un ejercicio para aprender ese lenguaje de programacion <code>(aunque de forma básica)</code>.</p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,7 +149,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="el-inicio-de-la-catastrofe">El inicio de la catastrofe</h1>
|
||||
<p>En pocas palabras, <strong>Nunca Corten Un <code>pacman -Syu</code></strong>.<br>
|
||||
Si utilizan <strong>arch</strong> sabrán que se pueden configurar ‘hooks’ antes y despues de las operaciones con el comando <code>pacman</code>, uno de estos era responsable de actualizar la entrada en el bootloader (uso systemd-boot btw). Al haber cortado sin querer este proceso me quedé sin entrada en el bootloader para linux y solo podia volver al menu de la <strong>UEFI</strong>.</p>
|
||||
@@ -160,7 +159,7 @@ Si utilizan <strong>arch</strong> sabrán que se pueden configurar ‘hooks&
|
||||
<h2 id="lo-que-termine-haciendo">Lo que termine haciendo</h2>
|
||||
<p>Gracias a que tenia una lectora de dvds con un dvd de Linux, pude utilizar <code>mount</code> y <code>chroot</code> para acceder a la particion con todos mis datos, una vez en este punto reinstalé el kernel (<code>pacman -S linux</code>) para que se activen los hooks que corresponden a actualizar la información sobre las opciones de arranque del bootloader.</p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -152,14 +151,14 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="motivacion">Motivacion</h1>
|
||||
<p>He notado que en versiones actuales de minecraft han puesto mucha informacion en el menu de debug (el <!-- raw HTML omitted -->f3<!-- raw HTML omitted -->) lo que lo hace cada vez más hostil al jugador promedio intentar encontrar la linea con las coordenadas de donde esta y poderse comunicar con la gente en el mismo servidor, es obvio que esto es totalmente intencionado. Entiendo que el objetivo es que uses las herramientas dadas por los diseñadores del videojuego para poder localizarte. Pero yo necesito una forma de poder guardar las coordenadas localmente en mi computadora. aunque podria haber usado un block de notas para almacenarlas me decidí por hacer algo más inproductivo…. hacer una app de react.</p>
|
||||
<p>Así que presento Coord-Keeper una app nefasta de React para guardar, compartir y importar Coordenas de minecraft. !!!11!!!</p>
|
||||
<p>Esta disponible en <a href="/coords">Coord-keeper</a></p>
|
||||
<p>su <a href="/git/fede/coord-keeper">codigo fuente</a> esta en mi instancia de gitea.</p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,7 +149,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="instanciacion-del-sqlconnection">Instanciacion del SqlConnection</h1>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> connection = <span style="color:#66d9ef">new</span> SqlConnection(configuration.GetConnectionString(<span style="color:#e6db74">"DefaultConnection"</span>)))
|
||||
</span></span></code></pre></div><p>Eso genera un sql connection que va a existir hasta que salga del scope del programa.</p>
|
||||
@@ -218,7 +217,7 @@
|
||||
<blockquote>
|
||||
<p>" Si compila y anda, aprueba " ~Laureano</p></blockquote>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -152,7 +151,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="que-es-el-screen-tear">¿Que es el screen tear?</h1>
|
||||
<p>buenas, Si alguna vez instalaron un wm liviano en linux que no use wayland seguramente habrán notado que al momento de mover una ventana en el escritorio o ver un video sucede algo de este estilo.</p>
|
||||
<p><img src="https://qph.cf2.quoracdn.net/main-qimg-4994dca8fc9979e8a10d3422cb5f7bcb" alt="Imagen sacada de google donde se demuestra el screen tear"></p>
|
||||
@@ -197,7 +196,7 @@ EndSection
|
||||
</code></pre><p>Demostracion de como queda</p>
|
||||
<p><img src="./tear.gif" alt="demo tear resuelto"></p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,7 +149,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="gimp">Gimp</h1>
|
||||
<p>Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar <strong>Gimp</strong> con la opcion de <code>Color > Desaturacion > Color a gama de grises</code>. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.<br>
|
||||
<img src="/fedecomp.png" alt="Comparación"></p>
|
||||
@@ -166,7 +165,7 @@
|
||||
<p>Existe <a href="https://pinetools.com/es/imagen-escala-grises">esta</a> pagina en la cual para generar la imagen en gama de grises solo hay que poner la imagen y darle a <strong>Aplicar</strong>.<br>
|
||||
<img src="/gamaDeGrises.jpg" alt="Gama de grises demo"></p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,12 +149,12 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<p>Hace ya un par de dias que estoy usando un <a href="https://retroachievements.org/user/fedpo2">servicio</a> que implementa una api para trackear tu progreso en distintos juegos retro y no tan retro.</p>
|
||||
<p>Uno de los que estoy jugando es <code>Kirby's dream land 2</code><br>
|
||||
<img src="https://media.retroachievements.org/Images/046585.png" alt="kirby"></p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,7 +149,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="buenas">buenas</h1>
|
||||
<p>buenas
|
||||
Luego de sufrir bastante con el nginx y su <em>Reverse Proxy</em>, finalmente me decidí por poner la pagina del blog en el <strong>WebRoot</strong> y el <em>gitea</em> en un subfolder.</p>
|
||||
@@ -163,7 +162,7 @@ Luego de sufrir bastante con el nginx y su <em>Reverse Proxy</em>, finalmente me
|
||||
<blockquote>
|
||||
<p>Luraschi no me robes las llaves del ssh🙏.</p></blockquote>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -152,7 +151,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="que-es-esto">¿Que es esto?</h1>
|
||||
<p>Estas son pequeñas updates que voy a estar haciendo sobre el proyecto final mio de “Ingenieria de Software” (asi se llama la materia). El cual consiste de un sistema de gestion de alquileres. Pensado para tener varios tipos de usuario como un propietario que carge las propiedades que desea publicar siempre y cuando este verificado que le pertenecen a él y un inquilino el cual podra efectuar busquedas de propiedades para alquilas, ver el estado de los alquileres, y pagar los alquileres que sean correpondientes.</p>
|
||||
<p>Ahí arriba describi solo 2 o 3 de los casi 26 casos de uso que tengo descriptos. Además voy a reutilizar los conocimiento que adquirí haciendo el panel de control para la materia de base de datos.</p>
|
||||
@@ -175,7 +174,7 @@
|
||||
<p>Almacenarlos con un fileserver simple como <a href="https://github.com/svenstaro/miniserve">Miniserve</a> que es una excelente herramienta si bien para casos donde tenes un solo servidor pareceria masomenos pasable al final termina no siendo tan buena idea si llegas a necesitar algo minimanente distribuido o que maneje permisos.</p>
|
||||
<p>Así fue como luego de preguntarle a un amigo y a chatgpt. me decidí por darle una oportunidad a <a href="https://min.io/">Minio</a> que es una alternativa “S3 pero hosteado en casa”. tengo mucho que aprender aún sobre s3 porque tengo solo una idea general de como funciona. Así que voy a dejar una update de esto en unos dias o semanas (no hay chances que sea consistente publicando acá) sobre como va esto. bye.</p>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
@@ -30,7 +29,7 @@
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
@@ -150,7 +149,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="prose prose-lg max-w-none mb-12">
|
||||
<article>
|
||||
<h1 id="que-es">¿Que es?</h1>
|
||||
<p>Es un proceso de evaluado, en el cual se reemplazan placeholders en <code>string</code> por valores, en nuestro caso, de variables en momento de ejecución.</p>
|
||||
<h1 id="sintaxis">Sintaxis</h1>
|
||||
@@ -163,7 +162,7 @@ Console.WriteLine($"Vendí {manzanas + bananas} frutas");
|
||||
<blockquote>
|
||||
<p>Basicamente son plantillas.</p></blockquote>
|
||||
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
||||
<a
|
||||
|
||||
256
public/proyectos/controlstock/index.html
Normal file
@@ -0,0 +1,256 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Gestor de Stock</title>
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
|
||||
<nav class="bg-gray-800 fixed w-full top-0 z-3">
|
||||
<div class="mx-auto px-4">
|
||||
<div class="flex items-center justify-between h-16">
|
||||
<div class="flex items-center">
|
||||
<a href="/" class="text-white font-bold text-xl"
|
||||
>Fede Landing Site</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="hidden md:flex">
|
||||
<a
|
||||
href="/git"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Git</a
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
<a
|
||||
href="https://github.com/fedpo2"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
href="mailto:federico.nicolas.polidoro@gmail.com"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Email</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>LinkedIn</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="md:hidden cursor-context-menu">
|
||||
<button
|
||||
onclick="toggleOffCanvas()"
|
||||
class="border px-2 py-1 rounded text-white"
|
||||
>
|
||||
<svg
|
||||
class="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M0 6h25M0 12h25M0 18h25"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="offCanvas"
|
||||
class="fixed top-16 right-0 w-64 h-screen bg-gray-800 transform translate-x-full transition-transform duration-200 ease-in-out"
|
||||
>
|
||||
<div class="flex flex-col p-4">
|
||||
<a
|
||||
href="/git"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Git</a
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
<a
|
||||
href="https://github.com/fedpo2"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
href="mailto:federico.nicolas.polidoro@gmail.com"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Email</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>LinkedIn</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<script>
|
||||
function toggleOffCanvas() {
|
||||
const offCanvas = document.getElementById("offCanvas");
|
||||
offCanvas.classList.toggle("translate-x-full");
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MiFuente';
|
||||
src: url('/calamity.ttf') format('truetype');
|
||||
}
|
||||
header{
|
||||
font-family: 'MiFuente', sans-serif;
|
||||
}
|
||||
</style>
|
||||
<div class="mt-16 bg-sky-300">
|
||||
<header class="text-center text-6xl pt-5">Gestor de Stock</header>
|
||||
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
|
||||
o
|
||||
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex flex-col justify-center w-fit mx-auto mt-2">
|
||||
<div class="rounded-t-full bg-sky-600">.</div>
|
||||
<div class="flex justify-center gap-2 p-8 bg-sky-600">
|
||||
|
||||
</div>
|
||||
<div class="rounded-b-full bg-sky-600 shadow-xl/30 mb-4">.</div>
|
||||
|
||||
|
||||
<script>
|
||||
function openmodal(id){
|
||||
let dialog = document.getElementById(id);
|
||||
dialog.toggleAttribute("hidden");
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
|
||||
o
|
||||
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-2">
|
||||
<article><p>Este sistema de gestión de inventario está desarrollado en C# utilizando Windows Forms. La aplicación permite administrar eficientemente el stock de productos, registrar ventas, gestionar pedidos a proveedores y verificar remitos de entrega.</p>
|
||||
<h2 id="características-principales">Características Principales</h2>
|
||||
<h3 id="gestión-de-productos">Gestión de Productos</h3>
|
||||
<ul>
|
||||
<li>Alta, baja y modificación de productos</li>
|
||||
<li>Categorización de inventario</li>
|
||||
<li>Control de stock mínimo y máximo</li>
|
||||
<li>Alertas de stock bajo</li>
|
||||
</ul>
|
||||
<h3 id="registro-de-ventas">Registro de Ventas</h3>
|
||||
<ul>
|
||||
<li>Generación de facturas</li>
|
||||
<li>Historial de ventas</li>
|
||||
<li>Seguimiento de productos vendidos</li>
|
||||
<li>Estadísticas de ventas</li>
|
||||
</ul>
|
||||
<h3 id="pedidos-a-proveedores">Pedidos a Proveedores</h3>
|
||||
<ul>
|
||||
<li>Creación automática de órdenes de compra</li>
|
||||
<li>Seguimiento de pedidos pendientes</li>
|
||||
<li>Historial de pedidos</li>
|
||||
</ul>
|
||||
<h3 id="verificación-de-remitos">Verificación de Remitos</h3>
|
||||
<ul>
|
||||
<li>Control de recepción de mercadería</li>
|
||||
<li>Validación de cantidades y productos</li>
|
||||
<li>Registro de discrepancias</li>
|
||||
<li>Alertas de productos faltantes</li>
|
||||
<li>Conformidad de recepción</li>
|
||||
</ul>
|
||||
<h2 id="tecnologías-utilizadas">Tecnologías Utilizadas</h2>
|
||||
<ul>
|
||||
<li>C# (.NET Framework)</li>
|
||||
<li>Windows Forms</li>
|
||||
<li>SQL Server (Base de datos)</li>
|
||||
<li>Entity Framework</li>
|
||||
</ul>
|
||||
<h2 id="capturas-de-pantalla-wip">Capturas de Pantalla (WIP)</h2>
|
||||
<p><em>(Aquí se insertarían capturas de las principales pantallas del sistema)</em></p>
|
||||
<h2 id="requisitos-del-sistema">Requisitos del Sistema</h2>
|
||||
<ul>
|
||||
<li>Windows 7 o superior</li>
|
||||
<li>.NET core 6</li>
|
||||
<li>4 GB de RAM (recomendado) //podrias con menos pero no se si windows puede bootear en menos de 4gb</li>
|
||||
</ul>
|
||||
<h2 id="contacto">Contacto</h2>
|
||||
<p>Para más información sobre este sistema de gestión de stock, contácteme a través de:</p>
|
||||
<ul>
|
||||
<li>Email: <a href="mailto:federico.nicolas.polidoro@gmail.com">federico.nicolas.polidoro@gmail.com</a></li>
|
||||
<li>GitHub: github.com/fedpo2</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-sky-300 rounded-b-full shadow-md">
|
||||
<p>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
<br>
|
||||
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
|
||||
© 2025 Federico Polidoro
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
BIN
public/proyectos/coordkeeper/1.gif
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
public/proyectos/coordkeeper/1.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
public/proyectos/coordkeeper/2.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 148 KiB |
270
public/proyectos/coordkeeper/index.html
Normal file
@@ -0,0 +1,270 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>CoordKeeper</title>
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
|
||||
<nav class="bg-gray-800 fixed w-full top-0 z-3">
|
||||
<div class="mx-auto px-4">
|
||||
<div class="flex items-center justify-between h-16">
|
||||
<div class="flex items-center">
|
||||
<a href="/" class="text-white font-bold text-xl"
|
||||
>Fede Landing Site</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="hidden md:flex">
|
||||
<a
|
||||
href="/git"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Git</a
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
<a
|
||||
href="https://github.com/fedpo2"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
href="mailto:federico.nicolas.polidoro@gmail.com"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Email</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>LinkedIn</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="md:hidden cursor-context-menu">
|
||||
<button
|
||||
onclick="toggleOffCanvas()"
|
||||
class="border px-2 py-1 rounded text-white"
|
||||
>
|
||||
<svg
|
||||
class="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M0 6h25M0 12h25M0 18h25"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="offCanvas"
|
||||
class="fixed top-16 right-0 w-64 h-screen bg-gray-800 transform translate-x-full transition-transform duration-200 ease-in-out"
|
||||
>
|
||||
<div class="flex flex-col p-4">
|
||||
<a
|
||||
href="/git"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Git</a
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
<a
|
||||
href="https://github.com/fedpo2"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
href="mailto:federico.nicolas.polidoro@gmail.com"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Email</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>LinkedIn</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<script>
|
||||
function toggleOffCanvas() {
|
||||
const offCanvas = document.getElementById("offCanvas");
|
||||
offCanvas.classList.toggle("translate-x-full");
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MiFuente';
|
||||
src: url('/calamity.ttf') format('truetype');
|
||||
}
|
||||
header{
|
||||
font-family: 'MiFuente', sans-serif;
|
||||
}
|
||||
</style>
|
||||
<div class="mt-16 bg-sky-300">
|
||||
<header class="text-center text-6xl pt-5">CoordKeeper</header>
|
||||
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
|
||||
o
|
||||
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex flex-col justify-center w-fit mx-auto mt-2">
|
||||
<div class="rounded-t-full bg-sky-600">.</div>
|
||||
<div class="flex justify-center gap-2 p-8 bg-sky-600">
|
||||
|
||||
<button class="p-1 rounded bg-white transform hover:scale-120
|
||||
transition-all duration-100 ease-linear border-2 hover:z-2 active:z-0" onclick="openmodal("1.gif")">
|
||||
<img src="1.gif" alt="Carousel Image" class="
|
||||
h-[20rem] rounded">
|
||||
</button>
|
||||
|
||||
<button class="p-1 rounded bg-white transform hover:scale-120
|
||||
transition-all duration-100 ease-linear border-2 hover:z-2 active:z-0" onclick="openmodal("1.png")">
|
||||
<img src="1.png" alt="Carousel Image" class="
|
||||
h-[20rem] rounded">
|
||||
</button>
|
||||
|
||||
<button class="p-1 rounded bg-white transform hover:scale-120
|
||||
transition-all duration-100 ease-linear border-2 hover:z-2 active:z-0" onclick="openmodal("2.png")">
|
||||
<img src="2.png" alt="Carousel Image" class="
|
||||
h-[20rem] rounded">
|
||||
</button>
|
||||
|
||||
</div>
|
||||
<div class="rounded-b-full bg-sky-600 shadow-xl/30 mb-4">.</div>
|
||||
|
||||
|
||||
<dialog id="1.gif" class="fixed inset-0 flex items-center justify-center
|
||||
z-50 w-full h-full bg-black bg-opacity-50"
|
||||
style="background-color: rgba(0,0,0,0.2);" onclick="openmodal("1.gif")" hidden>
|
||||
<img src="1.gif" alt="Carousel Image" class="
|
||||
mt-2 p-1 bg-white border-2
|
||||
h-[80%] rounded-md opacity-100">
|
||||
</dialog>
|
||||
|
||||
<dialog id="1.png" class="fixed inset-0 flex items-center justify-center
|
||||
z-50 w-full h-full bg-black bg-opacity-50"
|
||||
style="background-color: rgba(0,0,0,0.2);" onclick="openmodal("1.png")" hidden>
|
||||
<img src="1.png" alt="Carousel Image" class="
|
||||
mt-2 p-1 bg-white border-2
|
||||
h-[80%] rounded-md opacity-100">
|
||||
</dialog>
|
||||
|
||||
<dialog id="2.png" class="fixed inset-0 flex items-center justify-center
|
||||
z-50 w-full h-full bg-black bg-opacity-50"
|
||||
style="background-color: rgba(0,0,0,0.2);" onclick="openmodal("2.png")" hidden>
|
||||
<img src="2.png" alt="Carousel Image" class="
|
||||
mt-2 p-1 bg-white border-2
|
||||
h-[80%] rounded-md opacity-100">
|
||||
</dialog>
|
||||
|
||||
<script>
|
||||
function openmodal(id){
|
||||
let dialog = document.getElementById(id);
|
||||
dialog.toggleAttribute("hidden");
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
|
||||
o
|
||||
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-2">
|
||||
<article><p>es una aplicación web desarrollada con React diseñada específicamente para jugadores de Minecraft. Esta herramienta permite a los usuarios almacenar, organizar y gestionar fácilmente las coordenadas de ubicaciones importantes dentro del juego.</p>
|
||||
<h2 id="características">Características</h2>
|
||||
<ul>
|
||||
<li>Almacenamiento de coordenadas X, Y, Z de lugares importantes</li>
|
||||
<li>Organización por Dimensiones</li>
|
||||
<li>Interfaz intuitiva y fácil de usar</li>
|
||||
<li>Acceso rápido a tus coordenadas guardadas</li>
|
||||
</ul>
|
||||
<p>Ya no tendrás que depender de notas dispersas o capturas de pantalla para recordar dónde encontraste ese templo submarino o aquella cueva de diamantes. CoordKeeper mantiene toda esta información organizada en un solo lugar.</p>
|
||||
<p>Visita el <a href="https://git.sr.ht/~fedpo/Coord-Keeper-Minecraft">repositorio</a> para más información o para contribuir al proyecto.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-sky-300 rounded-b-full shadow-md">
|
||||
<p>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
<br>
|
||||
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
|
||||
© 2025 Federico Polidoro
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
BIN
public/proyectos/coordkeeper/index.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
266
public/proyectos/paneldb/index.html
Normal file
@@ -0,0 +1,266 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Panel Web</title>
|
||||
<link rel="stylesheet" href="/css/main.css">
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
|
||||
<nav class="bg-gray-800 fixed w-full top-0 z-3">
|
||||
<div class="mx-auto px-4">
|
||||
<div class="flex items-center justify-between h-16">
|
||||
<div class="flex items-center">
|
||||
<a href="/" class="text-white font-bold text-xl"
|
||||
>Fede Landing Site</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="hidden md:flex">
|
||||
<a
|
||||
href="/git"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Git</a
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
href="https://fedesrv.ddns.net/git/fede/CV/media/branch/master/AltaCV_Template.pdf"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
<a
|
||||
href="https://github.com/fedpo2"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
href="mailto:federico.nicolas.polidoro@gmail.com"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Email</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>LinkedIn</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="md:hidden cursor-context-menu">
|
||||
<button
|
||||
onclick="toggleOffCanvas()"
|
||||
class="border px-2 py-1 rounded text-white"
|
||||
>
|
||||
<svg
|
||||
class="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M0 6h25M0 12h25M0 18h25"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="offCanvas"
|
||||
class="fixed top-16 right-0 w-64 h-screen bg-gray-800 transform translate-x-full transition-transform duration-200 ease-in-out"
|
||||
>
|
||||
<div class="flex flex-col p-4">
|
||||
<a
|
||||
href="/git"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Git</a
|
||||
>
|
||||
<a
|
||||
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
||||
title="Under Construction 🚧👷♂️🏗️"
|
||||
target="_blank"
|
||||
>CV</a
|
||||
>
|
||||
<a
|
||||
href="https://github.com/fedpo2"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
href="mailto:federico.nicolas.polidoro@gmail.com"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>Email</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
||||
target="_blank"
|
||||
class="text-gray-300 hover:text-white px-3 py-2"
|
||||
>LinkedIn</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<script>
|
||||
function toggleOffCanvas() {
|
||||
const offCanvas = document.getElementById("offCanvas");
|
||||
offCanvas.classList.toggle("translate-x-full");
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MiFuente';
|
||||
src: url('/calamity.ttf') format('truetype');
|
||||
}
|
||||
header{
|
||||
font-family: 'MiFuente', sans-serif;
|
||||
}
|
||||
</style>
|
||||
<div class="mt-16 bg-sky-300">
|
||||
<header class="text-center text-6xl pt-5">Panel Web</header>
|
||||
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
|
||||
o
|
||||
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex flex-col justify-center w-fit mx-auto mt-2">
|
||||
<div class="rounded-t-full bg-sky-600">.</div>
|
||||
<div class="flex justify-center gap-2 p-8 bg-sky-600">
|
||||
|
||||
</div>
|
||||
<div class="rounded-b-full bg-sky-600 shadow-xl/30 mb-4">.</div>
|
||||
|
||||
|
||||
<script>
|
||||
function openmodal(id){
|
||||
let dialog = document.getElementById(id);
|
||||
dialog.toggleAttribute("hidden");
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
<div class="flex justify-center">
|
||||
<div class="flex w-100 ">
|
||||
<hr class="w-[50%] mt-6">
|
||||
<p class="text-4xl">
|
||||
|
||||
o
|
||||
|
||||
</p>
|
||||
<hr class="w-[50%] mt-6">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-2">
|
||||
<article><p>Este panel web es una herramienta de visualización y análisis de datos para una cadena hotelera, desarrollado como trabajo final para el curso de Base de Datos Aplicada. El sistema permite explorar métricas clave de rendimiento a través de una estructura jerárquica de tres niveles.</p>
|
||||
<h2 id="arquitectura-técnica">Arquitectura Técnica</h2>
|
||||
<h3 id="backend">Backend</h3>
|
||||
<ul>
|
||||
<li>ASP.NET Core 7</li>
|
||||
<li>Entity Framework Core para acceso a datos</li>
|
||||
<li>API RESTful para comunicación con el frontend</li>
|
||||
<li>Autenticación JWT para seguridad</li>
|
||||
</ul>
|
||||
<h3 id="frontend">Frontend</h3>
|
||||
<ul>
|
||||
<li>React (18.x)</li>
|
||||
<li>Material UI para componentes de interfaz</li>
|
||||
<li>ChartJS para visualización de datos</li>
|
||||
<li>React Router para navegación entre secciones</li>
|
||||
</ul>
|
||||
<h2 id="estructura-de-navegación-drilling">Estructura de Navegación (Drilling)</h2>
|
||||
<p>El panel implementa un sistema de navegación jerárquica de tres niveles:</p>
|
||||
<h3 id="nivel-1-cadena-hotelera">Nivel 1: Cadena Hotelera</h3>
|
||||
<ul>
|
||||
<li>Nombre de la cadena hotelera</li>
|
||||
</ul>
|
||||
<h3 id="nivel-2-locaciónhotel-específico">Nivel 2: Locación/Hotel Específico</h3>
|
||||
<ul>
|
||||
<li>Datos detallados de cada propiedad</li>
|
||||
</ul>
|
||||
<h3 id="nivel-3-estadísticas-detalladas">Nivel 3: Estadísticas Detalladas</h3>
|
||||
<ul>
|
||||
<li>Análisis profundo de datos operativos</li>
|
||||
<li>Reportes especializados</li>
|
||||
</ul>
|
||||
<h2 id="características-principales">Características Principales</h2>
|
||||
<ul>
|
||||
<li><strong>Dashboards Interactivos</strong>: Gráficos dinámicos con ChartJS para visualización intuitiva de datos.</li>
|
||||
<li><strong>Filtros Avanzados</strong>: Capacidad de filtrar datos por fecha, categoría de habitación, y segmento de cliente.</li>
|
||||
<li><strong>Alertas Personalizables</strong>: Notificaciones cuando métricas clave superan umbrales definidos.</li>
|
||||
<li><strong>Responsive Design</strong>: Adaptable a dispositivos móviles y tablets para monitoreo en movimiento.</li>
|
||||
</ul>
|
||||
<h2 id="modelo-de-datos">Modelo de Datos</h2>
|
||||
<p>El sistema se basa en un esquema relacional que incluye las siguientes entidades principales:</p>
|
||||
<ul>
|
||||
<li>Cadenas Hoteleras</li>
|
||||
<li>Hoteles/Propiedades</li>
|
||||
<li>Habitaciones</li>
|
||||
<li>Reservas</li>
|
||||
<li>Clientes</li>
|
||||
<li>Servicios</li>
|
||||
<li>Facturación</li>
|
||||
</ul>
|
||||
<h2 id="capturas-de-pantalla-wip">Capturas de Pantalla (WIP)</h2>
|
||||
<p><em>[Aquí se incluirían capturas de pantalla del panel mostrando los tres niveles de navegación y diferentes visualizaciones]</em></p>
|
||||
<h2 id="implementación">Implementación</h2>
|
||||
<p>El proyecto ha sido desarrollado siguiendo una metodología ágil, con énfasis en:</p>
|
||||
<ul>
|
||||
<li>Normalización de la base de datos</li>
|
||||
<li>Optimización de consultas para grandes volúmenes de datos</li>
|
||||
<li>Implementación de procedimientos almacenados para operaciones complejas</li>
|
||||
<li>Medidas de seguridad para protección de datos sensibles</li>
|
||||
</ul>
|
||||
<h2 id="conclusiones">Conclusiones</h2>
|
||||
<p>Este panel web demuestra la aplicación práctica de conceptos avanzados de bases de datos relacionales en un entorno empresarial del sector hotelero, proporcionando una herramienta valiosa para la toma de decisiones basada en datos.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-sky-300 rounded-b-full shadow-md">
|
||||
<p>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
<br>
|
||||
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
|
||||
© 2025 Federico Polidoro
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +1 @@
|
||||
{"Target":"/css/main.min.c67feb5b0ffe441a09f6855db3c483315a9033f837475b2fecdcd272c1306b4f.css","MediaType":"text/css","Data":{"Integrity":"sha256-xn/rWw/+RBoJ9oVds8SDMVqQM/g3R1sv7NzScsEwa08="}}
|
||||
{"Target":"/css/main.min.fc26f300cd341b81e5fb5fc80ed743e4a855fd78bd6073ba3fda6ee2b7afbfba.css","MediaType":"text/css","Data":{"Integrity":"sha256-/CbzAM00G4Hl+1/IDtdD5KhV/Xi9YHO6P9pu4revv7o="}}
|
||||
BIN
static/ManufacturingConsent-Regular.ttf
Normal file
BIN
static/calamity.ttf
Normal file
@@ -1,51 +1,130 @@
|
||||
/* Contenedor del artículo */
|
||||
article {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
line-height: 1lh;
|
||||
|
||||
background-color: whitesmoke;
|
||||
|
||||
img{
|
||||
margin-top: 1lh;
|
||||
}
|
||||
|
||||
h1{
|
||||
font-size: 2rem;
|
||||
margin-top:1lh;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1::before{
|
||||
content:"# ";
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 1.7rem;
|
||||
margin-top:1lh;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h2::before{
|
||||
content:"## ";
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
ol, pre {
|
||||
margin-top:0.8rem;
|
||||
}
|
||||
|
||||
p{
|
||||
line-height:1lh;
|
||||
margin-top:0.5lh;
|
||||
}
|
||||
|
||||
img{
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: 0%;
|
||||
box-shadow: 12px 12px 10px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
max-width: 800px;
|
||||
padding: 1.5rem;
|
||||
background: #fff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
font-family: "Inter", sans-serif;
|
||||
color: #333;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
/* Títulos */
|
||||
article h1 {
|
||||
font-size: 2.5rem;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 1.5rem;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
article h2 {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 600;
|
||||
margin: 2rem 0 1rem;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
article h3 {
|
||||
font-size: 1.4rem;
|
||||
font-weight: 500;
|
||||
margin: 1.5rem 0 1rem;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
/* Párrafos */
|
||||
article p {
|
||||
margin: 1rem 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Imágenes */
|
||||
article img {
|
||||
width: 100%;
|
||||
max-height: 400px;
|
||||
object-fit: cover;
|
||||
border-radius: 8px;
|
||||
margin: 1.5rem 0;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Listas */
|
||||
article ul {
|
||||
list-style: disc inside;
|
||||
margin: 1rem 0;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
article ol {
|
||||
list-style: decimal inside;
|
||||
margin: 1rem 0;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
/* Citas */
|
||||
article blockquote {
|
||||
font-style: italic;
|
||||
border-left: 4px solid #4b9ce2;
|
||||
background: #f4faff;
|
||||
padding: 0.75rem 1rem;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* Líneas divisorias */
|
||||
article hr {
|
||||
border: none;
|
||||
border-top: 2px solid #ddd;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
/* Enlaces */
|
||||
article a {
|
||||
color: #4b9ce2;
|
||||
text-decoration: underline;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
article a:hover {
|
||||
color: #2563eb;
|
||||
}
|
||||
|
||||
/* Código en línea */
|
||||
article code {
|
||||
background: #f3f4f6;
|
||||
padding: 0.2rem 0.4rem;
|
||||
border-radius: 4px;
|
||||
font-family: monospace;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
/* Bloques de código */
|
||||
article pre {
|
||||
background: #f3f4f6;
|
||||
padding: 1rem;
|
||||
border-radius: 8px;
|
||||
overflow-x: auto;
|
||||
font-family: monospace;
|
||||
font-size: 1rem;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
/* Secciones dentro del artículo */
|
||||
article section {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 600px) {
|
||||
article h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
article h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
article h3 {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||